FFmpegで動画をトリミング・結合する方法

3月 3, 2026

長い動画からクリップを切り出したい、または複数のファイルを結合したい場合、FFmpegはシンプルなコマンドで両方を処理できます。

動画のトリミング

高速トリミング(再エンコードなし)

-ssで開始時間、-toで終了時間を指定します。-c copyを付けると再エンコードをスキップし、ほぼ瞬時に完了します:

ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -c copy output.mp4

これで1:00から2:30のクリップを抽出します。

長さで指定してトリミング

-tで終了時間の代わりに長さを指定:

ffmpeg -ss 00:00:30 -i input.mp4 -t 60 -c copy output.mp4

これで0:30から60秒間を抽出します。

精密トリミング(再エンコードあり)

-c copyは高速ですが最も近いキーフレームでカットされるため、数秒の誤差が生じる可能性があります。正確なカットが必要な場合:

ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -c:v libx264 -c:a aac output.mp4

中間部分を削除

セクションを削除する場合(例:0:00〜1:00と2:00〜最後を残す)、各部分をトリミングして結合します:

# ステップ1:各パートを抽出
ffmpeg -i input.mp4 -to 00:01:00 -c copy part1.mp4
ffmpeg -i input.mp4 -ss 00:02:00 -c copy part2.mp4

# ステップ2:結合(下記参照)

複数の動画を結合

方法1:Concatデマルチプレクサ(推奨)

動画をリストしたテキストファイルを作成:

# filelist.txt
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'

結合:

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

すべてのファイルが同じコーデックと解像度の場合、高速でロスレスです。

方法2:Concatフィルター(異なるフォーマット)

ファイルのコーデックや解像度が異なる場合、concatフィルターを使用:

ffmpeg -i part1.mp4 -i part2.mp4 \
  -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1" \
  output.mp4

動画が再エンコードされるため遅くなりますが、異なるフォーマットに対応できます。

単一フレームの抽出

特定のタイムスタンプでフレームを取得:

ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 frame.png

均等に分割

動画を30秒のセグメントに分割:

ffmpeg -i input.mp4 -c copy -segment_time 30 -f segment output_%03d.mp4

クイックリファレンス

タスク主要パラメータ
トリミング(高速)-ss, -to, -c copy
トリミング(精密)-ss, -to, -c:v libx264
長さ指定トリミング-ss, -t
結合(同じコーデック)-f concat, -c copy
結合(異なるフォーマット)-filter_complex concat
分割-segment_time, -f segment

オンラインで試す

コマンドラインを使いたくないですか?FFHubを使えば、ブラウザで直接動画のトリミングと結合ができます。

FFHub

FFHub