当前位置: 首页>編程日記>正文

ffmpeg给视频添加文字

ffmpeg给视频添加文字

使用drawtext
官方文档:FFmpeg Filters Documentation

开发环境mac,首先安装ffmpeg(时间可能会较长。。):

brew install ffmpeg

添加文字:

ffmpeg -i original.mp4 -vf drawtext=fontcolor=black:fontsize=50:text='Hello World':x=0:y=100 -y out.mp4. 

上面简单命令的相关参数:

  1. 输入文件 original.mp4
  2. fontcolor 文字颜色 为黑色black
  3. fontsize 文字大小 为50
  4. text 文本内容 “Hello Word”
  5. 文本所处的位置 x=0,y=50
  6. 输出文件 out.mp4

看一下输入文件:
在这里插入图片描述
输出结果:
在这里插入图片描述
对于文本的坐标位置(x,y)–>(0, 100)位置如下:
在这里插入图片描述

高阶使用

参考:https://ffmpeg.org/ffmpeg-utils.html

相关命令参数:

between(x, min, max)
Return 1 if x is greater than or equal to min and lesser than or equal to max, 0 otherwise.
...
gt(x, y)
Return 1 if x is greater than y, 0 otherwise.gte(x, y)
Return 1 if x is greater than or equal to y, 0 otherwise....
if(x, y)
Evaluate x, and if the result is non-zero return the result of the evaluation of y, return 0 otherwise.if(x, y, z)
Evaluate x, and if the result is non-zero return the evaluation result of y, otherwise the evaluation result of z.
...
lt(x, y)
Return 1 if x is lesser than y, 0 otherwise.lte(x, y)
Return 1 if x is lesser than or equal to y, 0 otherwise....
mod(x, y)
Compute the remainder of division of x by y.
  1. 前5秒加文字
ffmpeg -i bunny.mp4 -vf drawtext=fontcolor=white:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='test':x=50:y=50:enable='lte(t\,5)'   -y out.mp4. 
  1. 后五秒加文字
ffmpeg -i original.mp4 -vf drawtext=fontcolor=white:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='test':x=50:y=50:enable='gte(t\,5)'   -y out.mp4. 
  1. 第十秒到第二十秒加文字
ffmpeg -i original.mp4 -vf drawtext=fontcolor=white:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='test':x=50:y=50:enable='between(t\,10\,20)'   -y out.mp4. 

切片的时候使用 比如每个切片10秒 对第二个切片的前5秒 加文字 也就是总文件的10~15秒 当前切片的前5秒

ffmpeg -i original.mp4 -vf drawtext=fontcolor=white:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='test':x=50:y=50:enable='between(t+10\,0\,15)'   -y out.mp4 
  1. 显示5秒 然后5秒不显示 然后再显示5秒 然后5秒不显示; 依次。。
ffmpeg -i original.mp4 -vf drawtext=fontcolor=white:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='test':x=50:y=50:enable='lte(mod(t\,10)\,5)'   -y out.mp4
  1. 5秒显示hello 接着5秒显示world 依次。
ffmpeg -i original.mp4 -vf drawtext=fontcolor=red:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='hello':x=50:y=50:enable='lte(mod(t\,2)\,1)',drawtext=fontcolor=red:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='world':x=50:y=50:enable='gte(mod(t\,2)\,1)'  -y out.mp4

在这里插入图片描述
6. 文字从左向右移动 每帧移动2个像素

ffmpeg -i original.mp4 -vf drawtext="fontcolor=red:fontsize=60:fontfile=msyh.ttf:line_spacing=7:text=test:x=50+50*t:y=50"  -y out.mp4

在这里插入图片描述
7. 从下往上移动,每次移动100像素。

ffmpeg -i original.mp4 -vf drawtext="fontsize=50:fontfile=FreeSerif.ttf:text=lllllxxssldsfsf:y=h-100*t"  -y out.mp4

在这里插入图片描述

  1. 打印real time
ffmpeg -i original.mp4 -vf drawtext=fontcolor=red:fontsize=40:fontfile=msyh.ttf:line_spacing=7:text='%{localtime}':x=200:y=200 -y out.mp4

在这里插入图片描述

  1. 让文本先显示再逐渐消失
#!/bin/sh
DS=1.0 # display start
DE=10.0 # display end
FID=1.5 # fade in duration
FOD=5 # fade out duration
ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }"

能否同时输入多行文本呢??

References:
https://www.jianshu.com/p/d9d8ee30d621


https://www.fengoutiyan.com/post/15862.html

相关文章:

  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機