この記事でわかること

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

テスト済みバージョン: FFmpeg 6.1(検証スクリプトで実 FFmpeg 実行確認)
対象 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 で鮮やかに。トーンカーブで階調ごとに色を追い込みたい場合はcurves フィルタでトーンカーブ色補正すると組み合わせると効果的です。

輝度を調整する

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

b は輝度オフセットです。範囲は -1010、デフォルトは 0。コントラストやガンマまで含めて整えたい場合はeq フィルタで明度・コントラストを調整するを併用します。


パラメータ一覧

パラメータ説明デフォルト範囲
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 フィルタを使います。

実測例

1080p/30fps、2分の H.264 動画に彩度を少し上げ、色相を15度だけ回転する例です。

ffmpeg -i input.mp4 \
  -vf "hue=h=15:s=1.15:b=0.02" \
  -c:v libx264 -crf 23 -preset medium -c:a copy \
  output.mp4

hue は比較的軽いフィルタですが、映像を変更するため再エンコードは必要です。8コア程度のデスクトップ環境では、処理時間は実時間の1〜2倍程度が目安です。

色相を大きく回すと画面全体の色分布が変わり、同じCRFでもファイルサイズが数%変わることがあります。彩度を上げすぎると圧縮ノイズやバンディングが目立つ場合もあるため、s=1.11.3 程度から確認すると失敗が少ないです。

動的表現の hue=h=120*sin(t/5) は各フレームの色が変わるため、静的な補正より圧縮効率が少し落ちることがあります。環境により変動します。

肌色を含む実写素材では、色相を大きく回すと不自然さがすぐ目立ちます。補正用途なら h=-1010 程度、演出用途でも h=30 前後から確認すると安全です。彩度の上げすぎは赤や青のチャンネルでクリップを起こしやすいため、s=1.5 を超える設定は短いサンプルで確認してから使います。

グレースケール化だけが目的なら hue=s=0 は手軽ですが、放送品質や正確な輝度変換を重視する場合は formatcolorspace を含めたワークフローを別途検討します。hue は見た目の調整に向いたフィルタであり、色管理の完全な代替ではありません。

色相を時間で動かす場合は、カット編集後の短いクリップでプレビューしてから全体に適用してください。長尺動画に強い周期変化を入れると、視聴者にとっては効果より違和感が勝つことがあります。

SNS向けの短尺動画では、サムネイルになるフレームの色も確認しておきます。動画全体では自然に見えても、1フレームだけ切り出すと肌や商品色が大きくずれて見えることがあります。商品レビュー、料理、メイク動画など色の正確さが重要な素材では、hue より eqcurves で控えめに整える方が向いています。

複数カメラを混在させる場合は、各カメラに同じ hue 値を一括適用するのではなく、短い代表カットごとに確認してください。

また、hue はホワイトバランス補正そのものではありません。白い被写体が全体に青い、室内照明で黄色い、という素材では、色相回転だけで直そうとすると別の色が崩れます。白やグレーを基準にする補正では、curves のRGB別カーブや colorbalance を使った方が自然に調整できます。


関連フィルタ

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

関連リソース

よく使うオプション・フィルタ・コーデック設定をまとめた PDF チートシートです。手元に置いておくと調べる時間を短縮できます。

FFmpeg チートシート