この記事でわかること

  • hue フィルタで色相(Hue)・彩度(Saturation)・輝度(Brightness)を変更するコマンド
  • 各パラメータ hsb の意味と値の範囲
  • グレースケール変換への応用
  • hue 式で動的に色を変化させる方法

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


基本コマンド

色相を回転させる

ffmpeg -i input.mp4 -vf "hue=h=90" output.mp4

h=90 は色相を 90 度回転させます。値の範囲は -180180(またはラジアン指定も可能)。

彩度を調整する

ffmpeg -i input.mp4 -vf "hue=s=2.0" output.mp4

s は彩度の倍率です。デフォルトは 1.00 でグレースケール、2.0 で鮮やかに。

輝度を調整する

ffmpeg -i input.mp4 -vf "hue=b=0.3" output.mp4

b は輝度オフセットです。範囲は -1010、デフォルトは 0


パラメータ一覧

パラメータ説明デフォルト範囲
h色相の回転角度(度)0-180 〜 180
H色相の回転角度(ラジアン)0任意
s彩度の倍率10.0 〜 10.0
b輝度のオフセット0-10 〜 10

hH は同時に指定できません。どちらか一方を使います。


複数パラメータを同時指定する

ffmpeg -i input.mp4 -vf "hue=h=45:s=1.5:b=0.1" output.mp4

コロン(:)で区切って複数のパラメータを同時に指定できます。


グレースケール変換

彩度を 0 にすることでグレースケール変換が可能です。

ffmpeg -i input.mp4 -vf "hue=s=0" output.mp4

同等の結果は colorchannelmixer フィルタでも得られますが、hue=s=0 が最もシンプルです。


動的な色相変化(アニメーション表現)

hue フィルタでは FFmpeg 式(expression)を使って時間で変化するパラメータを指定できます。

ffmpeg -i input.mp4 -vf "hue=h=120*sin(t/5)" output.mp4

t は現在のタイムスタンプ(秒)です。上記は色相が時間とともに正弦波状に変化します。


静止画への適用

ffmpeg -i input.jpg -vf "hue=h=180:s=1.2" output.jpg

動画だけでなく静止画にも適用できます。


よくある使い方の例

暖色系に補正する

ffmpeg -i input.mp4 -vf "hue=h=-15:s=1.2:b=0.05" output.mp4

色相を少しマイナス方向に回転し、彩度を上げることで暖かみのある仕上がりになります。

色味を反転する(補色)

ffmpeg -i input.mp4 -vf "hue=h=180" output.mp4

色相を 180 度回転させると補色になります。


注意点

  • hue フィルタは YCbCr 色空間で動作します。RGB 変換を伴う処理には hue の前後で色空間の変換が行われる場合があります。
  • 彩度(s)に大きな値を指定するとクリッピングが発生し、色が飽和します。
  • b(輝度)は加算オフセットであり、乗算ではありません。乗算したい場合は eq フィルタの brightness を使います。

関連フィルタ

  • eq — 明度・コントラスト・ガンマの調整
  • curves — トーンカーブベースの色補正
  • colorchannelmixer — チャンネル単位のカラーミックス
  • colorbalance — シャドウ・ミッド・ハイライトの色調補正