
左が元の映像、右が eq=brightness=0.10:contrast=1.35:saturation=1.6 をかけた出力です。明るさ・コントラスト・彩度をまとめて上げています。
素材: Tears of Steel (CC) Blender Foundation | mango.blender.org、CC BY 3.0。映画の1フレームを切り出し、フィルターで加工しています。
基本コマンド
明度を上げる
ffmpeg -i input.mp4 -vf "eq=brightness=0.1" output.mp4
brightness は明るさです。-1.0 から 1.0 までの値を指定でき、デフォルトは 0 です。プラスの値で明るく、マイナスの値で暗くなります。eq・curves・colorbalance の使い分けは、FFmpegのカラーコレクション総合ガイドを参照してください。
コントラストを上げる
ffmpeg -i input.mp4 -vf "eq=contrast=1.5" output.mp4
contrast は -1000.0 から 1000.0 まで指定でき、デフォルトは 1 です。1 で変化なし、値が大きいほどコントラストが強くなります。明るい部分と暗い部分を別々に調整したいときは、curves フィルタでトーンカーブ補正する方法を使います。
ガンマ補正する
ffmpeg -i input.mp4 -vf "eq=gamma=1.5" output.mp4
ガンマは、主に中間から暗い部分の明るさを変える設定です。gamma は 0.1 から 10.0 まで指定でき、デフォルトは 1 です。1 で変化なし、1 より大きいと暗い部分と中間が明るくなり、1 より小さいと暗くなります。
彩度を調整する
ffmpeg -i input.mp4 -vf "eq=saturation=1.5" output.mp4
saturation は彩度(色の濃さ)です。0.0 から 3.0 まで指定でき、デフォルトは 1 です。0 で白黒(グレースケール)になり、1.5 で色が濃くなります。
パラメータ一覧
| パラメータ | 説明 | デフォルト | 範囲 |
|---|---|---|---|
contrast |
コントラスト | 1.0 |
-1000 〜 1000 |
brightness |
明度オフセット | 0.0 |
-1.0 〜 1.0 |
saturation |
彩度倍率 | 1.0 |
0.0 〜 3.0 |
gamma |
ガンマ補正 | 1.0 |
0.1 〜 10.0 |
gamma_r |
赤チャンネルのガンマ | 1.0 |
0.1 〜 10.0 |
gamma_g |
緑チャンネルのガンマ | 1.0 |
0.1 〜 10.0 |
gamma_b |
青チャンネルのガンマ | 1.0 |
0.1 〜 10.0 |
gamma_weight |
ハイライト保護の重み | 1.0 |
0.0 〜 1.0 |
複数パラメータを同時指定する
ffmpeg -i input.mp4 -vf "eq=brightness=0.05:contrast=1.2:saturation=1.3:gamma=1.1" output.mp4
コロン(:)で区切ると、複数の設定を一度に指定できます。
チャンネル別ガンマ補正でホワイトバランスを調整する
ffmpeg -i input.mp4 -vf "eq=gamma_r=0.9:gamma_g=1.0:gamma_b=1.1" output.mp4
赤のガンマを少し下げ、青を上げると、青っぽい冷たい色味になります。
グレースケール変換
ffmpeg -i input.mp4 -vf "eq=saturation=0" output.mp4
saturation=0 にすると、白黒(グレースケール)になります。
動的パラメータ(時間で変化)
eq の値には、計算式(FFmpeg の式)も書けます。
ffmpeg -i input.mp4 -vf "eq=brightness='0.1*sin(t)':eval=frame" output.mp4
t は、そのフレームの再生時刻(秒)です。明るさが波のように上がったり下がったりします。eval=frame は、式をフレームごとに計算し直す指定です。付けないと式は最初に 1 回だけ計算され、明るさは時間で変わりません。
実用的な補正例
暗い映像を明るく補正する
ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=1.1:gamma=1.3" output.mp4
色あせた映像を鮮やかにする
ffmpeg -i input.mp4 -vf "eq=saturation=1.4:contrast=1.15" output.mp4
映像に硬質感を出す(シネマ風)
ffmpeg -i input.mp4 -vf "eq=contrast=1.2:saturation=0.85:gamma=0.95" output.mp4
NG例
NG例: saturatoin (スペルミス)
ffmpeg -i input.mp4 -vf "eq=saturatoin=1.5" output.mp4
設定名のつづりを間違えると、Error applying option 'saturatoin' to filter 'eq': Option not found というエラーで止まります。
hue フィルタとの違い
| 機能 | eq |
hue |
|---|---|---|
| 明度 | ✓(オフセット) | ✓(オフセット) |
| コントラスト | ✓ | ✗ |
| ガンマ | ✓ | ✗ |
| 彩度 | ✓ | ✓ |
| 色相回転 | ✗ | ✓ |
明るさ・コントラスト・ガンマの調整には eq、色相を変えるには hue を使います。
実測: 処理時間とサイズ
計測したコマンドは次のとおりです。
ffmpeg -i input.mp4 -vf eq=brightness=0.1 -c:v libx264 -crf 23 -preset medium -an output.mp4
| 項目 | 実測値 |
|---|---|
| 処理時間 | 27.07 秒(実時間の 4.43 倍速) |
| 出力サイズ | 86.26 MB |
| フィルタなし再エンコードとのサイズ差 | 0% |
素材は 1920x1080 / 30fps / 120 秒 / 351.4 MB(Big Buck Bunny をループ、CC BY 3.0)。計測環境は Core i9-14900KF(32スレッド)、FFmpeg 8.1(gyan.dev)、2026-09-05、各コマンドを1つずつ順に実行。数値はデータセットで公開しています。
なぜこの数字になるのか
同じ回に、フィルタをかけずに再エンコードした時間(ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -an output.mp4)は 27.97 秒でした。eq を入れた 27.07 秒は、これより長くなっていません。この 27 秒は、ほぼすべて libx264 のエンコードにかかった時間です。eq は画素ごとに値を足し引きするだけで、周りの画素も前後のフレームも使いません。そのため、処理時間の差として表れません。
同じ素材・同じエンコード設定で計ったほかのフィルタは、curves が 42.01 秒、色補正(colorbalance と eq の組み合わせ)が 53.29 秒、boxblur=10:3 が 59.37 秒でした。boxblur は周りの画素を使います。curves と colorbalance は RGB で処理するので、各フレームを RGB に変換して戻す手間がかかります。どちらも出力が 4:4:4(yuv444p)になり、4:2:0 よりエンコードに時間がかかりました。eq は YUV のまま処理して 4:2:0 を保つので、時間は増えません。
サイズも 86.26 MB で、フィルタなしとの差は 0% でした。brightness=0.1 は明るさを一律に上げるだけで、細部(ディテール)は増えません。そのため、同じ CRF なら x264 が使うデータ量も変わりませんでした。暗い部分を持ち上げるとノイズが見えてサイズが増える、ということも、この補正量では起きませんでした。計測したのは brightness=0.1 の場合だけです。
-c copy は使えない
同じ回に計った、映像を再エンコードしない処理は、ずっと速く終わりました。ストリームの入れ替えが 0.41 秒、moov アトムの移動が 0.49 秒、音声フェード(映像はコピー)が 1.03 秒で、どれも 1 秒前後です。eq は画素を書き換えるので、-c:v copy(映像をそのまま書き写す指定)は使えません。必ず 27 秒ほどかかる再エンコードになります。eq を入れても遅くならないのは eq の処理が軽いからで、フィルタ処理がどれも軽いわけではありません。明るさだけを直す場合でも、動画全体の再エンコードが必要です。
計測したコマンドは -an で音声を外しているので、86.26 MB は映像だけのサイズです。-c:a copy で音声を残すと、その分だけ大きくなります。
つまずきやすいポイント
-
Option not foundのエラーになる:saturatoinのような、設定名のつづり間違いが原因です。brightness・contrast・saturation・gammaのつづりを確認してください。上のパラメータ一覧の名前をコピーして使うと確実です。 -
明るくしたら白飛びがひどい:
brightnessを上げすぎて、明るい部分が 255 に張り付いています。brightnessは小さめ(0.03〜0.05)にして、gamma=1.1を組み合わせてください。gammaは白をほとんど動かさずに暗い部分と中間を明るくするので、白飛びしにくくなります。 -
式
brightness='0.1*sin(t)'を書いたのに、明るさが時間で変わらない:eqは、標準では式を最初に 1 回しか計算しません。:eval=frameを付けて、フレームごとに計算させてください。 -
再エンコードに時間がかかる、
-c:v copyが使えない:eqは画素を書き換えるフィルタなので、必ず再エンコードになります。音声は-c:a copyでそのまま残します。画質は、まず短い区間でcrfを調整してから全体にかけます。
よくある質問
Q. brightness と gamma はどう違いますか。
A. brightness は全体に同じ値を足すので、暗い部分も明るい部分も同じだけ動きます。gamma は、主に中間から暗い部分を持ち上げたり(>1)、沈めたり(<1)します。明るくしたいときは、gamma のほうが不自然になりにくいです。
Q. グレースケールにするいちばん簡単な方法は。
A. eq=saturation=0 です。色の情報がすべてなくなります。
Q. ホワイトバランスを調整できますか。
A. gamma_r・gamma_g・gamma_b の色ごとのガンマで、ある程度は補正できます。赤を下げて青を上げると冷たい色味に、その逆で暖かい色味になります。
Q. contrast の範囲が広い(-1000〜1000)のはなぜですか。
A. 指定できる範囲がそう決まっているだけです。実際には 0.8〜1.5 くらいで足ります。極端な値にすると、すぐに不自然な映像になります。1 が変化なしです。
Q. eq と curves はどちらを使うべきですか。
A. 全体の明るさ・彩度・ガンマを少しずつ動かすなら、eq が手軽です。明るい部分と暗い部分を別々に調整するなど、細かく調整したいなら curves を使います。
関連フィルタ
hue— 色相・彩度・輝度の調整curves— トーンカーブベースの色補正colorbalance— シャドウ・ミッド・ハイライトの色調補正