我想在一个命令中创建来自3个来源的视频:
我可以创建视频,但无法获得音轨。我不明白-vf
是否应该在这种情况下起作用。这就是我试图做的事情:
ffmpeg.exe -y -i MASTER_SILENT_VIDEO.mp4 -vf "movie=SMALLER_VIDEO_WITH_AUDIO.flv, scale=320:-1[inner];movie=MY_LOGO.png[inner2]; [in][inner] overlay=800:480,amerge [step1]; [step1][inner2] overlay=30:30 [out]" completed.mp4
" amerge"过滤器应该进行音频合并工作,但当然它不起作用。我发现了涉及-map
或过滤器图的类似问题,但它们指的是混合视频源和音频源;我尝试了几个filtergraph示例但没有成功。有什么想法吗?
答案 0 :(得分:1)
使用-filter_complex
,删除电影源过滤器,并使用-map
明确定义输出流:
ffmpeg -y -i main.mp4 -i overlay_with_audio.flv -i logo.png -filter_complex
"[1:v]scale=320:-1[scaled];
[0:v][scaled]overlay=800:480[bg];
[bg][2:v]overlay=30:30,format=yuv420p[video]"
-map "[video]" -map 1:a -movflags +faststart
output.mp4
您可能需要为overlay filters提供其他选项,具体取决于输入的长度以及您希望叠加的反应方式,但由于您没有提供命令的完整控制台输出,我必须制作一个通用的,效率低的,可能是不正确的例子。
ffmpeg -y -i main.mp4 -i overlay_with_audio.flv -i logo.png -filter_complex
"[1:v]scale=320:-1[scaled];
[0:v][scaled]overlay=800:480[bg];
[bg][2:v]overlay=30:30,format=yuv420p[video];
[0:a][1:a]amerge=inputs=2[audio]"
-map "[video]" -map "[audio]" -ac 2 -movflags +faststart
output.mp4
我假设两个输入都是立体声,你想要一个立体声输出。另请参阅FFmpeg Wiki: Audio channel Manipulation - 2 × stereo → stereo。