
我至少有 4 個由meetecho/janus-gateway
Janus 製作的視訊會議視頻,為每個用戶創建兩個 mjr 視頻和音頻文件,首先我將它們合併到一個 webm 文件中,然後將所有視頻都轉換為 500*500 視頻。
現在我嘗試將這些影片像馬賽克一樣組合起來,並找到了以下程式碼:
ffmpeg -i 1.webm -i 2.webm -i 3.webm -i 4.webm \
-speed 8 -deadline realtime -filter_complex "[0]pad=2*iw:2*ih[l]; \
[1]setpts=PTS-STARTPTS+428/TB[1v]; [l][1v]overlay=x=W/2[a]; \
[2]setpts=PTS-STARTPTS+439/TB[2v]; [a][2v]overlay=y=H/2[b]; \
[3]setpts=PTS-STARTPTS+514/TB[3v]; [b][3v]overlay=y=H/2:x=W/2[v]; \
[1]adelay=428372|428372[1a]; \
[2]adelay=439999|439999[2a]; \
[3]adelay=514589|514589[3a]; \
[0][1a][2a][3a]amix=inputs=4[a]" \
-map "[v]" -map "[a]" merged.webm
我根據每個文件的創建日期時間計算了與第一個視頻相關的延遲時間。
我的問題:
該代碼不起作用!控制台凍結幾分鐘後,它顯示以下行:
殺死 29 fps=0.1 q=0.0 大小= 1kB 時間=00:04:30.07 位元速率= 0.0kbits/s 速度=0.896x
我沒查出疊加前後字母的意思,[1v][2v][3v][l][a][b][v]…
答案1
不要多次使用疊加,而是嘗試對所有視訊軌道使用“xstack”過濾器,您可以先延遲所有輸入,然後將它們傳輸到 xstack 並製作您自己的佈局。
[ 和 ] 之間的符號的含義只是用於識別您的曲目的名稱/ID。
如果像「scale」這樣的過濾器被給定一個輸入,並且您想使用另一個過濾器處理其輸出,您可以這樣做:
-filter_complex "[0:v]scale=1920:1080[video_yourscaledoutput];[video_yourscaledoutput]your_next_filter=args[video_finaloutput]" -map "[video_finaloutput]" your_final_file.mp4
[0:v]
這是您的第一個輸入流的視頻軌道的 ID,您可以按照您想要的方式命名其餘部分:)