FFmpegで動画を結合・連結する方法(2026年ガイド)
FFmpegを使って複数の動画ファイルを結合・連結するための完全ガイド。concatデマクサー、フィルター、プロトコルの各方式と、無料のワンクリック代替ツールを解説します。
複数の動画クリップを1つのファイルに結合したいですか?FFmpegには動画を連結する方法がいくつかありますが、適切な方法はクリップが同じフォーマット、コーデック、解像度を共有しているかどうかによって異なります。
このガイドでは、正確なコマンドと合わせて3つのアプローチをすべて説明します。ターミナルでコーデックの不一致をデバッグしたくない方のために、最後に無料のドラッグ&ドロップの代替手段も紹介します。
前提条件:FFmpegのインストール

macOS:
brew install ffmpeg
Ubuntu/Debian:
sudo apt update && sudo apt install ffmpeg
Windows:
ffmpeg.orgからダウンロードし、解凍してbinをPATHに追加してください。
方法1:Concatデマクサー(同じフォーマット — 最速)
これは最速かつ最もシンプルな方法です。すべての動画が同じコーデック、解像度、フレームレートを持っている場合に機能します。
ステップ1:ファイルリストを作成する
files.txtというテキストファイルを作成します:
file 'clip1.mp4'
file 'clip2.mp4'
file 'clip3.mp4'
ステップ2:concatコマンドを実行する
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4
-f concat— concatデマクサーを使用-safe 0— 絶対パス/相対パスを許可-c copy— 再エンコードなし(即時)
ファイルリストを自動生成する
Linux/macOS:
for f in *.mp4; do echo "file '$f'" >> files.txt; done
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4
Windows (PowerShell):
Get-ChildItem *.mp4 | ForEach-Object { "file '$($_.Name)'" } | Out-File -Encoding ascii files.txt
ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4
方法2:Concatフィルター(異なるフォーマット — 最も柔軟)
クリップのコーデック、解像度、フレームレートが異なる場合は、concatフィルターが必要です。これはすべてを一致するように再エンコードします。
動画2本の場合:
ffmpeg -i clip1.mp4 -i clip2.mov \
-filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
動画3本の場合:
ffmpeg -i clip1.mp4 -i clip2.mov -i clip3.avi \
-filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
n=3— 入力セグメントの数v=1— 動画ストリームの出力数a=1— 音声ストリームの出力数
連結前に解像度を正規化する
クリップの解像度が異なる場合は、先にスケールを合わせます:
ffmpeg -i clip1.mp4 -i clip2.mp4 \
-filter_complex \
"[0:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[v0]; \
[1:v]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[v1]; \
[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
方法3:Concatプロトコル(MPEG-TSのみ)
MPEGトランスポートストリームの場合、concatプロトコルを直接使用できます:
# まずMPEG-TSに変換
ffmpeg -i clip1.mp4 -c copy -bsf:v h264_mp4toannexb clip1.ts
ffmpeg -i clip2.mp4 -c copy -bsf:v h264_mp4toannexb clip2.ts
# 次に連結
ffmpeg -i "concat:clip1.ts|clip2.ts" -c copy -bsf:a aac_adtstoasc output.mp4
この方法は一般的にもはや推奨されていません。concatデマクサー(方法1)の方がシンプルで信頼性が高いです。
特殊なシナリオ
映像トラックと音声トラックを結合する
動画ファイルと別の音声ファイルを組み合わせる:
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -shortest output.mp4
-shortest— 短い方のストリームが終了したら停止
動画の音声を置き換える
ffmpeg -i video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output.mp4
フレームレートが異なる動画を連結する
連結前にすべての入力を30fpsに強制する:
ffmpeg -i clip1.mp4 -i clip2.mp4 \
-filter_complex \
"[0:v]fps=30[v0];[1:v]fps=30[v1]; \
[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
音声のない動画
一部のクリップに音声トラックがない場合は、無音の音声を追加します:
ffmpeg -i clip_no_audio.mp4 -f lavfi -i anullsrc=r=44100:cl=stereo \
-c:v copy -c:a aac -shortest clip_with_silence.mp4
その後、通常通り連結します。
よくあるエラーと対処法
“Discarding non-monotonous DTS”
クリップ間でタイムスタンプがずれています。再エンコードしてください:
ffmpeg -f concat -safe 0 -i files.txt -c:v libx264 -c:a aac output.mp4
“Stream 0 codec does not match”
クリップのコーデックが異なります。concatデマクサーの代わりにconcatフィルター(方法2)を使用してください。
“Discarding 1 additional packets” / 同期の問題
-fflags +genptsを追加してタイムスタンプを再生成してください:
ffmpeg -fflags +genpts -f concat -safe 0 -i files.txt -c copy output.mp4
出力のクリップ間に黒いフレームが入る
クリップのピクセルフォーマットが異なる場合に発生します。共通のフォーマットを強制してください:
ffmpeg -i clip1.mp4 -i clip2.mp4 \
-filter_complex "[0:v]format=yuv420p[v0];[1:v]format=yuv420p[v1];[v0][0:a][v1][1:a]concat=n=2:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4
ターミナル不要:WaveSpeed Desktopを使う
FFmpegで動画を結合するには、3つの異なる方法から選択し、ファイルリストを作成し、コーデックの不一致を処理し、タイムスタンプの問題をデバッグし、正規表現の悪夢のようなfilter_complex文字列を書く必要があります。
WaveSpeed Desktopには、すべてをシンプルにする組み込みのメディアマージャーが含まれています:
- 動画クリップをドラッグ&ドロップ
- 必要に応じて順序を変更
- マージをクリック — 1ファイルで完了
フォーマットが異なる?解像度が違う?アプリが自動的に処理します。

WaveSpeed Desktopを無料でダウンロード: https://github.com/WaveSpeedAI/wavespeed-desktop/releases
よくある質問
どのconcat方法を使えばいいですか? すべてのクリップが同じコーデックと解像度を持っている場合は、**方法1(デマクサー)**を使用してください — 即時に処理されます。クリップが何らかの点で異なる場合は、**方法2(フィルター)**を使用してください。
クリップ間にトランジションを追加できますか?
FFmpegはxfadeフィルターで基本的なクロスフェードトランジションをサポートしていますが、複雑です。トランジションには、ビジュアルエディターの方が通常は簡単です。
動画を結合すると品質が下がりますか?
-c copy(方法1)では下がりません。concatフィルター(方法2)では再エンコードが発生し、わずかな品質低下が起こる可能性があります。低いCRF値(18〜20)を使用して最小限に抑えてください。
結合できる動画の数に制限はありますか? FFmpegには明確な制限はありません。実際には、メモリと処理時間は入力数に比例してスケールします。



