撮影した動画が「なんだか暗い」「色が浅い」と感じたら、FFmpeg だけで明るさ・コントラスト・彩度・色調を補正できます。手軽な eq、トーンカーブで追い込む curves、シャドウ/ミッド/ハイライト別に色を振る colorbalance の3つを、目的に応じて使い分けるのがポイントです。この記事では各フィルタの役割と使い分け、組み合わせた実践的なカラーコレクションまでを解説します。
動作確認: FFmpeg 6.1(ubuntu-latest / GitHub Actions CI 検証済み)/対象 OS: Windows / macOS / Linux
eq フィルタ — 明度・コントラスト・彩度の基本補正
最もシンプルなカラー調整フィルタです。
ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=1.2:saturation=1.3:gamma=1.0" output.mp4
| パラメータ | 範囲 | デフォルト | 説明 |
|---|---|---|---|
brightness | -1.0〜1.0 | 0 | 明度(0が変化なし) |
contrast | -1000〜1000 | 1 | コントラスト(1が変化なし) |
saturation | 0〜3.0 | 1 | 彩度(1が変化なし、0はグレースケール) |
gamma | 0.1〜10 | 1 | ガンマ補正(1が変化なし) |
よく使う補正例
明るさを少し上げてコントラストを強める:
ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.3" output.mp4
グレースケールに変換:
ffmpeg -i input.mp4 -vf "eq=saturation=0" output.mp4
curves フィルタ — トーンカーブで細かく補正
S字カーブ(コントラスト強調)の例:
ffmpeg -i input.mp4 -vf "curves=all='0/0 0.25/0.15 0.5/0.5 0.75/0.85 1/1'" output.mp4
all='入力/出力 ...' の形式で制御点を指定します(0〜1の正規化値)。
チャンネル別の調整
赤チャンネルを強調(暖色系に補正):
ffmpeg -i input.mp4 -vf "curves=red='0/0 0.5/0.6 1/1'" output.mp4
青チャンネルを下げる(寒色を弱める):
ffmpeg -i input.mp4 -vf "curves=blue='0/0 0.5/0.4 1/0.9'" output.mp4
プリセットを使う
ffmpeg -i input.mp4 -vf "curves=preset=vintage" output.mp4
利用可能なプリセット: none, color_negative, cross_process, darker, increase_contrast, lighter, linear_contrast, medium_contrast, negative, strong_contrast, vintage
colorbalance フィルタ — シャドウ/ミッドトーン/ハイライトの色調整
シャドウ部の青みを強め(寒色系の暗部)、ハイライト部を少し暖かくする例:
ffmpeg -i input.mp4 -vf "colorbalance=bs=0.1:rs=-0.1:gh=0.1" output.mp4
| パラメータ | 説明 |
|---|---|
rs/gs/bs | シャドウのR/G/B調整(-1〜1) |
rm/gm/bm | ミッドトーンのR/G/B調整 |
rh/gh/bh | ハイライトのR/G/B調整 |
フィルタの組み合わせ
eq と colorbalance を組み合わせた包括的なカラーコレクション:
ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.1,colorbalance=rs=-0.05:bs=0.05" output.mp4
どのフィルタを選ぶか
| やりたいこと | 推奨フィルタ |
|---|---|
| 明度・コントラスト・彩度を手軽に調整 | eq |
| トーンカーブで細かく制御 | curves |
| シャドウ/ミッドトーン/ハイライトを色別に調整 | colorbalance |
| .cubeファイルのLUTを適用 | lut3d |
関連リソース
よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。
関連記事
- 3D LUT でカラーグレーディング — .cube ファイルを動画に適用する
- 動画のシャープネス・ぼかし — unsharp フィルタで鮮明さを調整する
動作確認: ffmpeg 6.1 / Ubuntu 24.04 (GitHub Actions runner) 一次ソース: ffmpeg.org/ffmpeg-filters.html#curves / ffmpeg.org/ffmpeg-filters.html#eq / ffmpeg.org/ffmpeg-filters.html#colorbalance
よくある質問
eq と curves、どちらを使う?
eq は全体の明るさ・コントラスト・彩度の一括調整。curves はハイライト / ミッドトーン / シャドウを独立にシェイプ。実際のカラーグレーディングには curves の方が近い。
ガンマと明るさの違いは?
明るさは線形シフト。ガンマは非線形カーブで、ハイライトと黒を潰さずミッドトーンだけ持ち上げる。一般にガンマの方が自然な見た目に。
補正後の動画が緑っぽくなった
グリーンチャンネルか彩度を強く触りすぎた可能性。一旦リセットして全体に均一に補正をかけ、最後に個別チャンネルを微調整してください。
3D LUT を当てたい
可能です — lut3d は .cube ファイルを受け取ります: ffmpeg -i in.mp4 -vf lut3d=look.cube out.mp4。グレーディング配布の標準形式。
HDR 色は保持される?
単純な eq / curves パイプラインだと HDR ハイライトはクリップします。HDR 素材なら zscale で一旦 linear に → グレーディング → 再度 PQ/HLG に変換、という流れにしてください。