我有以下 FFMPEG 命令,它可以正确擦除视频底部的文本。
ffmpeg -y -i test_small.mov -acodec libmp3lame -vcodec libx264 -pix_fmt yuv420p -b:a 192k -b:v 1400k -ar 44100 -crf 18 -vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=foo.ttf: y=h-line_h-10:x=(5*n): fontcolor=white: fontsize=40: shadowx=2: shadowy=2" -an left_to_right_small.mp4
Run Code Online (Sandbox Code Playgroud)
但这只会发生一次。如何更改此设置,以便动画在每个循环之间有延迟循环?
这有效:
-vf "drawtext=text=string1 string2 string3 string4 string5 string6 string7 :expansion=normal:fontfile=foo.ttf: y=h-line_h-10:x=(mod(5*n\,w+tw)-tw): fontcolor=white: fontsize=40: shadowx=2: shadowy=2"
Run Code Online (Sandbox Code Playgroud)
请参阅Desmos了解其工作原理。
x轴是视频宽度。
y轴是时间。
黑线是图像的宽度(可在 Desmos 中通过滑块调整x
)。
黑色阴影是我公式中的文本。
t
in Desmos 对应tw
in FFmpeg CMD,即文本的宽度。
蓝色区域是原始公式中的文本。