
左が元の映像、右が hue=h=100:s=1.2 をかけた出力です。色相を 100 度回し、彩度を 1.2 倍にしています。木々は青緑に、肌は緑に、青い袖は紫に変わりました。
素材: Tears of Steel (CC) Blender Foundation | mango.blender.org、CC BY 3.0。映画の1フレームを切り出し、フィルターで加工しています。
基本コマンド
色相を回転させる
ffmpeg -i input.mp4 -vf "hue=h=90" output.mp4
色相は、赤・黄・緑・青といった色の種類を、円の上の角度で表したものです。h=90 で、すべての色を 90 度ずらします。値に範囲の制限はなく、360 度で一周します(h=270 と h=-90 は同じ結果です)。ラジアンで指定するときは H を使います。
彩度を調整する
ffmpeg -i input.mp4 -vf "hue=s=2.0" output.mp4
s は彩度(色の濃さ)の倍率です。デフォルトは 1.0 です。0 で白黒(グレースケール)、2.0 で色が濃くなります。明るさの段階ごとに色を調整したいときは、curves フィルタでトーンカーブ色補正する方法と組み合わせます。
輝度を調整する
ffmpeg -i input.mp4 -vf "hue=b=0.3" output.mp4
b は、明るさ(輝度)に足す値です。-10 から 10 まで指定でき、デフォルトは 0 です。コントラストやガンマも調整したいときは、eq フィルタで明度・コントラストを調整する方法を併用します。
パラメータ一覧
| パラメータ | 説明 | デフォルト | 範囲 |
|---|---|---|---|
h |
色相の回転角度(度) | 0 |
任意(360 で一周) |
H |
色相の回転角度(ラジアン) | 0 |
任意 |
s |
彩度の倍率 | 1 |
-10 〜 10 |
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 の式)も書けます。時間によって変わる値も指定できます。
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
色相を少しマイナス方向に回し、彩度を上げています。黄色や肌の色は赤みが増し、赤はピンク寄りに、青は水色寄りになります。白やグレーは色味が変わらず、b=0.05 のぶん少しだけ明るくなります。
色味を反転する(補色)
ffmpeg -i input.mp4 -vf "hue=h=180" output.mp4
色相を 180 度回すと、それぞれの色が反対側の色(補色)になります。
注意点
hueは YCbCr(YUV)の形式で処理します。RGB の映像を入力すると、hueの前後で形式の変換が入ることがあります。- 彩度(
s)を大きくしすぎると、色の値が上限に張り付き(クリッピング)、色の濃淡がつぶれます。 b(明るさ)は値を足す調整で、掛け算ではありません。コントラストやガンマも調整したいときはeqフィルタを使います。
実測: 処理時間とサイズ
計測したコマンドは次のとおりです。
ffmpeg -i input.mp4 -vf hue=h=30:s=1.2 -c:v libx264 -crf 23 -preset medium -an output.mp4
| 項目 | 実測値 |
|---|---|
| 処理時間 | 27.06 秒(実時間の 4.44 倍速) |
| 出力サイズ | 88.97 MB |
| フィルタなし再エンコードとのサイズ差 | +3.1% |
計測環境: Intel Core i9-14900KF(32スレッド)、FFmpeg 8.1 (gyan.dev)、素材は 1920x1080・30fps・120秒・351.4 MB(Big Buck Bunny のループ、CC BY 3.0)。2026-09-05 に、各計測を1つずつ順に実行。数値はデータセットで公開しています。
数字の読み方
同じ素材・同じ x264 の設定で、フィルタをかけずに再エンコードすると 27.97 秒でした。hue=h=30:s=1.2 を入れると 27.06 秒で、2分の動画が再生時間の 4.44 倍の速さで終わりました。フィルタなしと変わらないので、時間のほとんどはエンコードにかかっています。hue は YCbCr のまま、画素ごとに色の成分を回したり伸ばしたりするだけで、周りの画素を使わないからです。
ただし、色を変えるフィルタがすべて軽いわけではありません。同じ計測で、curves は 42.01 秒、colorbalance と eq を重ねた色補正は 53.29 秒、周りの画素を平均する boxblur は 59.37 秒かかりました。curves と colorbalance は RGB で処理するので、各フレームを RGB に変換して戻す手間がかかります。どちらも出力が 4:4:4(yuv444p)になり、hue のように 4:2:0 のままのときよりエンコードに時間がかかりました。hue は、この中でいちばん軽い部類です。
サイズは 88.97 MB で、フィルタなしより 3.1% 大きくなりました。色相を30度回して彩度を1.2倍にすると、色の成分の分布が変わります。そのため、同じ CRF 23 でも x264 が使うデータ量が少し増えます。この計測はフィルタなしの側も含めて -an で音声を外しているので、映像だけのサイズの比較です。
処理時間を大きく左右するのは、フィルタの種類よりも、再エンコードするかどうかです。同じ計測で、映像を -c copy や -c:v copy(再エンコードせずにそのまま書き写す指定)で済ませる処理は、ストリームのマッピング 0.41 秒、moov アトムの移動 0.49 秒、音声フェード(音声だけ再エンコード)1.03 秒で、どれも1秒前後で終わりました。反対に、VP9 への変換は 729.16 秒かかりました。hue は画素を書き換えるので、-c copy は使えません。再エンコードする以上、27.06 秒からほとんど短くはなりません。処理時間を減らしたいなら、フィルタを軽くするより、色を変えなくてよい作業を -c copy で済ませるほうが効きます。
人の肌が映る実写の映像では、色相を大きく回すとすぐに不自然になります。色を直す目的なら h=-10〜10 くらい、演出でも h=30 前後から試してください。彩度を上げすぎると、赤や青がクリップしやすくなります。s=1.5 を超えるときは、短いサンプルで確認してから使います。
白黒にするだけなら hue=s=0 が手軽です。放送用など、明るさを正確に変換したいときは、format や colorspace を使う方法を検討してください。hue は見た目を調整するためのフィルタで、色管理の代わりにはなりません。
色相を時間で動かすときは、編集を終えた短いクリップで確認してから全体にかけてください。長い動画に強い色の変化を繰り返し入れると、見ている人は効果より違和感を覚えやすくなります。
SNS 向けの短い動画では、サムネイルになるフレームの色も確認します。動画として見ると自然でも、1フレームだけ切り出すと、肌や商品の色が大きくずれて見えることがあります。商品レビュー、料理、メイクの動画など、色の正確さが大事な映像では、hue より eq や curves で控えめに整えるほうが向いています。複数のカメラで撮った映像を混ぜるときは、全部に同じ hue の値をかけず、カメラごとに短いカットで確認してください。
hue は、ホワイトバランス(白を白く見せる調整)のためのフィルタではありません。白いものが全体に青っぽい、室内の照明で黄色っぽい、という映像を色相の回転だけで直そうとすると、ほかの色がくずれます。白やグレーを基準に直すときは、curves の色ごとのカーブや colorbalance を使うほうが自然に仕上がります。
関連フィルタ
eq— 明度・コントラスト・ガンマの調整curves— トーンカーブベースの色補正colorchannelmixer— チャンネル単位のカラーミックスcolorbalance— シャドウ・ミッド・ハイライトの色調補正