長い動画からクリップを切り出したい、または複数のファイルを結合したい場合、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を使えば、ブラウザで直接動画のトリミングと結合ができます。

