この記事でわかること
hueフィルタで色相(Hue)・彩度(Saturation)・輝度(Brightness)を変更するコマンド- 各パラメータ
h・s・bの意味と値の範囲 - グレースケール変換への応用
hue式で動的に色を変化させる方法
テスト済みバージョン: FFmpeg 6.1(ubuntu-latest / CI検証済み)
対象 OS: Windows / macOS / Linux
基本コマンド
色相を回転させる
ffmpeg -i input.mp4 -vf "hue=h=90" output.mp4
h=90 は色相を 90 度回転させます。値の範囲は -180 〜 180(またはラジアン指定も可能)。
彩度を調整する
ffmpeg -i input.mp4 -vf "hue=s=2.0" output.mp4
s は彩度の倍率です。デフォルトは 1.0、0 でグレースケール、2.0 で鮮やかに。
輝度を調整する
ffmpeg -i input.mp4 -vf "hue=b=0.3" output.mp4
b は輝度オフセットです。範囲は -10 〜 10、デフォルトは 0。
パラメータ一覧
| パラメータ | 説明 | デフォルト | 範囲 |
|---|---|---|---|
h | 色相の回転角度(度) | 0 | -180 〜 180 |
H | 色相の回転角度(ラジアン) | 0 | 任意 |
s | 彩度の倍率 | 1 | 0.0 〜 10.0 |
b | 輝度のオフセット | 0 | -10 〜 10 |
h と H は同時に指定できません。どちらか一方を使います。
複数パラメータを同時指定する
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— シャドウ・ミッド・ハイライトの色調補正