ffmpeg - 每隔 x 秒淡入/淡出水印并调整视频分辨率

ffmpeg - 每隔 x 秒淡入/淡出水印并调整视频分辨率

我正在使用当前的 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

相关内容