FFmpeg 工具对文字和字幕的编辑

2019-01-19 0 By admin

在对视频文件进行处理时,少不了会在视频上添加文字和字幕。

一、添加文字

添加文字需要对视频创建一个过滤器图(filtergraph)。
-vf filtergraph (output)
Create the filtergraph specified by filtergraph and use it to filter the stream.

设置视频过滤器图:文字(drawtext)参考文档
http://ffmpeg.org/ffmpeg-filters.html#drawtext

1.1、添加文本

1、-vf "drawtext=:text="welcome":x=(w-text_w)/2:y=10:fontsize=30:fontcolor=yellow@0.7"
2、drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"

完成参数示例:
ffmpeg -re -i "chuguo.mp4" -c:v h264 -c:a copy -vf "drawtext=:text="welcome":x=(w-text_w)/2:y=10:fontsize=30:fontcolor=yellow@0.7" -f flv "rtmp://localhost/htl"
展示文字,在视频的中间:
drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"

1.2、动态文字

用 t (时间秒)变量实现动态文本。
1、顶部水平滚动:
-vf drawtext="fontfile=arial.ttf:text='Dynamic RTL text':x=w-t*50:fontcolor=darkorange:fontsize=30"

2、底部水平滚动
-vf drawtext="fontfile=arial.ttf:textfile=textfile.txt:x=w-t*50:y=h-th:fontcolor=darkorange:fontsize=30"

3、从左往右跑马灯滚动
-vf "drawtext=fontfile=arial.ttf:textfile=textfile.txt:y=h-line_h-10:x=(mod(5*n\,w+tw)-tw): fontcolor=white: fontsize=40: shadowx=2: shadowy=2"

4、从右到左跑马灯滚动
-vf "drawtext=fontfile=arial.ttf:textfile=textfile.txt:y=h-line_h-10:x=w-(mod(5*n\,w+tw)-tw): fontcolor=white: fontsize=40: shadowx=2: shadowy=2"

5、垂直从下往上滚动
-vf drawtext="textfile=textfile:fontfile=arial.ttf:x=(w-tw)/2:y=h-t*100:fontcolor=white:fontsize=30"

6.实现右上角显示当前时间?
在右上角显示当前时间 localtime
-vf drawtext="fontfile=arial.ttf:x=w-tw:fontcolor=white:fontsize=30:text='%{localtime\:%H\\\:%M\\\:%S}'"

7、每隔3秒显示一次当前时间
-vf drawtext="fontfile=arial.ttf:x=w-tw:fontcolor=white:fontsize=30:text='%{localtime\:%H\\\:%M\\\:%S}':enable=lt(mod(t\,3)\,1)"

二、添加字幕subtitles

语法:–vf subtitles=file
ffmpeg -i jidu.mp4 -vf subtitles=rgb.srt output.mp4