山本雅史のソフトウェアコラム
「オープンソースビデオコーデック DivX」お詫びと訂正


●編集部からのお詫びとお断わり

 10月2日掲載の本コラム「オープンソースビデオコーデック DivX」 )の内容について、読者の皆様からご指摘をいただきました。

 ご指摘の内容は多岐に渡りますが、ほとんどの方からご指摘いただいたのは「指定のデータレートを無視して容量の大きくなっているDivxの生成ファイルの画質と、指定のレート通りに生成しているWMV8の生成ファイルの画質を同列に比較することできない」ということでした。

 ご指摘のメールの一つを引用させていただきます(改行以外原文のままです)。


 まず、データレートという言葉の定義ですが、私の理解ではX Mbit/secのデータレートといえば、1秒間にX Mbitのデータ量、ということだと思います。つまり、動画像圧縮でデータレート(ビットレートという言葉のほうが良く使われていると思いますが)がX Mbit/secといえば、1秒間の動画像のデータ量がX Mbitということになります。
 従って、Y秒の長さの画像をX Mbit/secのデータレートで圧縮した場合、ヘッダなどのわずかな付加部分のサイズを無視すれば、ファイルサイズはおのずと決まります(X × Y Mbit)。そして、一般的に圧縮率とは圧縮処理でデータ量が何%になったかを示すものですから、同じ原画像を圧縮した場合には

・データレート(1秒間に何Mbitのデータ量か)
・出来上がったファイルサイズ(データレート×原画像の秒数)
・圧縮率(出来上がったファイルサイズ÷原画像のファイルサイズ)

は全て比例するはずで、指標としては用途に応じてこれらのうちのどれか1つを用いれば十分です。従って、データレートとファイルサイズを併記して両者を比較するのは本来無意味です。ただし、DivXのエンコーダが画質優先で指定のデータレートを守らないという性質があるため、この点を示すためにデータレートとファイルサイズを併記するなら意味があります。しかし、その場合でも「目標データレート」「実データレート」のような形で表記するほうがわかりやすいのではないでしょうか。

 ところで、本評価記事では実験結果から「データレートが高いほど高圧縮」という結論を導き出していますが、これはデータレートと圧縮率が本来比例するものであることから考えておかしいです。DivXの場合、1Mbps(20秒のシーケンスなので、もし目標データレートを守れば20Mbit=2.5MB)に目標データレートを設定しても実際にはその倍以上のデータレートになっているわけで、この時点でこの圧縮データは1Mbpsではありません。「単純に1Mの6倍とはならないのはわかっている」そうですが、データレートを守るならば単純に6倍にならないとおかしいです。

 さらに、結果としてデータレート=ファイルサイズの異なるWMVの画像とDivXの画像を主観画質を比較を行っているのにも意味がありません。比較するなら同一のファイルサイズで比較する必要があります。


 もう一例、引用させていただきます。


 仮に、生成されたファイルがオーディオを含まない生のビットストリームを意味するならば、生成されるファイルのサイズは単純に ビットレート x 時間となります。実際には、符号量制御処理の誤差により数%程度の食い違いが発生する可能性があります。当該記事では素材の時間が20秒と記載されていますので、ビットレートとファイルサイズの理論値は次のようになります。

  512Kbps → 1,280Kbytes
  640Kbps → 1,600Kbytes
  768Kbps → 1,920Kbytes
  1Mbps → 2,560Kbytes
  6Mbps → 15,360Kbytes

 この理論値からどれだけ食い違うかが、CODECの「符号量制御」処理の優秀さの指標とすべきです。DivXは、概ね2Mbps以下の動作点で生成されるファイルのサイズが一定の値へ収束していきますので、これは「DivXは2Mbps以下では符号量制御が破綻している」と捉えるべきです。

 したがって、制御が破綻している1Mbpsでのファイルサイズと、制御が正常に行われている6Mbpsのファイルサイズを比べて「高いレートの効率が良い」とは言えません。

 また、DivXとWMVとで、6Mbpsのファイルサイズを比較していますが、これも再生される画像の品質を見ずに比較しても意味はありません。WMVをDivX並みのファイルサイズにしたければ、例えばビットレートを5.9Mbpsに設定して符号化を行えばよいだけです。その上で、両CODECの画質を議論すべきです。

 次に、「DivXは使えるのか? 」において、当該記事では

> 実際に画像を見てみると、「1Pass」圧縮モードの1Mbpsでも非常に高いクオリティの映像が出来上がっている。

と述べておられますが、この比較も無意味なものとなっています。

 前述のように、DivXでは1Mbpsでの符号量制御が破綻しており、設定されたビットレートよりも相当大きなビットレートで符号化がなされていると判断できます(おそらく2倍程度のレートになっているのでしょう)。このようにしてできた映像と、律儀に1Mbpsを守って生成されたWMVによる映像とを比較すれば、ビットレートの高いDivXの方が高品質になるのは当然です。


 ご指摘に感謝するとともに、原稿の内容をチェックできず、結果的に誤った情報を掲載したことを読者の皆様にお詫び申し上げます。これは、編集部および編集長である私の責任であり、本誌読者および本誌に寄稿していただいている筆者の皆様の信頼を損ねたことを心よりお詫び申し上げます。

 編集部では、これらのご指摘を受け、筆者の山本氏に再度のテストと追加原稿を依頼しました。下記に掲載したものがその追加原稿です。時間が限られており、ご投稿との時間差もありますので、必ずしもすべてのご指摘に応えできているものではありませんが、ご了承くださいますようお願い申し上げます。

 読者の皆様におかれましては、今後ともよろしくご愛読を賜わりますようお願い申し上げます。

(PC Watch編集長 伊達浩二)


 まず、DivXやWMV8は、厳密にMPEG-4規格に従ったコーデックではありません。画像を分析して、独自の圧縮を行なうようになっています。このあたりに各種のコーデックの開発ポリシーが現れるのだと思います。

 DivXは、圧縮率よりも、画像のクオリティを優先しています。このため、1Pass圧縮で1Mbps以下のデータレートを指定すると、出来上がったファイルはデータレートに関係なく、どれも同じファイルサイズになります。他のコーデックであれば、ユーザーが指定したデータレートどおりに圧縮するため、このようなことはありえないはずです。DivXは、コーデックが画像を分析した結果に基づき、ユーザーが指定したデータレートを無視しても画質を優先して圧縮するのです。

 再度のテストで使用した映像では、データレート1.5Mbpsあたりにポイントがありました。これ以下のデータレートでは、作成されるデータ量は変わりません。また、ほとんど動きのない映像をDivXで圧縮した場合は、ポイントとなるデータレートは640Kbpsあたりになりました。このようにDivXでは、映像の種類によって指定したデータレートを無視するポイントが変化します。


 本文では「DivXで圧縮した場合、データレート1Mbpsでファイルサイズが5.6MBに、データレート6Mbpsでファイルサイズが14.8MBになり、データレートが6倍になったにもかかわらずファイルサイズは2.6倍に抑えられている」と述べました。しかし、データレートの指定が無視されている1Mbpsで比較するのではなく、指定したデータレートで圧縮される2Mbps以上で比較すべきでした。その結果をまとめたのが次の表です。

. データレート2Mbps時の
ファイルサイズ(単位:KB)
データレート6Mbps時の
ファイルサイズ(単位:KB)
DivX (1Pass [Slowest]) 6,204 14,812
WMV8 5,189 15,558

 DivXでは6Mbpsのファイルサイズは、2Mbpsの約2.38倍となっています。WMV8では約2.99倍です。


データレートとファイルサイズの関係
 「あるデータレートで圧縮したときのファイルサイズ」には、データレートごとに理論値があります。理論値は「データレート×映像の秒数÷8」で算出できます。右のグラフに、20秒の画像の理論値と、DivXとWMV8で圧縮したときの実際のファイルサイズをまとめてあります。

 データレートの理論値と照らし合わせると、DivXとWMV8ともに理論値を上回るような圧縮率を出しているわけではありませんでした。WMV8では、すべてのデータレートにおいて、理論値に近いファイルサイズとなりました。DivXでは、1Passで1Mbps以下のデータレートを指定しても無視し、データレート2Mbpsまでは理論値よりもファイルサイズが大きくなっています。しかし、3Mbps以上では理論値とそれほど離れたファイルサイズにはなっていませんでした。また、DivXにおいて2Passを指定すると、2Mbps以上でも理論値に近いファイルサイズになっています。

 これらの結果から、DivXは他のコーデックと比べて「ずば抜けて圧縮率が高い」のではなく、「高データレートでの圧縮率が若干よさそう」だとすべきでした。


 また、画質に関して「実際に画像を見てみると1Pass圧縮モードの1Mbpsでも非常に高いクオリティの映像が出来上がっている」と述べました。しかし、前述のようにDivXの1Mbpsでは指定したデータレートで圧縮されていません。このため、ユーザーが指定したデータレートで圧縮されている2Mbps以上で、DivXとWMV8を比較すべきでした。そこで、DivXの2PassとWMV8で、データレート2Mbpsで圧縮した画像を比較してみます。

DivXで圧縮した動画ファイル
5,056KB
再生にはDivXコーデックのインストールが必要です
WMV8で圧縮した動画ファイル
5,189KB

 2Mbpsの画像をDivXとWMV8で比較してみると、DivXのほうがクリアに見えます。左下にあるロゴに関しても、DivXでは文字が読めるほどです。画質に関しては、個人の主観が入り込みますが、筆者は、2Mbps以上はDivXの方が綺麗と感じました。ちなみに、DivX(2Pass)のファイルサイズが5,056KB、WMV8が5,186KBとなっています。


 このようなことから、DivXは指定したデータレートが無視されていない場合は、クオリティの高い映像が圧縮できると判断しました。問題点としては、ユーザーが指定したデータレートを無視して、勝手にファイルサイズを大きくすることにあります。このあたりは、指定したデータレートどおりに圧縮しない場合は警告などを出し、どのくらいのデータレートで処理しているかを明示してほしいと思います。もしくは、画像のクオリティを優先するのではなく、データレートを優先するような選択肢があってもいいのでは、と思います。

(2001年10月4日)

[Reported by 山本雅史]


【PC Watchホームページ】


ウォッチ編集部内PC Watch担当 pc-watch-info@impress.co.jp

Copyright (c) 2001 impress corporation All rights reserved.