我正在使用当前的 ffmpeg 命令转换多个视频并创建一个水印,该水印是每播放 120 秒从右到左到右滚动的文本。
find /home/video/ -type f -execdir ffmpeg -i '{}' -filter:v "drawtext=fontfile=/root/FreeSans.ttf:text='QWERTY':[email protected]:fontsize=26:y=h-line_h-30:x=w/20*mod(t\,120),scale=854:480" -pix_fmt yuv420p -c:v libx264 -preset slow -b:v 1000k -minrate 500k -maxrate 2000k -bufsize 2000k -c:a aac -ar 44100 -b:a 128k -movflags +faststart '/home/video/new/{}.mp4' \;
我想修改水印,让它看起来像这样
我希望上面显示的文本每 120 秒淡入一次,持续 15 秒。采用粗体格式并采用相同颜色(黑色)。
“QWERTY QWERTY QWERTY”新队
“QWERTY QWERTY QWERTY”
我目前使用的命令的另一个问题是视频帧不同。例如,如果视频只有 800x600,文本就会非常大。如果视频是 1920x1080,文本就会非常小。我希望根据帧速率调整文本大小。就屏幕尺寸而言,它应该看起来像上面那样。
答案1
一种方法是使用 ASS 字幕字幕筛选:
ffmpeg -i input -filter_complex "subtitles=fade.ass" -c:a copy output
优点:
- 衰退并且时间由ASS文件控制。
- 文本将自动调整大小以适合视频大小。
- 字幕比 drawtext 更具可定制性。
- 与 drawtext 不同,文本可以根据需要自动换行。
ffmpeg
命令很简单。
坏处:
- 每个实例在 ASS 文件中都是单独的一行。对于短视频来说这不是什么大问题。也许有办法通过 ASS 或卡拉 OK 功能解决这个问题,但我暂时不知道。
示例 ASS 文件(在 Aegisub 3.2.2 中创建):
[Script Info]
; Script generated by Aegisub 3.2.2
; http://www.aegisub.org/
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: None
[Aegisub Project Garbage]
Last Style Storage: Default
Video Position: 749
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00000000,&H000000FF,&H00000000,&H00000000,-1,0,0,0,100,100,0,0,1,0,0,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:15.00,Default,,0,0,0,,{\fad(500,500)}qwerty qwerty qwerty qwerty\Nqwerty qwerty qwerty qwerty
Dialogue: 0,0:02:00.00,0:02:15.00,Default,,0,0,0,,{\fad(500,500)}qwerty qwerty qwerty qwerty\Nqwerty qwerty qwerty qwerty
Dialogue: 0,0:04:00.00,0:04:15.00,Default,,0,0,0,,{\fad(500,500)}qwerty qwerty qwerty qwerty\Nqwerty qwerty qwerty qwerty
Dialogue: 0,0:06:00.00,0:06:15.00,Default,,0,0,0,,{\fad(500,500)}qwerty qwerty qwerty qwerty\Nqwerty qwerty qwerty qwerty