
ビデオが2つあります
- 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
2 番目のビデオの手動入力解像度 (私の場合は 640 ピクセル) を削除できる構文はありますか?
[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 番目のビデオの幅が 2 番目のビデオの幅の 2 倍である場合にのみ機能します。
答え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 は、セカンダリ ビデオの 1 つのコピーを、元の幅を維持しながらメイン ビデオの高さに合わせてサイズ変更します。次に、セカンダリ ビデオは黒で塗りつぶされ、メイン ビデオの右側に積み重ねられます。
次に、セカンダリ ビデオの 2 番目のコピーが、拡張されたキャンバスにオーバーレイされます。
ffmpeg 4.0 以降が必要です。