使用ffmpeg给视频添加跑马灯效果(滚动字幕)
直接上命令
从左往右滚
ffmpeg -i input.mp4 -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" output.mp4
从右往左滚
-vf "drawtext=text=string1:fontfile=foo.ttf:y=h-line_h-10:x=w-(t-4.5)*w/5.5:fontcolor=white:fontsize=40:shadowx=2:shadowy=2"
从右往左滚,单次滚动时长10秒,间隔30秒滚一次
ffmpeg -i input.mp4 -filter:v drawtext="fontfile=Microsoft YaHei Mono.ttf:text='Hello World':fontcolor=white@1.0:fontsize=36:y=h-line_h-10:x=w-tw-w/10*mod(t\,30):enable=gt(mod(t\,20)\,10)" -codec:v libx264 -codec:a copy -y output.mp4
原理
请参阅Desmos了解它的工作原理。
x轴是视频宽度。
y轴是时间。
黑线是图像的宽度(可通过滑块在Desmos中调整x)。
黑色阴影是我公式中的文字。
t在Desmos中对应tw于FFmpeg CMD,这是文本的宽度。
蓝色区域是原始公式中的文本。
参考文献:
https://superuser.com/questions/1026763/scrolling-from-right-to-left-in-ffmpeg-drawtext
https://superuser.com/questions/875058/loop-text-that-wipes-left-to-right-using-ffmpeg-drawtext-filter/1026470#1026470
擅长爬虫、SEO、文本分类领域,交流微信 :z328134421