ffmpeg过滤器组合的正确语法?

时间:2018-05-16 10:06:38

标签: ffmpeg

我正在使用ffmpeg从mp3 + jpg中生成一个漂亮的视频。

我设法生成了一个以jpg为背景的视频,并在其上添加了一个波形复合滤镜(并将黑色bg作为叠加层移除)。

这有效: ffmpeg -y -i 1.mp3 -loop 1 -i 1.jpg -filter_complex" [0:a] showwaves = s = 1280x720:mode = cline,colorkey = 0x000000:0.01:0.1,format = yuva420p [v ]; [1:v] [v]覆盖[OUTV]" -map" [outv]" -pix_fmt yuv420p -map 0:a -c:v libx264 -c:copy -shortest output.mp4

我一直在尝试在生成的视频中的某处添加文字。我正在尝试使用drawtext过滤器。但是我无法使用它,所以我似乎不理解语法,或者如何组合过滤器。

这不起作用: ffmpeg -y -i 1.mp3 -loop 1 -i 1.jpg -filter_complex" [0:a] showwaves = s = 1280x720:mode = line,colorkey = 0x000000:0.01:0.1,format = yuva420p [v ]; [1:v] [v]覆盖[OUTV]" -filter_complex" [v] drawtext = text ='我的自定义文本测试':fontcolor=White@0.5:fontsize = 30:font = Arvo:x =(w-text_w)/ 5:y =(H-text_h)/ 5 [OUT]" -map" [outv]" -pix_fmt yuv420p -map 0:a -c:v libx264 -c:copy -shortest output.mp4

会喜欢一些指针!

1 个答案:

答案 0 :(得分:1)

串联操作的过滤器应该链接在一起

ffmpeg -y -i 1.mp3 -loop 1 -i 1.jpg \
 -filter_complex "[0:a]showwaves=s=1280x720:mode=line,colorkey=0x000000:0.01:0.1,
                       format=yuva420p[v];
                  [1:v][v]overlay,
                          drawtext=text='My custom text test':fontcolor=White@0.5:
                          fontsize=30:font=Arvo:x=(w-text_w)/5:y=(h-text_h)/5[outv]"
 -map "[outv]" -pix_fmt yuv420p -map 0:a -c:v libx264 -c:a copy -shortest output.mp4

(您将drawtext应用到showwaves的输出;它可以直接应用于叠加输出)