
我有兩個視頻
- deskshare.webm 1280x720 無音頻
- 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 或更高版本。