この記事でわかること

  • curves フィルタでトーンカーブ補正を行うコマンド
  • マスターカーブ・RGB個別カーブの指定方法
  • 組み込みプリセット(preset)の一覧と使い方
  • ハイライト・シャドウを独立して調整するテクニック

テスト済みバージョン: FFmpeg 6.1(ubuntu-latest / CI検証済み)
対象 OS: Windows / macOS / Linux


基本コマンド

マスターカーブでコントラストを上げる(S字カーブ)

ffmpeg -i input.mp4 -vf "curves=master='0/0 0.25/0.15 0.5/0.5 0.75/0.85 1/1'" output.mp4

master はすべてのチャンネルに適用されるカーブです。0/0入力値/出力値 の制御点を表します。S字カーブでコントラストが上がります。

赤チャンネルのみ調整する

ffmpeg -i input.mp4 -vf "curves=red='0/0 0.5/0.6 1/1'" output.mp4

redgreenblue で各チャンネルのカーブを個別に指定できます。

組み込みプリセットを使う

ffmpeg -i input.mp4 -vf "curves=preset=vintage" output.mp4

preset に以下のプリセット名を指定できます。


組み込みプリセット一覧

プリセット名説明
none変更なし(デフォルト)
color_negativeネガ反転
cross_processクロスプロセス風
darker全体を暗くする
increase_contrastコントラスト強調
lighter全体を明るくする
linear_contrast線形コントラスト
medium_contrast中程度のコントラスト
negativeネガティブ
strong_contrast強いコントラスト
vintageビンテージ風
ffmpeg -i input.mp4 -vf "curves=preset=cross_process" output.mp4

制御点の書き方

制御点は 入力値/出力値 の形式でスペース区切りで並べます。値の範囲は 0.0(最暗)〜 1.0(最明)です。

master='0/0 0.5/0.7 1/1'
  • 0/0 — 黒(入力0 → 出力0)
  • 0.5/0.7 — 中間トーンを明るく持ち上げる
  • 1/1 — 白(入力1 → 出力1)

FFmpeg は指定した制御点をスプライン補間します。制御点が多いほど細かい調整ができます。


RGB個別カーブを組み合わせる

ffmpeg -i input.mp4 \
  -vf "curves=red='0/0 1/0.9':green='0/0 1/0.95':blue='0/0 0.8/1 1/1'" \
  output.mp4

赤・緑を若干抑え、青のハイライトを持ち上げることで寒色系のグレーディングになります。


プリセット+マスターカーブを組み合わせる

ffmpeg -i input.mp4 \
  -vf "curves=preset=vintage:master='0/0 0.5/0.55 1/1'" \
  output.mp4

preset で基本トーンを作り、master で微調整するワークフローです。


静止画への適用

ffmpeg -i input.jpg -vf "curves=preset=increase_contrast" output.jpg

NG例

NG例: 制御点の順序が昇順でない
ffmpeg -i input.mp4 -vf "curves=master='0/0 0.8/0.3 0.5/0.7 1/1'" output.mp4

制御点の入力値(左の値)は必ず昇順(小→大)で並べてください。順序が逆になるとエラーまたは意図しない結果になります。


注意点

  • curves フィルタは RGB 色空間で動作します。YUV 入力の場合、内部で変換が行われます。
  • 制御点は最低 2 つ(0/x1/y)が必要です。
  • プリセットと個別チャンネルは同時指定できますが、masterpreset は処理順序に注意が必要です。

関連フィルタ

  • hue — 色相・彩度・輝度の調整
  • eq — 明度・コントラスト・ガンマの調整
  • colorbalance — シャドウ・ミッド・ハイライトの色調補正
  • lut3d — 3D LUT によるカラーグレーディング