eq フィルタの適用前後の比較。左が元の映像、右は brightness=0.10 contrast=1.35 saturation=1.6 を適用して明るく色が濃くなった状態

左が元の映像、右が 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 — シャドウ・ミッド・ハイライトの色調補正