2016-02-29 192 views
1

我想创建无声视频,在一个单一的命令,视频:FFMPEG从3个源合并与另一视频+音频

  1. 无声背景视频;
  2. 要覆盖的较小视频(相同长度为1),保持其AUDIO;
  3. 一个PNG标志将被覆盖

我可以创建视频,但不能获得音轨。我不明白-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,但它们指的是混合视频源和音频源;我尝试了几个filtergraph的例子没有成功。任何想法?

+0

您忘记显示命令的完整控制台输出。这是一般'ffmpeg' cli用法问题所需要的(这种方式在这里是不重要的;下次请求[su])。 – LordNeckbeard

回答

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

+0

感谢它的魅力! –

+0

关于你的回答,如果第一个视频(在你的例子中是main.mp4)也有声音,并且我想保留两个音频,那么ffmpeg命令会改变什么? –

+0

@MarkDagger我用一个例子更新了答案。 – LordNeckbeard