先上結果
環境
硬件:通用PC
系統:Windows 測試有效
軟件:ffmpeg
解決
0、命令
ffmpeg.exe -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex "[0:v]scale=iw/2:ih/2,pad=2*iw:2*ih[a]; [1:v]scale=iw/2:ih/2[b]; [2:v]scale=iw/2:ih/2[c]; [3:v]scale=iw/2:ih/2[d];[a][b]overlay=w[x];[x][c]overlay=0:h[y];[y][d]overlay=w:h[v];[0:a][1:a][2:a][3:a]amix=inputs=4[a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac output.mp4
1、參數說明
- -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4:這些是輸入文件的參數,指定了四個視頻文件作為輸入。為了簡單我這里采用一個視頻復制4份使用。
- -filter_complex:這個參數用來指定一個復雜的過濾器圖,用于處理和組合視頻和音頻流。
[0:v]scale=iw/2:ih/2,pad=2iw:2ih[a];:這個過濾器首先將第一個視頻流([0:v])的大小縮小到原來的一半(scale=iw/2:ih/2),然后使用pad過濾器將視頻畫面擴大到原始寬度的兩倍和原始高度的兩倍,準備放置其他視頻。結果標記為[a]。
[1:v]scale=iw/2:ih/2[b]; [2:v]scale=iw/2:ih/2[c]; [3:v]scale=iw/2:ih/2[d];:這些過濾器將其他三個視頻流的大小也縮小到原來的一半,并分別標記為[b]、[c]、[d]。
[a][b]overlay=w[x];:這個過濾器將視頻[b]覆蓋到視頻[a]上,位置為寬度w的位置,即右上角,結果標記為[x]。
[x][c]overlay=0:h[y];:將視頻[c]覆蓋到[x]上,位置為高度h的位置,即左下角,結果標記為[y]。
[y][d]overlay=w:h[v];:將視頻[d]覆蓋到[y]上,位置為寬度w和高度h的位置,即右下角,最終的視頻流標記為[v]。 - [0:a][1:a][2:a][3:a]amix=inputs=4[a]:這個過濾器將四個視頻的音頻流混合成一個音頻流。amix=inputs=4表示混合四個輸入,結果標記為[a]。
- -map “[v]” -map “[a]”:這些參數指定了要從過濾器圖中映射到輸出文件的流。"[v]“是最終的視頻流,”[a]"是混合后的音頻流。
- -c:v libx264 -c:a aac:這些參數指定了視頻和音頻的編碼器。視頻使用libx264編碼器,音頻使用aac編碼器。
- output.mp4:這是輸出文件的名稱。
OK!
至此,問題解決。歡迎留言交流