「可逆圧縮コーデックですか?」
とゆー御質問を頂きました。MotionJPEGなんで非可逆圧縮なんで「違います」と。
「じゃあ劣化しますね。」
と。
あれ?可逆圧縮コーデックは無劣化のような感じで御考えのようですけど、可逆圧縮コーデックでも劣化するケースありますよと。
間違ってますよと。
可逆圧縮とは、エンコード(圧縮)前とデコード(展開)後が同じ状態になる事を言います。ですが、可逆圧縮コーデックにおいて、オリジナルがRGB24の場合、入力フォーマットにYUV420とかI420とかYV12とかの色空間を選択してしまえば、エンコード前に既に劣化されてしまいます。もちろん、設定にもよりまして、入力フォーマットにRGB24やYUV444などの色空間を選択できるコーデックであれば、限りなく無劣化に近いかと思います。
以下にわかりやすい例を書いてみます。
まず、御財布のお金の1万円を両替所で両替しても1万円のままで、何回両替をしても1万円のままというのが「無劣化+可逆圧縮」です。圧縮率と圧縮時間はさておき画質という面ではこれが一番理想的です。
次に、1万円を両替すると7500円になり、さらに両替すると5千円になり、さらに両替すると2500円になるように、段々と減っていくのが「非可逆圧縮」です。NautilusのMotionJPEGはこの非可逆圧縮に該当しますので、エンコードとデコードを繰り返す度に画質が劣化してしまいます。
最後に、1万円を両替すると5千円になり、さらに両替しても5千円のままで、さらに両替しても5千円のまま、というのは「可逆圧縮」になります。オリジナルと比較すると画質は劣化していますが、一定の状態からは画質が劣化しない事が可逆圧縮となります。つまり最初の1万円から5千円への劣化は、入力フォーマットによるエンコード前の画質の劣化とゆー事になります。
このように、可逆圧縮コーデックは入力フォーマットが重要なポイントであると思います。
色んなところで可逆圧縮コーデックが素晴らしい的な事を目にしておりますが、どちらかといいますと無劣化もしくは限りなくオリジナルに近い高画質が素晴らしいのでは無いかと思うのですが、どうも可逆圧縮コーデックが素晴らしいというのはちょっと間違っているような気がしてなりませんが如何でしょうか。そもそも何回もエンコードとデコードを繰り返すシーンもそーそー無いでしょうし、そのケースの場合はオリジナルを保持しているケースが多いでしょうし。
ふと思い出しましたけど、WebMのVP8(非可逆)のヘッダーに沢山の入力フォーマットが記述しているにも関わらず、RGB24とかYUV444とか渡しても対応してませんとか、それはいつになったら対応するのかとゆー事でして、VP9で対応していればひょっとすると無劣化に近い状態になるのでは無いかと期待せざるを得ない状況では御座います。ま、圧縮率が高いのは良しとしまして、そもそもそれ以前にYUV42xで渡して時点で画質は高が知れていると感じてしまうのでは私だけでしょうかと強く言いたい所存で御座います。RGB24→YUV42xの処理ルーチンもちょっとめんどいですし。VP9でダメでもVP10辺りで何とかRGB24が入力フォーマットとして対応する事を強く希望しまする。10歩譲ってYUV444でも。