FFmpeg で動画を圧縮する方法
FFmpeg で動画ファイルを圧縮する方法を解説します。CRF、preset、コーデック選択、解像度変更で品質を保ちつつサイズを下げます。

FFmpeg で動画を圧縮するのは、ソフトを買わずにファイルを小さくする最短ルートです。CRF、preset、コーデック選択、解像度ダウンスケーリング——どれも画質とサイズのトレードオフを細かく制御できます。本記事は実際に使うテクニックを、コピペで動くコマンド付きで紹介します。圧縮の理屈をもっと深掘りしたい場合は動画圧縮のベストプラクティスも参照してください。
CRF でサクッと圧縮する
一番シンプルなのが CRF(Constant Rate Factor、固定品質) を使う方法です。値が小さいほど高品質、大きいほどファイルサイズが小さくなります。
ffmpeg -i input.mp4 -crf 23 output.mp4
| CRF 値 | 品質 | 用途 |
|---|---|---|
| 18 | ほぼロスレス | アーカイブ用途 |
| 23 | 良好(デフォルト) | 一般用途 |
| 28 | 中程度 | Web 配信向け |
| 32+ | 低 | サイズ最優先 |
コンテナフォーマット(container format)も変えたい場合(例: MKV から MP4)はフォーマット変換ガイドを参照してください。
コーデックを選ぶ
H.264 — 互換性重視
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium output.mp4
H.265 (HEVC) — ファイルサイズが約 50% に
H.265 は同じ品質でファイルサイズが大幅に小さくなりますが、エンコードに時間がかかります。
ffmpeg -i input.mp4 -c:v libx265 -crf 28 output.mp4
preset で速度とサイズのバランスを取る
preset はエンコード速度と圧縮効率のトレードオフを調整するパラメータです。
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset slow output.mp4
| preset | 速度 | ファイルサイズ |
|---|---|---|
| ultrafast | 最速 | 最大 |
| fast | 速い | やや大きい |
| medium | バランス型 | バランス型 |
| slow | 遅い | 小さい |
| veryslow | 最遅 | 最小 |
解像度を下げる
解像度を落とすのはファイルサイズ削減に最も効きます。
# 720p に縮小
ffmpeg -i input.mp4 -vf "scale=-2:720" -crf 23 output.mp4
# 480p に縮小
ffmpeg -i input.mp4 -vf "scale=-2:480" -crf 23 output.mp4
-2 はアスペクト比を維持し、幅を 2 で割り切れる値に揃えます。
ビットレート(bitrate)を制限する
ストリーミングや厳密なファイルサイズ制約がある場合は、最大ビットレートを指定します。
ffmpeg -i input.mp4 -c:v libx264 -b:v 1M -maxrate 1M -bufsize 2M output.mp4
音声も忘れずに圧縮
音声トラックの圧縮も効果があります。音声ビットレートを下げましょう。
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
とりあえずこれでいい万能コマンド
たいていの場面でうまくいくバランス型のコマンドはこれです。
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
ファイルサイズを大幅に下げつつ良好な品質を保てる MP4 を生成します。ほぼ全てのデバイス・プラットフォームで再生できます。
よくある質問(FAQ)
動画を圧縮するときの CRF はいくつにすべき?
H.264 のデフォルトは CRF 23 で、一般的な Web 動画なら安全な選択。高品質(アーカイブやプレミアム配信)なら CRF 18–20、強めに圧縮(SNS、低帯域)なら CRF 26–28 が目安です。H.265 なら H.264 + 5 のイメージ(H.265 の CRF 28 ≈ H.264 の CRF 23)。
FFmpeg で知覚できる画質劣化なしにどこまで圧縮できる?
H.264 を CRF 18–23 と -preset medium で使えば、カメラや録画ファイルなら 50–80% の容量削減が見た目の劣化なしに可能です。H.265 に切り替えて CRF 28 で更に 30–40% 削減。Web 上で既に圧縮された動画は余地が少なくなります。
H.264 と H.265、どちらが圧縮に向く?
同じ画質なら H.265 のほうがファイルサイズが 30–40% 小さいですが、エンコードに 3–5 倍時間がかかり、再生サポートも狭い(Safari やモダンモバイルは対応、一部ブラウザや古い機器は非対応)。互換性最優先なら H.264、帯域・ストレージ優先なら H.265。
指定サイズ(例:25MB 以下)に収めるには?
2 パス・ビットレート・エンコードを使います。目標ビデオビットレート = (目標サイズのビット数 - 音声サイズ) / 秒数。1 パス目で複雑度を解析し、2 パス目で複雑シーンに多くのビットを配分します。例えば 10 分動画を 100MB + 128k 音声に収めるなら、ビデオビットレートは約 1.2 Mbps。
圧縮したらファイルが元より大きくなったのは?
主な原因は 3 つ:(1) 元ファイルが既に圧縮済みで、低 CRF(18–20)で再エンコードすると画質"向上"扱いになる、(2) H.265 のような重いコーデックを fast preset で動かして効率が出ていない、(3) 解像度をアップスケールしている。まず ffprobe input.mp4 でソース情報を確認しましょう。
FFmpeg で最も速い圧縮方法は?
-c:v libx264 -preset ultrafast -crf 28。-preset medium よりおよそ 5 倍速いですが、同画質ならファイルが 2–3 倍大きくなります。プロキシ動画やドラフト用には許容範囲。本番配信は medium か slow に戻しましょう。
関連記事
- FFmpeg 動画圧縮のベストプラクティス - 品質とファイルサイズを最適化する応用テクニック
- FFmpeg でフォーマット変換する方法 - MP4, WebM, MKV, MOV 間でコーデックを制御しながら変換する
- FFmpeg で動画をトリミング・結合する方法 - シンプルなコマンドで切り出しと連結を行う