MPEG2-TSからH.264/MPEG4 AVC変換の際のビットレート

2011年3月2日追記 頂いたHD5670のレポートを追加
2010年9月18日追記  Bitrate Viewerのバージョンを変更


地デジ、デジタルBS、デジタルCSの映像はMPEG2という圧縮方式を採用し配信されています。
その中で地デジにはワンセグという携帯等で再生できる解像度の低いビットレートの低い映像が入っていますが、これはH264/MPEG4 AVCという圧縮方式を採用しています。


H264/MPEG4 AVCという圧縮方式はMPEG2に比べて高い圧縮率をほこる=同じような映像ならば容量を少なくできるというメリットがあります。
ですが、これまでは容量を少なくするための解像度の低い映像用と考えられていましたが、現在はブルーレイの圧縮方式にも採用されています。


ですが、圧縮率が高いので変換時間はMPEG2に比べると長くなってしまいます。
私のパソコンスペックでもCPUだけで変換させようとするとビットレートにもよりますが実時間の1.5倍程度は必要になります。
ですが、現在はGPGPUという技術(グラフィックボードへCPUが受け持つ処理の一部を渡すことで変換時間を短くできる)があるので、ある程度のグラフィックボードを使用するとそれほど時間をかけず変換することが出来ます。
ここでは、H5670とHD3650の2種類のグラフィックボードを搭載しなるべく環境を同じにした状態で、GPGPUの有無により速度などがどのように変わるのか検証したいと思います。
かなり興味深い結果となりましたので最後までお付き合いいただければと思います。


元動画の圧縮方式、ビットレートを変更するので、どの程度の速度で変換できるのか?が問題になると思います。
例えば10分の動画の変換時間が8分で終わることで、実時間より2分短縮されたことを評価するのではあまり一般的ではありません。
このため、ここでは速度比という単位を作り比較をおこないたいと思います。
分かりやすく説明すると、速度比 100%とは実時間と同じ時間での変換を表し、50%だと実時間の半分、150%だと実時間の1.5倍で変換が完了したことを表します。


パソコンスペック
CPU:AMD PhenomU 965BE 3.4GHz
マザーボード:GIGABYTE GA-MA790FX-DQ6 (rev. 1.0)
メモリ:DDR2-800
BIOS:F7E
グラフィックボード:HD3650 or HD5670
変換ソフト:Cyberlink PowerDirector 8.00.3022
最大ビットレート:MPEG2 25Mbps H.264/MPEG4 AVC 24Mbps
平均ビットレート:テストにより可変
環境設定-編集-GPUアクセラレーション
ATI Stream技術を有効にして…:ON
ハードウェア デコーディングを有効にする:グレーアウト (XPでは使用不可?)
高速ビデオレンダリング技術-ハードウェア ビデオ デコーダ:OFF or ON
(GPUアクセラレーション GPGPU ハードウェアエンコード:OFF or ON)


解像度が1440x1080の場合

変換速度比


変換速度比ですが、100%を上回っている場合は変換時間が元動画の再生時間より長くなることを表し、100%を下回っている場合は変換時間が元動画の再生時間より短くなることを表します。
もっと言うと0%に近いほど早く変換できるということが言えます。
MPEG2 15Mbpsの場合はGPGPUのON/OFFにより変換速度の違いはあまり現れていません。
ですが、H.264/MPEG4 AVCの場合はOFFの場合はおおよそ145%程掛かっているのに対して、ONの場合はおおよそ70%程度で変換が終了しています。
つまりGPGPUをONにすることで元動画の再生時間の70%程度で変換が可能と言えます。


GPGPU:OFF


H.264/MPEG4 AVCはMPEG2よりも圧縮率が高く、ビットレートを低くしても画像の劣化が少なくなるというメリットがありますが、その反面変換に時間がかかるというデメリットがあります。
平均ビットレートを15MbpsにしたMPEG2では実時間の45.1%で変換が終了するのに対して、H.264/MPEG4 AVCでは実時間の130%以上必要になってきます。また平均ビットレートを高くすれば高くするほど必要な時間は長くなります。

H264/MPEG4 AVCへの変換はクアッドコア 3.4GHzのAMD PhenomU 965BEだからこそ130%〜に収まっていますが、これがデュアルコアならば倍以上の260%〜になると思います。
(以前デュアルコアでMPEG2への変換を行ったところ実時間程度でした)


GPGPU:ON


グラフの縦軸はGPGPUがOFFの時と異なっている点に注意してください。
GPGPUをONにしたとき最も挙動が変わるのがCPUの使用率です。
OFFでは4コア全てを使用するのに対して、ONでは使用するのは1コアのみです。
こちらのテストhttp://www.dosv.jp/other/1007/03.htmでCPUの違いにより速度にあまり影響がないというのは、RADEONの場合は1コアのみが使用されているというのに繋がっているのかもしれません。
因みに、Intel+NVIDIAの組み合わせだとCPUコア全てが使用されるそうです。
ということはRADEONの場合はマルチタスクに対応しておらず、NVIDIAはマルチタスクに最適化されていると推測されます。
この事から変換速度はRADEONはCPU性能の差にあまり影響がなく、NVIDIAはCPU性能の差が変換速度に影響するとされているのかもしれません。


変換容量比


平均ビットレートを上げるほどサイズはそれに比例して大きくなりますが、注目すべき点は同じ平均ビットレートでも出力サイズが小さくなっている点です。
(画質の有無につきましては下記のBitrate解析を是非御覧ください)
動画形式に関わらず、おおよそON/OFFの違いで20%程度容量が削減できています。

注目すべき点はH.264/MPEG4 AVC CABACにおいて平均ビットレートを6Mbpsにした時です。
ファイルサイズはON/OFFで違いがない(厳密に言うとONの方が大きくなっている)ということは、平均ビットレートを下げ過ぎても必要な箇所にはビットレートを高く与えることで、画質の劣化を防いでいると言えるでしょう。
また、H.264/MPEG4 AVC CABACにおいてビットレートを6Mbpsにしたときと12Mbpsにした時でファイルサイズの差が約15%程度しかないという点も注目されるべきです。
これは必要以上にビットレートを上げた場合でもビットレートを下げられる箇所は可能なかぎり下げてファイルサイズを小さくすることが出来ることを意味しています。


GPGPU:OFF


ファイルサイズはビットレートが低くなるほど小さくなります。


GPGPU:ON


GPGPUをONにした場合でも平均ビットレートにほぼ比例してファイル容量は変化します。


容量だけではなく、以下のBitrate解析も是非御覧ください。


Bitrate 解析

次に変換した動画をBitrate Viewerにより時間軸あたりのビットレートを解析してみました。

元素材のBitrate Viewerのバージョンが2.1.1になっているのはTSファイルの読み込みが2.2で出来なかったためです。
また、その他のファイルが2.2になっているのはH264/MPEG4 AVCのビットレートが2.1.1で怪しかったためです。


興味深いのはGPGPUがOFFの場合は平均ビットレートが高い場合は、ピークはオリジナルと同じ箇所に現れますが、平均ビットレートを低くした場合、最大ビットレートは24Mbpsのままにもかかわらずオリジナルと異なる箇所にピークが現れる点です。
対してGPGPUがONの場合はシーンごとに指定した最大ビットレートまで自動的に可変している点です。


元素材 1440x1080 Bitrate Viewer 2.1.1


元素材 7分17秒
圧縮方式:MPEG2-TS
平均ビットレート:12.5Mbps
ファイルサイズ:785MB
元素材のビットレートはほぼ12.5Mbpsで平均しておりそれほど変化はありません。
ハイビジョン画質ですので地上アナログ放送をパソコンの画面で見るより遥かに綺麗ですが、ビットレートがあまり高くなく、5〜7秒でブロックノイズが現れています。


MPEG2 15Mbps 1440x1080 Bitrate Viewer 2.2

GPGPU:OFF


圧縮方式:MPEG2-PS
平均ビットレート:15Mbps
ファイルサイズ:806MB
変換時間:3分17秒
速度比:45.1%
平均ビットレートを元素材より高めにしていますが、ソフトのセッティングかビットレートの上下が顕著です。
元素材より映像が悪くなっているということも見られません。


GPGPU:ON


圧縮方式:MPEG2-PS
平均ビットレート:15Mbps
ファイルサイズ:616MB
変換時間:3分24秒
速度比:45.1%
平均ビットレートを元素材より高めにしていますが、GPGPUがOFFの場合と比べてさらにビットレートの上下が顕著です。
ビットレートを細かく変化させ、必要なシーンではビットレートを高く、そうでないシーンではビットレートを低くすることで容量を少なくするようになっています。
このため、平均ビットレートが少なくなっており、容量も少なくなっているにもかかわらず、元素材より映像が悪くなっているということも見られません。


H.264/MPEG4 AVC 12Mbps 1440x1080 Bitrate Viewer 2.2

GPGPU:OFF


圧縮方式:H.264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:12Mbps
ファイルサイズ:682MB
変換時間:11分21秒
速度比:155.8%
H264/MPEG4 AVCで元素材と同じ程度の平均ビットレートにしていますが、特に映像の劣化も見られません。


GPGPU:ON


圧縮方式:H.264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:12Mbps
ファイルサイズ:516MB
変換時間:5分13秒
速度比:71.6%
H264/MPEG4 AVCで元素材と同じ程度の平均ビットレートにしていますが、ビットレートの上下はMPEG2の場合と同じような傾向で、ビットレートが激しく上下しています。
また、平均ビットレートを12Mbpsと指定していますが、出来たファイルは8Mbps程度になっています。
映像の劣化は殆ど見られません。


H.264/MPEG4 AVC 10Mbps 1440x1080 Bitrate Viewer 2.2

GPGPU:OFF


圧縮方式:H.264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:10Mbps
ファイルサイズ:576MB
変換時間:10分49秒
速度比:148.5%
元素材より若干ビットレートを下げていますが、こちらも映像の劣化はあまり見られません。


GPGPU:ON


圧縮方式:H.264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:10Mbps
ファイルサイズ:464MB
変換時間:5分6秒
速度比:70.0%
平均ビットレートを10Mbpsと指定していますが、出来たファイルは7.2Mbps程度になっています。
映像の劣化は殆ど見られません。


H264/MPEG4 AVC 8Mbps 1440x1080 Bitrate Viewer 2.2

GPGPU:OFF


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:8Mbps
ファイルサイズ:470MB
変換時間:10分11秒
速度比:139.8%
元素材より若干映像の違和感(本当にごく僅か)はありますが、特に気になるほどでもありません。
この程度ならばいいのかもしれません。


GPGPU:ON


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:8Mbps
ファイルサイズ:428MB
変換時間:4分55秒
速度比:67.5%
平均ビットレートを8Mbpsと指定していますが、出来たファイルは6.6Mbps程度になっています。
映像の劣化は殆ど見られません。


H264/MPEG4 AVC 6Mbps 1440x1080 Bitrate Viewer 2.2

GPGPU:OFF


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:6Mbps
ファイルサイズ:372MB
変換時間:9分37秒
速度比:132.0%
開始5〜7秒でビットレートがたらずブロックノイズと輪郭があやしくなり、違和感が感じられます。
永久保存版へは向かずメディア容量の関係でここまで下げなければならないというのでなければ、ここまで平均ビットレートを下げることはおすすめできません。


GPGPU:ON


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:6Mbps
ファイルサイズ:374MB
変換時間:4分57秒
速度比:68.0%
平均ビットレートを6Mbpsと指定していますが、出来たファイルは5.6Mbps程度になっています。
映像の劣化は殆ど見られません。
GPGPUのON/OFFにより速度の違いと内部のビットレートが全く異なっているのが特筆すべき点だと思います。私の目では元画像と比べて映像の劣化も殆ど感じられませんでした。
GPGPUがOFFの場合はここまで平均ビットレートを下げることはおすすめできませんが、ONの場合はここまで下げても良いのかもしれません。
1点だけ良いのか悪いのかわかりませんが、ファイルサイズがON/の方が大きくなっています。これは、必要なシーンにビットレートを高く設定することでファイルサイズを小さくしにくくなっているのかもしれません。


最高ビットレートは24Mbpsのままですが、平均ビットレートを下げるとGPGPUがOFFの場合は最高ビットレートも連動して下がってしまいますが、GPGPUがONの場合は希望する平均ビットレートになるようビットレートを調節していますが、最高ビットレートはおおよそ最高値に近い状態で、必要なシーンではビットレートを高く、そうでないシーンはビットレートを低くするようになっています。


雑誌等でPower Director 8を使用してH264/MPEG4 AVCへの変換テストを行っているのをみるとIntel Core i7で速度比700%(実時間の7倍)程度掛かっているようですが、今回のテストでは130%(実時間の1.3倍)程度で収まっています。
こちらのテストと比較すると圧倒的に早い
http://www.dosv.jp/other/1007/03.htm
こちらのテストとはほぼ同程度
http://www.dosv.jp/feature/1002/15.htm
元素材のコンテナは同じMPEG2-TS(同じ素材ではない)です。
環境が異なりますが、メモリが旧世代のDDR2-800を使っているにもかかわらず雑誌のテストよりも高速で変換されている理由がよくわかりません。
AMDのほうが高速で変換できるのか、クロック数の差なのか?
PhenomU 965BEはIntel Core 2 Quad 9650と同程度とのテスト結果がありますが、Core i7-975と比較しても早過ぎる感じがします。


解像度が1920x1080の場合

変換速度比


変換容量比


元素材 1920x1080 Bitrate Viewer 2.1.1


圧縮方式:MPEG2-TS
平均ビットレート:19.3Mbps
ファイルサイズ:507MB


H264/MPEG4 AVC 20Mbps 1920x1080 Bitrate Viewer 2.2

GPGPU:ON


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:OFF
平均ビットレート:17.7Mbps
ファイルサイズ:473MB
変換時間:3分55秒
速度比:112.4%


H264/MPEG4 AVC 18Mbps 1920x1080 Bitrate Viewer 2.2

GPGPU:ON


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:OFF
平均ビットレート:16.5Mbps
ファイルサイズ:444MB
変換時間:3分51秒
速度比:110.5%


H264/MPEG4 AVC 14Mbps 1920x1080 Bitrate Viewer 2.2

GPGPU:ON


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:OFF
平均ビットレート:12.6Mbps
ファイルサイズ:350MB
変換時間:3分36秒
速度比:103.3%


H264/MPEG4 AVC 10Mbps 1920x1080 Bitrate Viewer 2.2

GPGPU:OFF


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:9.1Mbps
ファイルサイズ:263MB
変換時間:3分34秒
速度比:102.4%


H264/MPEG4 AVC 8Mbps 1920x1080 Bitrate Viewer 2.2

GPGPU:OFF


圧縮方式:H264/MPEG4 AVC CABAC
x.v.Color:ON
平均ビットレート:7.4Mbps
ファイルサイズ:219MB
変換時間:3分19秒
速度比:95.2%


まとめ

GPGPUの違いにより、変換速度とファイルサイズ、詳細なビットレートを確認したところ、GPGPUは有り!と結論づけることが出来ます。
GPGPUの動作により、平均ビットレートを同じに指定した場合(6Mbps以下の場合を除く)ファイルサイズは小さくなり、しかもH264/MPEG4 AVCの場合は速度が早いという結果になりました。
また、H264/MPEG4 AVCでは平均ビットレートをかなり下げても(6Mbps程度)映像の劣化はほとんど見られないにもかかわらず、ファイルサイズを小さくすることが出来ました。
(私の目ではH264/MPEG4 AVCの6Mbpsと元動画との違いを見つけることは出来ませんでした。この場合のファイルサイズは元動画のおおよそ半分程度です。)
さらに、GPGPUを使うことでH264/MPEG4 AVCへの変換も現実的な値になっています。


また、他のテスト結果と比べて唯一気になる点はAMD+RADEONの組み合わせと比べて(HD3650での結果でも同様)、Intel+NVIDIA or RADEONの組み合わせでH264/MPEG4 AVCへの変換は前者のほうがかなり速い速度になっています。
H264/MPEG4 AVCへの変換はAMD+RADEONの組み合わせがベスト?


ハイビジョンの映像編集をよく行う人はGPGPU変換は絶対オススメです!
速度もHD5670以上のグラフィックボードであまり違いは無いようですし、1万円程度(2011年3月現在)で購入することが出来ます。(ソフト代は別:但し非常に便利で使いやすいので結構オススメ)
※このテストの結果は独自に検証を行ったもので、他のソフトでの結果やハードウェアが変わった場合に内容を保証するものではありません。

補足
CPUとグラフィックボードですが、GPGPUの効果確認するためにはある程度のスペックは必要になりますが、私のCPU程性能はなくても良いと思います。
誤解を恐れずに言うとデュアルコアでもクロック数が高ければ十分ではないでしょうか?
これはRADEONの場合はGPGPUがマルチタスクに対応していないと思われるためです。
但しCUDAを使う場合は別(テストしていないのでわかりません)
速度命!の場合はCUDAの方が良いのかもしれませんが(エンコード専用マシーン)、変換を行いながら別の作業を行いたいというのであればマルチタスクに対応していないRADEONはマルチコアならばエンコードを行いながら別の作業を行うことが現実的と言えます。
しかもCUDAとRADEONの変換時間は雑誌などのテストを見ると僅かな差しか無いようです。

back

↑このページのトップへ戻る↑