ffmpeg で色調整あれこれ

A needle in a haystack ちぅんかね。

ffmpeg な情報が見つけにくかったり伝えにくかったりするのはまさしく この一枚岩ドキュメントから目的のものを簡単に探り当てられないからだ。だから「ふつー簡単に決まっておろーが」てタイプのトピックでも、大抵気が滅入ってしまう。

もう作り出してから数日経ってるんだけどさ、こんなん作った:

実はまだ2つ書くつもりで書いてないのがある(selectivecolor と pseudocolor)けれど、ただ今置いてあるものだけあれば、ほぼ日常用途での色調整は自在に出来るだろうと思うのでね、今このタイミングで周知しちゃおうかと。


05:00追記:
pseudocolor をやりかけて果てた、というか紹介することそのものをこれはやめたほうがいい、ヒドいシロモノ。

そもそもまずドキュメントが語ることと振る舞いが全く違う。ドキュメントの説明を信じるなら、以下で in と out は identical であるはずだ:

ffmpeg 4.x でしか使えないみたいだがそれは本題じゃない
1 [me@host: ~]$ ffplay -vf "pseudocolor=c0=val:c1=val:c2=val:c3=val" in.mp4

ここから既に違う。in とは別物になって飛び出てくる。なので ffmpeg ドキュメントにやたら多い「基礎をおろそかにして超絶複雑怪奇ですげーだろ言いたそうな」Examples (Change too high luma values to gradient)をガン見。どうやら else 相当の部分に -1 を置いてるらしい。とするならば:

こんな仕様、むろんどこにも書かれてない
1 [me@host: ~]$ ffplay -vf "pseudocolor=c0=-1:c1=-1:c2=-1:c3=-1" in.mp4

こうすればなぜか入力と同じものが飛び出てくる。「じゃぁどないせいちゅうんじゃ」。Windows 版だけ壊れているとか、YUV / RGB 関連の何かなのか、という「感触」があるならがんばるところだが、「-1」の発覚で、間違いなくこのどちらでもない。つまり *nix だろうがなんだろうが同じ、はず。これは存在そのものを忘れた方がいいね、今のところ。


12日00:00追記:
selectivecolor のも入れといた。使いやすいねこれ。「the Adobe Photoshop Selective Color tool」のもどきなんだそうだ。

あとしょっぱなの colorbalance のが説明不足過ぎたので、簡単な説明を入れたものに差し替えといた。

一応これで「色調整」なトピックはおしまい、のはず。後から気付いたものがあったら追加するかもしれんけれど、いまのとここれしか見つけてないし、たぶんこれしかないと思う。


12日03:30追記:
げ。まだあった。curves。なんとなく使い勝手がよさげにみえる。あとでやってみる。


12日08:40追記:
curves のも作った。使いやすい、と思う。思うけれど、マニュアルで制御する場合、要はこの「a natural cubic spline interpolation」な曲線が自分で脳内再生出来る「なら」簡単、というシロモノね。本来 GUI で影響を即座にフィードバックされんと、ちょいとキツいんだろうなぁ。

にしても gnuplot なんて20年以上ぶりに使った。こいつ、「前時代的」ではあろうと、使いにくいというわけではないんだよな。「データ手持ち、すわ、グラフぞ」という状況なら実は一番迅速にグラフに出来る手段だったりする。出来ることが「リッチじゃない」だけのことであって。(リッチじゃなかった、なのかな? 今は色々出来たりすんの?)


12日08:50追記:
うーん、終わりだと思ったんだけどなぁ。まだ最低でも eq があった。

まぁ致し方がないことなんだけれど、目的はほぼ同じでも少しずつアルゴリズムやら向いている対象の違いやらで、似たようなものがたくさんあるわけよねぇ。ユーザとしてはどれを使ったものやら、てことにはなるんだけれど、まぁ「とりあえず生」てことなら「簡単なもの優先」だよな、ふつー。楽にコントロール出来そうだと思うものをまずは選んでみろや、てことだわな。


12日15:10追記:
eq についてもやっといた。どうやらあとはないらしい。

とはいえ、カテゴライズが微妙で「色調整とも言える」やつならいないこともない。histeq だの normalize だのって、結局のところは色を補正するとも言えるわけで。これらをこのプレイリスト内で書くかどうかってなると…、微妙だ。