2016-02-29 236 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