我的目的是在視訊中的特定時間應用具有淡入淡出效果的圖像疊加,並透過單一命令將背景音訊應用到視訊。影片長度也將被限制為 15 秒。
目前,我可以透過 2 個命令來實現此目的,這將產生 2 個輸出,如何將這 2 個命令合併在一起?
第一個命令
ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1" incomplete.mp4
第二條命令
ffmpeg -i audio.mp3 -i incomplete.mp4 -shortest finalVideo.mp4
這是我嘗試將兩個命令合併為一個命令,但是視訊現在不再限制在 15 秒,並且在使用多個 mp4 視訊進行測試後,背景音訊僅適用於少數視訊。
ffmpeg -i video.mp4 -loop 1 -i image.png -ss 00:00:00 -t 00:00:15 -i audio.mp3 -shortest -filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i]; [0][i]overlay=main_w/2-overlay_w/2-0+0:main_h/2-overlay_h/2-0+0:shortest=1" finalVideo.mp4
答案1
使用
ffmpeg -ss 00:00:00 -t 00:00:15 -i video.mp4 -loop 1 -i image.png -i audio.mp3
-filter_complex "[1]format=yuva420p,fade=in:st=12:d=0.5:alpha=1[i];
[0][i]overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2:shortest=1[v]"
-map "[v]" -map 2:a -shortest incomplete.mp4
在 ffmpeg 中,選項放置很重要。輸入之前的任何選項僅適用於該輸入。在您嘗試的組合命令中,您在時間規範之後輸入音頻,因此它們僅特定於音頻輸入。
FFmpeg 使用映射系統來決定將哪些流包含到輸出中。當未明確設定映射分配時,預設映射會從輸入中選擇一個音訊。看起來您的某些 MP4 的音訊串流優先於 MP3。如果有明確的分配,這種情況就不會發生。