當兩個影片具有不同的解析度時,如何將兩個影片並排合併為一個?

當兩個影片具有不同的解析度時,如何將兩個影片並排合併為一個?

我有兩個視頻

  1. deskshare.webm 1280x720 無音頻
  2. webcams.webm 640x480 附音頻

下面描述的命令根據需要工作

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=w+640" out.mp4

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4

是否有任何語法可以讓我擺脫第二個影片的手動輸入解析度(在我的例子中是 640 px)?

是否可以使用 [1:v]width 之類的東西來自動取得該值?

就我而言也可以正常運作

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex "[0:v]pad=(iw+iw/2):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4

但這僅在第一個影片的寬度是第二個影片的寬度的兩倍時才有效。

答案1

這可以以迂迴的方式完成。

使用

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
   "[1:v][0:v]scale2ref=main_w:ih[sec][pri];
   [sec]setsar=1,drawbox=c=black:t=fill[sec];[pri][sec]hstack[canvas];
   [canvas][1:v]overlay=main_w-overlay_w" out.mp4

scale2ref 將輔助視訊的一份副本的大小調整為主視訊的高度,同時保持其原始寬度。然後它填充黑色並堆疊到主視頻的右側。

然後將輔助影片的第二個副本覆蓋在展開的畫布上。

您需要 ffmpeg 4.0 或更高版本。

相關內容