酔人日月抄

東京下町に暮らす写真とPENTAXとスキーと時代小説とお酒とプジョーを愛するある男の日常

AMD Video Convertor


 最近のグラフィクスチップには動画再生支援機能はもちろんですが、動画のエンコードあるいはトランスコードのハードウェア支援機能も入っているのが一般的です。IntelならQSV、nVidiaだとCUDA、そしてAMDだとAMD Video Convertor(旧AVIVO)と呼ばれています。AMDの場合は最近に始まったことではなく、ATiの時代、Radeon HD2000シリーズのころからあった機能ですが、あまり私は動画エンコードを必要としないためこれまで試したことがありませんでした。

 PT2を導入して以来、テレビの視聴と録画はすべてPCで行い、ハードディスクも3TB用意してありますが、TV録画は単なるタイムシフト視聴用途が多く、保存しておこうと思うファイルは多くないのですが、F1のとても良かったレースは永久保存おきたいと思うものもあったり、また気になった番組を録画しておいたものの、じっくり見る時間がなく、iPhoneに転送しておけば外出中の暇つぶしにでも見られるのに、と思うことが増えてきました。

 ソフトウェアによるエンコードはもちろんいくらでも可能なのですが、やはりそれなりに負荷が重く時間がかかってしまいます。そこで遅ればせながらAMD Video Convertorなるものを試してみることにしました。ハードウェアエンコードですので、かなり高速に動画ファイルの変換ができるはずです。

PCスペック

 まずはじめにPCの基本構成です。1号機は1年半くらい前に組み立てた自作機ですが、AMDプラットフォームとしては今でもそれほど見劣りのするPCではありません。2号機はつい先日組み立てたのですが、こちらはパフォーマンスではなく、超低消費電力を追求したPCです。

  1号機 2号機
CPU PhenomII X6 1090T (6core 3.2GHz) Fusion APU E-450 (2core 1.65GHz)
M/B ASRock 890GX Extream3 ASUS E45M1-M PRO
GPU Radeon HD4290 (AMD890GX内蔵) Radeon HD6320 (E-450内蔵)
Memory DDR3-1333 8GB DDR3-1333 4GB
SSD RealSSD C300-256G VERTEX 120GB
HDD WD30EZRX(3TB),WD20EARS(2TB) WD10EADS(1TB)
DVD LG GH24NS50 TSST SH-S223C
OS Windows7 Professional 64bit Windows7 Home Premium 64bit
Driver Version Catalyst 11.12 Catalyst 11.12

 エンコードマシンとしてはCPUパワーがありHDD容量も大きい1号機がメインとなりますが、内蔵グラフィクスエンジンが新しい2号機の方でも念のため試してみることにしました。

必要なソフトウェア

 まずはAMDのCatalystドライバーにControl Panelが正しくインストールされていることが前提ですが、それに加えてさらに以下の二つのソフトウェアが必要です。

AMD Media Codec Package

 このパッケージは、Radeonグラフィクスチップのハードウェアエンコード支援機能のドライバーと簡単なフロントエンドアプリを含んでいます。Catalystのダウンロードページの"Optional DOwnloads"のタブの中にあります。例えば、Windows 7 64bit版の場合だとここにあります。
 私の環境では、Catalystドライバーともども、現時点(2012年1月22日)で最新の11.12を使用しました。(まもなく12.1がリリースされると思いますが)

MPEG-TS Directshow Splitter

 今回はデジタル放送を録画したMPEG2-TSファイルをトランスコードしたいわけですが、そのままではAMD Video ConvertorはTSファイルを読み込めませんでした。入力ファイルとして.tsファイルを指定すると「サポートしていないファイル形式です」とエラーが表示されます。試しに拡張子だけ.mpgに変えてみましたが状況は変わりません。

 ということで、TSファイルを読み込めるようにするために、Directshow Splitterを追加でインストールする必要があります。これは検索すると色々出てくるのですが、私が使用したのはK-Lite Codec Packageです。これの64bit版を使用しました。またはHaali Media SplitterでもOKです。
 なお、Windowsが64bitの場合には、このDirectshow Splitterも64bit版を使う必要があります。K-Lite Codecはパッケージが別れていますが、Halli Media Splitterは一つのパッケージで両対応となっているようです。
 また、MPEG1/2やWMVファイルなど、もともとWindows Media Playerなどがサポートしている動画ファイルでは、特に何もしなくても読み込み可能です。

使用してみる

 以上でAMD Video Convertorを使用する準備が整いました。使用するにはAMD Vision Engine Control Panelをまずは開きます。以前はCCCと呼ばれていた、グラフィックチップ設定用のアプリです。スタートメニューからでも、通知バーからでも起動できます。

AVIVO_1

 メニュー内の"ビデオ"の項目から"AMD ビデオコンバーター"を選ぶと、上のような画面になります。ここで"ビデオコンバーターを開始する"ボタンを押します。

AVIVO_2

 次に入力ファイルの選択画面が開きます。エンコードしたい動画ファイルを指定するわけですが、ここで読み込みできない場合は、上記のDirectshow Splitterに問題があります。
 ファイルの読み込みに成功すると、ビットレート、長さ、解像度、アスペクト比などなど、その動画ファイルの情報が表示されます。

AVIVO_3

 "次へ"を押すと、今度は出力ファイルの設定画面になります。どういう形式の動画ファイルに変換するかを決めなくてはなりません。AMD Video Convertorは非常にシンプルなUIのソフトであり、基本的にプリセットされたプロファイルから選択することしかできません。また、ユーザー設定を追加することもできません。
 プリセットされている形式は上のスクリーンショットにある通りです。映像のビットレートだけは表示されますが、解像度やフレームレート、オーディオの形式やビットレートなど、細かいことはこの時点ではどこにも表示されず不明です。

AVIVO_4

 試しに"720p H.264"にエンコードを選んでみました。デフォルトのビットレートは10Mbpsとなっています。このビットレートはスライドバーで調整することができます。が、上記の通りこれ以外のパラメーターはいじれません。

 ちなみにここで設定するビットレートですが、少なくとも"720p H.264"の場合、実際に出力されたファイルは、設定した値の半分程度のビットレートになっているようです。例えば8Mbpsと設定すると、実際は約4Mbpsのファイルが出来上がります。可変ビットレートの最大ビットレートを表しているのでしょうか? 意味がよく分かりません。

AVIVO_5

 さらに"次へ"を押すと、いきなりトランスコードが開始されます。作業中は上記のようなプログレスバーのみ表示され、経過時間と予測時間が表示されます。ここで"予測時間"というのは、その時点における残りの作業時間ではなく、スタート時からのトータルの時間です。残り時間を読み取るには、予測時間から経過時間を引き算しなくてはなりません。

エンコード時間

 さて、実際どれくらいの時間で再エンコードができるのでしょうか? 下記の条件で試してみました。

  • 入力ファイルは地デジを録画したTSファイル。長さは55分。ビデオの圧縮形式はMPEG2でビットレートは約13Mbps。解像度は1440x1080ピクセルでフィールドレート59.94Hzインタレース。オーディオはAACのステレオでビットレートは160kbps、サンプリング周波数は48kHz。
  • 出力ファイルは、MP4形式。ビデオの圧縮形式はHPEG4-AVC(MPEG4)でビットレートは約4Mbps。解像度は1280x720ピクセルでフレームレート29.97Hzのプログレッシブ。オーディオはAACのステレオでビットレートは160kbps、サンプリング周波数は44.1kHz。

 上記の設定で、AMD Video Convertorを使用した場合(ハードウェア支援あり)と、TMPGEnc 4.0 Expressを使用した場合(ハードウェア支援なし)の場合で、どの程度変換時間に差が出るかを測ってみました。以下の表が結果です。

1号機 2号機
AMD Video Convertor 約20分 約64分(1時間4分)
TMPGEnc 4.0 Express 約62分(1時間2分) 約449分(7時間29分)

 1号機の場合、時間短縮効果は約3倍と言ったところですが、2号機は約7倍となりました。これはCPUの性能が1号機は十分にあるので、もともとソフトウェアエンコード(=CPUを使用)の場合でも、そこそこ短時間で終わるためであり、逆に2号機はCPUが非常に非力なので、GPUによるハードウェア支援の効果が非常に大きく出たと言うことだと思われます。

 また1号機と2号機の差を見比べると、GPUによるハードウェア支援と言っても、やはりCPUにも依然として大きく依存していることが分かります。その差およそ3倍。2号機のグラフィックエンジンの方が2世代ほど新しいのですが、トランスコードのコア性能はそれほど変わっていないのかも知れません。

 1号機はCPUのみでもほぼ実時間でトランスコードが可能ですが、ハードウェア支援を利用すれば3倍速で変換できるわけで、55分番組が20分で変換できるとすれば、これはなかなか使い道がありそうです。変換中も特にPCの動作が重たくなることもなく、普通に他のアプリを使うことも可能です。一方、2号機はやはりCPUの非力さが目立って、どちらにしても実用性に乏しいと言えそうです。ハードウェア支援を利用してようやくほぼ実時間変換が可能ということになりますので、スペックや消費電力を考えれば悪くはないとも言えるのですが。

 ちなみにIntelのQSVはCPUによると思いますが、1時間の地デジTSファイルを解像度変換&再エンコードするのに約7分程度で完了するそうです。私の1号機の約2.5倍くらい速いです。フトウェアエンコードでもi7-2600あたりなら30分弱でできてしまうとか。さすがに動画エンコードについてはIntelのほうがずっと強いようです。まぁ、それでも私は使いませんが(^^;

 なお、変換後の品質(画質)については特に評価していませんし、あまり気にしていません(所詮、圧縮ビデオですから...)。

しかし問題が...

 変換時のパラメータ詳細が煮詰められないのが大きな欠点ですが、今回の実験でエンコードした出力ファイルは、フレームレートは30fpsなものの、解像度は720pを保ってることもあって、PC上で再生してもそこそこ見られる画質になります。また、このままiPhone4に転送して再生することも可能。iPhone4にはちょっとオーバークオリティかも知れません。

AVIVO_6

 で、今後はどんどん使っていこう!と思ったのですが、一つ重大かつ致命的な問題があって、今時点では解決できていません。というのは、AMD Video Convertorを使うと、頻繁にエンコードに失敗してしまうのです。傾向としてはまず、1時間を超えるファイルはほとんどの場合終盤に失敗し、強制終了してしまいます。1時間以内のファイルでも、途中で強制終了してしまったり、正常に終わったふりをしつつも、出力されたファイルが壊れていたり。

 元のTSファイルが良くないのか、Directshow Splitterが良くないのか、あるいはAMD Video Convertor自身の問題なのか...。いずれにしてもこの成功率の低さ、不安定さではちょっと実用に耐えません。長いファイルこそほんとうは時間短縮したいところですから。

 ということで、この問題を解決するまでは、どうしても必要な場合はソフトウェアエンコードをすることにします。