我正在使用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
会喜欢一些指针!
答案 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的输出;它可以直接应用于叠加输出)