FFmpeg Cookbook
EN

2画面並べ動画ツール

2 本の動画を 1 つの画面に並べます(横並び/縦並び)。比較やビフォーアフター、リアクション動画をブラウザの中で作れます。

動画はサーバーに送られません
クリップ A(左/上)
クリップ A を追加
動画、最大 75MB
クリップ B(右/下)
クリップ B を追加
動画、最大 75MB
各クリップは固定セルに収め(必要に応じてレターボックス)、横長と縦長の混在でも破綻しません。出力は短い方のクリップで終了します。長尺はブラウザでは遅くなるため、短いクリップ推奨です。
合成中… 0%

対応する FFmpeg コマンド

現在の設定に対応するコマンドラインです。設定を変えるとリアルタイムで更新されます。

ffmpeg -i inA.mp4 -i inB.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS,scale=640:720:force_original_aspect_ratio=decrease,pad=640:720:(ow-iw)/2:(oh-ih)/2,setsar=1[a];[1:v]setpts=PTS-STARTPTS,scale=640:720:force_original_aspect_ratio=decrease,pad=640:720:(ow-iw)/2:(oh-ih)/2,setsar=1[b];[a][b]hstack=inputs=2:shortest=1,format=yuv420p[v]" -map "[v]" -map "0:a:0?" -c:a aac -b:a 128k -shortest -c:v libx264 -preset veryfast -crf 24 -movflags +faststart output.mp4

使い方

  1. 2本のクリップを追加クリップ A(左/上)と B(右/下)に動画をドロップします。1 本 75MB 未満、合計 120MB までです。
  2. レイアウトを選ぶ横並びは左右に、縦並びは上下に並べます。
  3. 音声を選ぶクリップ A の音声を使うか、ミュートにします。
  4. 合成してダウンロード「動画を合成」を押すと、H.264 の MP4 で書き出します。再生して確かめてからダウンロードします。

うまくいかないとき

出力が思ったより短い

原因:短い方のクリップが終わると、出力も終わります。

対処:先に 2 本を同じ長さにトリミングします。

片側に黒帯が出る

原因:クリップの縦横比が枠と合わないため、引き伸ばさずに余白を黒で埋めています。

対処:向きのそろったクリップを使うか、先に枠の形に合わせてクロップします。横並びの枠(640×720)は縦長なので、16:9 の横長クリップは上下に黒帯が出ます。

メモリ不足・とても遅い

原因:2 本の動画をブラウザのタブの中で読み込み、再エンコードしているためです。

対処:数秒程度の短いクリップを使います。スマホでは 1 本 50MB 程度までが目安です(50MB を超えると注意が出ます)。

よくある質問

横長と縦長の動画を合成できますか?

できます。各クリップを枠に収まる大きさに縮小・拡大し、余白は黒で埋めるので、向きが違っても引き伸ばされません。

合成動画の長さは?

短い方のクリップの長さです。両方を最後まで見せたいときは、先に同じ長さにそろえます。

どちらの音声が使われますか?

クリップ A の音声か、音なしのどちらかです。2 本の音声を混ぜる機能はありません。音楽を付けたいときは、音なしで作ってから「BGM追加・音声ミックスツール」で足します。

出力解像度は?

横並びは 1280×720、縦並びは 720×1280 です。

動画はアップロードされますか?

いいえ。すべて ffmpeg.wasm でブラウザの中で処理し、ファイルは外部に送りません。

くわしい説明(設定の意味・制限・FFmpeg のコマンド)

設定の意味

レイアウト
横並び=1280×720(640×720 の枠が 2 つ)、縦並び=720×1280(720×640 の枠が 2 つ)。
音声
クリップ A の音声(あれば)を AAC 128 kbps で残すか、音なしにします。

使えるブラウザと制限

  • ブラウザのメモリに限りがあるため、短いクリップ向けです。1 本 75MB 未満、合計 120MB までです。
  • レイアウトは横並びと縦並び(同じ大きさの枠 2 つ)だけです。自由な配置やピクチャーインピクチャーはできません。

同じ処理を FFmpeg のコマンドで

横並び(1280×720)
ffmpeg -i a.mp4 -i b.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS,scale=640:720:force_original_aspect_ratio=decrease,pad=640:720:(ow-iw)/2:(oh-ih)/2,setsar=1[a];[1:v]setpts=PTS-STARTPTS,scale=640:720:force_original_aspect_ratio=decrease,pad=640:720:(ow-iw)/2:(oh-ih)/2,setsar=1[b];[a][b]hstack=inputs=2:shortest=1,format=yuv420p[v]" -map "[v]" -map "0:a:0?" -c:v libx264 -crf 24 -preset veryfast -c:a aac -b:a 128k -movflags +faststart -shortest out.mp4
クリップ A の音声を使う設定です。setpts=PTS-STARTPTS で、2 本の開始時刻を 0 にそろえます。
縦並び(720×1280)
ffmpeg -i a.mp4 -i b.mp4 -filter_complex "[0:v]setpts=PTS-STARTPTS,scale=720:640:force_original_aspect_ratio=decrease,pad=720:640:(ow-iw)/2:(oh-ih)/2,setsar=1[a];[1:v]setpts=PTS-STARTPTS,scale=720:640:force_original_aspect_ratio=decrease,pad=720:640:(ow-iw)/2:(oh-ih)/2,setsar=1[b];[a][b]vstack=inputs=2:shortest=1,format=yuv420p[v]" -map "[v]" -an -c:v libx264 -crf 24 -preset veryfast -movflags +faststart out.mp4
音なし(ミュート)の設定です。