ffmpeg将静音视频与另一个视频+音频合并

时间:2016-02-29 21:33:13

标签: audio video filter merge ffmpeg

我想在一个命令中创建来自3个来源的视频:

  1. 一个无声的背景视频;
  2. 要覆盖的较小视频(相同长度为1),保持其音频;
  3. 要叠加的PNG徽标
  4. 我可以创建视频,但无法获得音轨。我不明白-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示例但没有成功。有什么想法吗?

1 个答案:

答案 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