山本雅史のソフトウェアコラム
オープンソースビデオコーデック DivX

【お詫びと訂正】
 本稿の内容につきましては、一部事実と反する部分がございます。
 申し訳ございませんが、下記の訂正記事と合わせてお読みくださいますようお願い申し上げます。

オープンソースビデオコーデック DivX お詫びと訂正
http://pc.watch.impress.co.jp/docs/article/20011004/software.htm


 ソフトウェアをテーマにした不定期コラムです。今回は3月7日のコラム「MPEG-4ベースのオープンソースコーデック OpenDivx」の続編をお送りします。(編集部)


 春に紹介したMPEG-4ベースでオープンソースのビデオコーデック「DivX」が正式版となった。今回は、Divxでの動画の圧縮率やエンコード時間、クオリティなどをチェックしていく。

●DivXとは?

 簡単にDivXコーデックのおさらいをしてみよう。DivXの前身は「DivX;-)」という非オープンソースのコーデックだった。「DivX;-)」は、マイクロソフト社のMS-MPEG-4 V3をベースにハッキングして開発されたといわれていた。また、DivX;-)コーデックは、MS-MEPG4 V3よりも高い圧縮率と高いクオリティを持っていた。このため、ビデオやDVDのコンテンツをDivX;-)でエンコードした動画ファイルが、インターネット上のフリーディスクスペースに違法にアップされるといった事も起きていた。

 このような状況において、ハッキング疑惑を持たれないオープンソースソフトとして1から開発し直されたのが、今回紹介するDivXコーデックだ。

 DivXの特徴は、低データレートへの圧縮よりも、オリジナルデータを美しく圧縮するのに主眼が置かれていること。このため、作成されるデータ量はWindows Media Video(WMV)などに比べると大きくなる。開発者側は、最近のブロードバンドの普及を念頭に、低データレートにデータを圧縮するよりも、高画質な映像を美しいまま、どれだけ圧縮できるかというのを新しいDivXコーデックのテーマにしている。さらに、「マルチプラットフォーム」を志向しており、Linux、Macintosh、PocketPCなど、さまざまなプラットフォームに移植されている。

 ちなみにDivXを開発したチームは、DivXコーデックを利用したDVDクオリティの映像配信システム「Open Video System」を開発・販売するために、DivXNetwork( http://www.divxnetworks.com/ )を設立した。DivXNetworkでは、SecureMediaの暗号テクノロジーを採用し、コンテンツが違法にコピーされないようにDigital Rights Management(DRM)機能が構築されている。このシステムを、アダルトビデオをネットワーク配信するStrand Releasing( http://www.strandreleasing.com/ )が採用し、アダルトコンテンツをネットワーク上で販売しようとしている。これは、4ドル95セントでダウンロード後5日間だけ再生でき、5日間を過ぎれば再生できなくなるというものだ。

●DivXの再生

 現在、DivXに関するウェブサイトは、コーデックのコア部分を開発するProject Mayo( http://www.projectmayo.com/ )と、完成したDivXコーデックなどを配布するdivx.com( http://www.divx.com/ )に分かれている。リリース版のコーデックなど、さまざまな情報はdivx.comに集まっている。今回紹介するWindows版のDivXコーデックもdivx.comからダウンロードした。ダウンロードしたEXEファイルを実行すれば、自動的にDivXコーデックがインストールされる。なお、DivXはDirectX 7/8対応なので、動作にはDirectX 7または8が必要になる。

 現在、Windows版のDivXコーデックはVer4.01で、正式リリース(Ver4.0)から若干バグが修正されている。さらに、オープンソースで開発されたプレーヤーソフト「Playa」も用意されている(やや動作が不安定だが)。しかし、DivXコーデックをインストールしてあれば、Windows Media Playerでも再生できるので、Playaはなくても問題ない。

 DivXコーデックはストリーミングに対応していない。このため、DivXコーデックで圧縮されたファイルは、ダウンロードして一旦ローカルに置いてからしか再生ができない。さらに、MPEG-4をベースにはしているが、DivXで圧縮されたファイルはDivXコーデックをインストールしたPCでしか再生できない。

●DivXでの圧縮

 DivXコーデックは、再生と圧縮の両方の機能を持っている。しかし、圧縮用アプリケーションは用意されていない。このため、既存のエンコーディング・ソフトが必要になる。

 今回は、MPEGのエンコードを行なうソフト「TMPGEnc」のベータ版( http://www.tmpgenc.com/j_main.html )を使用した。今回は、TMPGEncにAVIファイルを取り込み、TMPGEncが持つMPEG-1/2エンコーダではなく、DivXコーデックを使って圧縮する(「ファイル」メニュー→「ファイルへの出力」→「AVIファイル」で、「映像を出力」の「設定」ボタンをクリックし、「圧縮プログラム」にDivXコーデックを指定する)。

 さらに、DivXコーデックは、ビデオをMPEG-4に圧縮するため、オーディオ・コーデックはサポートしていない。このため、DivXコーデックとは別に、MP3などのAudioコーデックを利用することになる(TMPGEncでは上記「映像を出力」の下にある「音声を出力」で設定できる)。

●3つの圧縮モード

 DivXには、次の3つの圧縮モードがある。

1Pass 通常の圧縮モード
1Pass Quality Based クオリティを重視した圧縮モード。フレームごとに圧縮する方法を採用。フレーム間の圧縮は使用していない
2Pass 1度目の圧縮フェーズで、各シーンにおける動きなどをチェック。2度目の圧縮フェーズで、チェックしたデータを利用して、高いクオリティでデータ量を小さくできる

 また、すべての圧縮モードにおいて、次の4つのパラメータを選択できる。

Performance/Quality 圧縮の速度。「Slowest」がもっとも時間がかかるが、画像のクオリティが高い
Max CPU usage 圧縮に、CPUパワーを何%利用するかを設定
Deinterlace インターレス画像をノンインターレース画像(プログレッシブ)に変換。TV画像は、奇数フィールドと偶数フィールドの2つのフィールドで1枚の画像を作り上げている。このため、PC上に表示すると走査線が見える場合がある。このオプションで偶数フィールドと奇数フィールドの画像を1枚の画像に変換し、見やすくする。キャプチャーしたTV番組などに使うといい
Decoding postprocessing level 再生時に利用するパラメータ(圧縮時には関係ない)。画像がブロック化するのを再生時に平準化する。このパラメータを5、6に設定すると、アニメを圧縮したときに起こる色のブロック化を平準化できる

 各圧縮モードの設定方法は次の通りだ。

・1Pass圧縮モード
 1Pass圧縮モードでは、1秒間のデータレートを指定する。これにより映像のクオリティがだいたい決定する。

 1Pass圧縮モードでは、DivXコーデックのコンフィグレーション画面の右側で、いくつかのパラメータが設定できる。標準では、デフォルトのパラメータで十分高い画質になる。逆に、内容をよく理解せずにこの数値を変更すると、最良の結果を得られない。圧縮するときにベースにするキーフレームの、最大フレーム数も設定できるが、これもデフォルトのままでOKだ。

・1Pass Quality Based圧縮モード
 1Pass Quality圧縮モードは、フレームごとに圧縮するため(動画に対応したモーションJPEGのようなもの)、パラメータはPerformance/Qualityのみを指定する。

・2Pass圧縮モード
 2Pass圧縮モードは、最初に「2Pass First Pass」を選択する。First Passでは、1Pass圧縮モードと同じパラメータの設定が行なえる。First Passを終了すると、画像データをリファレンス化したインデックスファイルが作成される。First Passだけでは圧縮した映像を出力しない。インデックスファイルがあるディレクトリで「2Pass Second Pass」を実行すると初めて、映像が出力される。

●高データレートで際立つ、DivXの圧縮率の高さ

 今回は、カノープスから発売されているビデオ素材を、DivXコーデックの各圧縮モードでパラメータを変えながら圧縮し、圧縮にかかった時間と、圧縮後のファイルサイズを比較してみた。比較のため、Windows Media Video 8(WMV8)でも圧縮してある(エンコーディング・ソフトにはWindows Media Encoder7.1を使用)。 オリジナルのビデオ素材は、720×480のハイクオリティな映像だ(DV圧縮:20秒で約74MB)。

 すべての結果はこの表の通りになったが、注目すべき点をピックアップして見てみよう。

 まず、1PassのSlowest(1Passでクオリティがもっとも高いモード)で、データレートをいくつか変更して圧縮してみた。

. データレート
(ビット)
ファイルサイズ
(バイト)
圧縮時間
1Pass [Slowest] 512K 5679K 53秒
640K 5679K 53秒
768K 5679K 53秒
1M 5679K 53秒
2M 6204K 53秒
3M 7825K 54秒
4M 10022K 56秒
5M 12389K 57秒
6M 14812K 59秒
WMV8 512K 1351K 1分12秒
640K 1682K 1分13秒
768K 2013K 1分14秒
1M 2613K 1分17秒
6M 15558K 1分37秒

 1Mbps以下では作成されるファイルのファイルサイズが全く変わっていないのがわかる。DivXコーデック側で、クオリティを優先するため、低データレートでは圧縮できないようになっているようだ。

 データレートごとのファイルサイズを見てみると、DivXコーデックでは高データレートであるほど圧縮率が高いことがよくわかる。データレート1Mbps(ファイルサイズ5.6MB)と6Mbps(ファイルサイズ14.8MB)では、ファイルサイズが2.6倍に抑えられている。単純に1Mの6倍とはならないのはわかっているが、高データレートでは他のコーデックよりも圧縮率が高い。WMV8では、データレート6Mbps(ファイルサイズ15.5MB)では、1Mbps(ファイルサイズ:2.6MB)の約6倍となったのだ。

 次に、1PassのSlowestとFastについて、データレート1Mbpsで比較してみよう。エンコード時間は、1PassのSlowestとFastでは、さすがにFastの方が14秒速い。しかし、作成されるファイルサイズは、FastがSlowestの1.6倍になってしまうのがわかる。

. データレート
(ビット)
ファイルサイズ
(バイト)
圧縮時間
1Pass [Slowest] 1M 5679K 53秒
1Pass [Fast] 1M 9111K 39秒

●DivXは使えるのか?

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

DivX(1Pass Slowest/1Mbps)
ファイルサイズ5.54MB 動画
WMV8 (1Mbps)
ファイルサイズ2.55MB 動画
録画テスト用素材として、カノープス株式会社の動画素材集「CREATIVECAST Professional」(標準価格19,800円)を使用しています
 特に、画面の右下に出てくる映像のロゴマークの文字などもクリアに見ることができるのには驚いた。また、MPEGにおいて出易いブロッキングノイズも少なくなっている。

 クオリティとファイルサイズを考えれば、もっともベストな選択は「2Pass」だろう。2回エンコードを繰り返さなければならないので手間と時間がかかるが、ファイルサイズは1Pass Slowestの5/8になる。画質もクリアできれいだ。

 DivXは、通信速度1Mbps以上のブロードバンド環境においては、クオリティの高い映像を提供できるコーデックだ。5Mbpsや6Mbpsといった非常に高いデータレートでも、ファイルサイズを比較的抑えながら映像をデジタル化できるからだ。ただし、1Mbps以下のデータレートではファイルサイズが大きくなりすぎて、全くメリットがない。DVDレベルの映像を800Kbpsで圧縮できるとしているWMV8に比べると、DivXの低データレートでのデータ圧縮率は優秀とはいえない。

 また、DivXは現状ではストリーミングに対応していない。WMVやRealVideoでは、ある程度映像をダウンロードしたら、途中から再生が始まる。ダウンロードしながら、再生するといったことができる。しかし、DivXでは、ファイルをすべてダウンロードして、ローカルPC上にファイルがきちんと作成されないと再生できない。ストリーミングが当たり前になっている昨今では、WMVなどと比較してちょっと劣っているように感じる。

 しかし、DivXで作成される映像の綺麗さは、WMV8やRealVideoを超えていると思う。特に、今回テストしたような映像は圧縮すると綺麗な映像にはなりにくいものだ。この映像を綺麗に圧縮するのはさすがといえる。映像を綺麗に圧縮するということでは、MPEG-2にも匹敵する能力を持っていると思う。

 映像のクオリティはピカイチだが、ファイルサイズが大きくなることやストリーミング再生できないといったことを考えると、DivXはCD-RやDVD-Rなどのパッケージメディアに、映像を格納する用途にぴったりのコーデックなのかもしれない。

□divx.comのホームページ
http://www.divx.com/
□Project Mayoのホームページ
http://www.projectmayo.com/
□DivXNetworkのホームページ
http://www.divxnetworks.com/
□Strand Releasing
http://www.strandreleasing.com/
□TMPGEnc
http://www.tmpgenc.com/j_main.html
□関連記事
【3月7日】MPEG-4ベースのオープンソースコーデック「OpenDivx」
http://pc.watch.impress.co.jp/docs/article/20010307/software.htm

(2001年10月2日)

[Reported by 山本雅史]


【PC Watchホームページ】


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

Copyright (c) 2001 impress corporation All rights reserved.