Brynhildr

KeroRemote

リモートデスクトップエンジニアのブログ。

可逆圧縮。
Nautilusをリリースしまして、結構な数の方に御利用を頂きまして、早速

「可逆圧縮コーデックですか?」

とゆー御質問を頂きました。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でも。




8件のコメント ... ( 管理人承認制 )



TrueRemoteから色々と、利用させてもらっています。
nautilus使用させて頂きました。


使用Codecですが、MotionJPEG以外にも、IフレームのみのH264などは利用されないのでしょうか?


現状でも出力がYUV420になるのならば、H264のロスレスか固定品質などでも出力出来ればもうちょっと出力ファイルの多様性があるのかな、と思います。


ただ、上記のようなCodecにした場合はMKVコンテナにしないと出力できなさそうですが。


また、クリックした時にマウスカーソルにクリックした事を視認させるエフェクト等は入らないでしょうか?


なんとなくでのコメントなので、お時間のあるときにご検討いただけると幸いです。


すいすい  2013/07/16


最後のは非可逆圧縮ですよ。
単に可逆エンコードで非可逆圧縮をしたってだけでしょ?


逆に戻すことが可能な圧縮だから可逆圧縮で、データの欠損が1bitでもあれば可逆に非ずです。


100%に戻せないことを可逆圧縮とは言いません。
lzhやzipを上の10000円の話しに当てはめればオカシイと気付くのでは?


YUVやRGBのようなフォーマットまでを圧縮に含めるから話がズレル訳で、色空間変換を行って欠損が出るなら可逆圧縮でもエンコードは非可逆ってことですよ。
別にエンコードは圧縮するって定義ではないので。


説明が面倒だったのであれば、すみませんスルーしてください。


匿名  2013/07/17


> H.264


MPEG系はライセンス関係があるので内蔵となるとちょっと難しいですね・・・。ロスレスに関しましては次のバージョンアップ辺りでちょっと考えています。


将来的にVFWに対応したコーデックは読み込めるようにしたいとは考えておりますので、x264vfw辺りであれば動くようになると思います。予定は未定ですけど。


> マウスカーソル


不具合で位置がずれてました、すみません・・・。対応したバージョンをリリース致しました。


IchiGeki  2013/07/17


> 最後のは非可逆圧縮


まず、エンコードという言葉は暗号化にも使いますので、圧縮のみに限った定義では無いです。今回はコーデックでの圧縮という事で一例です。


最後のは、結果的にみると画質は劣化しておりますが、圧縮方式は可逆圧縮です。記事内にある通り、色空間変換後に可逆圧縮をしているという事です。色んなところで色空間に触れずに可逆圧縮について記述されており、「可逆圧縮は無劣化」という風に受け取れる印象を受けましたので、あえてこのように記述を致しました。


屁理屈でした、すみませんw


IchiGeki  2013/07/17


IchiGeki様


返信いただきありがとうございます。


>MPEG系はライセンス関係がある
そういえばMPEG LA絡みで内蔵は面倒そうですね。


VFW辺だったら、画質と容量の兼ね合いでGrass Valley HQXを利用出来れば行けそうですね。


さらにはffmpegを内蔵して出力フォーマットを広げる方法もありそうですね。。。無いでしょうか(汗


アマレココ以外に非常に利用できそうなデスクトップキャプチャソフトだと思いますので、今後も頑張って下さい。


すいすい  2013/07/18


> 出力


ユーザーの方によって御希望が異なりますので、あくまでも中間ファイルといった形で考えております。その後、FFMPEGでお好きなコーデックを用いた形式に変換といった事の方が幅が広がりそうな感じがします。ですので、中間ファイル製造という事で、「軽く」「サイズが小さく」「画質が良い」といったスタイルを目指したいと思っております。3つとも向上させるのはかなり困難なのですが出来るだけ足掻いてみたいと思いますw


IchiGeki  2013/07/18


キャプチャという観点から見れば最終出力は何らかのエンコードを行わないと実用的に難しいわけですので当然かなり劣化してしまうのですがどうせなら色空間まで含めて劣化しないフォーマットと最適なエンコードソフトを開発されてみては?


エンコード前の状態であっても出力時に色空間の変換を行うため必ず劣化はしますが元データが全く損失していないと言うのは重要かと思います.


匿名  2013/07/22


> 元データが全く損失していないと言うのは重要


なるほど。確かに最終的に出来るだけ画質を落とさない為にも、録画されたファイルは高画質(or 無劣化)である事は求められそうですね。


次バージョンでは「MPNG」というPNGファイルを連続して出力する無劣化+可逆圧縮での形式を追加致しますので、暫く御待ち下さいませ。


IchiGeki  2013/07/22




... 不具合報告の際は、アプリのバージョンやOS等の動作環境の記載を御願い致します。

表記されている会社名・製品名・システム名などは、各社の商標、または登録商標です。
当サイトはAmazon.co.jpアソシエイトプログラムに参加しています。
Copyright (C) IchiGeki All Rights Reserved.