web-dev-qa-db-ja.com

2つのビデオフレームを1つに結合して、最終的なビデオが2つのフレームを1つとして同時に再生する方法

2本の動画を1本につなげたい。例としてYoutubeから2つのビデオを取り上げましょう。最終的なビデオの高さ=最初のビデオの高さ+2番目のビデオの高さ、幅= max(最初のビデオの幅、2番目のビデオの幅)にします。上部では最初のビデオが再生され、下部では2番目のビデオが再生されます。

Linuxでそれを行う方法を知っていますか?mencoder、ffmpeg、またはその他のコマンドラインコマンドを使用する際の最良の可能性です。

4
Jakub

これはffmpegで行うことができます。ビデオが同じサイズの場合:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw:ih*2:0:0[intv];[intv][1:v]overlay=0:H/2[vid]' \
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4

サイズが異なる場合(input1.mp4の解像度が高い場合):

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw:ih*2:0:0[intv];[intv][1:v]overlay=(W-w)/2:H/2[vid]'
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4

ビデオの解像度がわかっている場合は、より良い出力を得ることができます。 input1.mp4がより大きく(または少なくとも同じ解像度)、input2.mp4の高さが360であると仮定します。

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v]pad=iw:ih+360:0:0[intv];[intv][1:v]overlay=(W-w)/2:H-360[vid]'
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4
3
evilsoup

両方の動画の幅が同じ場合は、hstackを使用できます。これはpad + overlayよりも高速です。

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex \
'[0:v][1:v]hstack[vid]' \
-map [vid] -c:v libx264 -crf 22 -preset veryfast output.mp4
1
yueqiw

私はここで答えを見つけたと思います: https://stackoverflow.com/questions/575705/how-can-i-tile-videos-create-a-video-montage 詳しく見ていきますそのスレッドに投稿されたソリューションに。

0
Jakub