この記事でわかること
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
red、green、blue で各チャンネルのカーブを個別に指定できます。
組み込みプリセットを使う
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/xと1/y)が必要です。 - プリセットと個別チャンネルは同時指定できますが、
masterとpresetは処理順序に注意が必要です。
関連フィルタ
hue— 色相・彩度・輝度の調整eq— 明度・コントラスト・ガンマの調整colorbalance— シャドウ・ミッド・ハイライトの色調補正lut3d— 3D LUT によるカラーグレーディング