« 今さらながら、クリスピ号のタイヤチューブはどうしたらよいの? | トップページ | iPadがやってきた »

2010年6月 4日 (金)

CUDAで動画エンコードが速くなるか

動画エンコードを速くしたくて、わざわざビデオカードをGeforce 9800GTにしたわけですが、はたして、本当に速くなるか?

さっそく試してみたいところですが、ただ、ビデオカードがあればいいというわけではありません。


対応アプリがないとダメです。


NVIDIAのカードにした理由は、ATI StreamよりもCUDAのほうが対応アプリが多そうだったから、ということは、「ビデオカードを、NVIDIAのGeforce 9800GTにした」でも述べたところですが、いろいろあると思ったのに、探してみると実は少なかったのでした。

ネットで調べてみたところ、CUDAで動画エンコードを高速化できるアプリには、次くらいしかないらしいことがわかりました。

1.Badaboom
 NVIDIAのWebサイトでも紹介されている、エンコード専用ソフト。
2.LoiloScope
 インターファイスが独特な、動画編集ソフト。出力時のエンコードにCUDAを選べるらしい。
3.MediaShow Espresso
 Cyberlink社のエンコード専用ソフト。
4.PowerDirector
 同じくCyberlink社の動画編集ソフト。出力時のエンコードに、CUDAが選べる。
5.MediaCoder
 確認できた、唯一、フリーのCUDA対応ソフト。

他に、有名な「TMPGEnc4.0Express」もCUDA対応なのですが、フィルタ処理に限られ、エンコードには使われないとのこと。だから、候補からはずしました。
1.~4.は市販ソフトですが、体験版があります。だからすべて試してみようと考えました。

すると、まず、1.のBadaBoomですが、これは起動すると、困ったことに必ず落ちてしまいます。
私のPC環境だからでしょうか。いずれにしても、必ずアプリが落ちるので試しようがない。

次に2.のLoiloScopeですが、なんと、CUDAが有効になるのはWindows Vista以上だということ。私のPCのOSはXPなのです。どうしようもない。

ということで、3.~5.のMediaShow Espresso、PowerDirector、MediaCoderの3つだけ、ということになってしまいました。しかも、MediaShow EspressoとPowerDirectorは同じCyberLink社だし、出力設定も似ているので、動画エンコード部分はほぼ同じような気がします。

結局、MediaShow EspressoとMediaCoderだけ試すということになってしまいました(すでにこの時点で、かなりがっかりです)。
気を取り直してこの2つのソフトで試してみることに。

PC環境は次のとおり。

Pcinfo

 

素材となる動画ファイルは、1280pix×720pix、ビットレート19MbpsのMPEG-TSファイル。長さは10分。
動画の詳細は、次のようになるようです(MediaCoderで調べた結果)。

General

  • Format:MPEG-TS
  • File size:1.34 GiB
  • Duration:10mn 4s
  • Overall bit rate:19.0 Mbps

Video

  • Format version:Version 2
  • Format profile:Main@High
  • Format settings, BVOP:Yes
  • Format_Settings_GOP:M=3, N=6
  • Duration:10mn 4s
  • Bit rate mode:Variable
  • Bit rate:17.4 Mbps
  • Nominal bit rate:22.0 Mbps
  • Width:1 280 pixels
  • Height:720 pixels
  • Display aspect ratio:16:9
  • Frame rate:59.940 fps
  • Resolution:8 bits
  • Colorimetry:4:2:0
  • Scan type:Progressive

Audio

  • Format:MPEG Audio
  • Format version:Version 1
  • Format profile:Layer 2
  • Duration:10mn 4s
  • Bit rate mode:Constant
  • Bit rate:256 Kbps
  • Channel(s):2 channels
  • Sampling rate:48.0 KHz


このようなファイル形式となるのは、必然があって、これでないとダメな理由があるのです。

さて、これをどのようなフォーマットに変換するかですが、ポイントは、
1.    動画コーデックはH.264、音声はAAC(つまり、AVCと呼ばれるフォーマット?)
2.    ビットレートは4~6Mbps(DVD1枚に2時間分くらい収めたい)
3.    最低でも、PS3で難なく再生できなければならない。

これさえ実現できればいいのです(画質はよいに越したことはありませんが)。
元ソースのフレームレート59.940 fpsを維持できるような変換もしてみたいのですが、残念ながら、MediaShow Espressoは30fps以下しかできません。さらに、ビットレートの微調整もできず、5Mbps付近というと、3Mbpsか6Mbpsのどちらかを 選ぶしかありません。

MediaCoderは結構細かい設定ができるのですが、両者の性能を比較する場合、どうしてもMediaShow Espresso側の設定に合わさざる得えない、ということになってしまいました。

MediaShow Espressoの設定は、以下のとおりにしました。

Mediashow

 

変換を開始します。
進行状況。5分経過して、だいたい7分ちょっとのところまできています。

Mediashow_2

 

タスク。けっこう、CPUを使ってますね。

Mediashow_3

 

変換終了。6分49秒で10分の動画を変換したことになります。実時間の1.5倍近い速さということですね。速いです。

Mediashow_4

次に、MediaCoder。バージョンは0.7.3.4666。

CUDAを利用するには、フォルダに「cudaH264Enc.exe」というファイルを手動で入れる必要があります。

 

設定は以下のとおり。

Mediac_

Mediac_2

Mediac_3

Mediac_4

Mediac_5


正直なところ、細かい設定はよくわかりません。

変換開始。
途中の進行状況。実時間の2.38倍で変換していると出ました。速い!

Mediac__2



MediaShow Espressoよりも、CPUは使ってない感じ。

変換終了。結局、439秒かかった。つまり、7分ちょっと。

Mediac__3

変換作業は速かったものの、音声と映像のRemuxなどに時間がかかるようです。

MediaCoderは、細かい設定ができるので、ちょっと設定を変えて変換してみました。


まずは、プロファイを「Baseline」にしてみたもの。違いはよくわかりませんが、画質は犠牲になりますが、変換は速そうです。

Mediac_base

Mediac_base_2

341秒、つまり、5分41秒で変換終了しました。

Mediac_base_3


次に、VBR。これだと、最終的にファイル容量がどのくらいになるか予想できません。

Mediac_vbr

 

294秒で終了。しかも、容量は271.8MB。元データのおよそ5分の1ですから、ビットレートに直すと、3.8Mbpsくらいになった計算です。

Mediac_vbr_2

 

 

最後に、比較として、MediaCoderでCUDAを使わずx264で変換した場合。1パスエンコードです。

X264

 

CPUをほとんど100%回し、実時間の60%で変換しています。

X264_2

X264_3


終了。1199秒。つまり20分かかったことになります。ちょうど倍の時間ですね。

X264_4

1パスでこうですから、2パスだとさらに倍の、4倍くらいかかることになるでしょうか。 

さて、変換後の動画ですが、一応、すべてPS3で再生できました。

画質に関しては微妙。

MediaShow EspressoとMediaCoderのどちらも、速い動きのシーンでは明らかに画質破綻が起きています(MediaShow Espressoのほうがちょっとマシかも)。平均ビットレートを決めたうえでのVBRでは、ビットレートの幅が狭く、動きの速い場面でもあまり高いビッ トレートにできないようです。

 
MediaCoderの「VBR」の設定は、ビットレートの幅は広く持てるのですが、平均ビットレート自体が低く、全体的にはあまり画質は良くありません。
mediaShow EspressoもMediaCoderも、2パスエンコードができればマシになりそうですが、それができません。
いずれにしても、画質は1パスのx264に完全に負けているといってよいでしょう。

 

結論として、速い動きの少ない動画ですぐ変換したいようなときはCUDAが活躍してくれそうですが、画質を考えると、急ぎでない限りはx264のほうがよさそうです。

正直なところ、自分にとって6000円の投資に見合うだけの効果がありそうかというと、微妙です。
ソフト側の今後の対応に期待といったところですね。

  • MediaCoderは音ズレするという報告があり、実際、私も最初に試したバージョンでは必ずそうなっていたので、大きく失望していました。MediaShow EspressoくらいしかCUDAの使い道がないということになるわけですから。
    でも、現時点の最新バージョンである0.7.3.4666にしたら改善され、ほぼ音ズレすることはなくなっています。

|

« 今さらながら、クリスピ号のタイヤチューブはどうしたらよいの? | トップページ | iPadがやってきた »

デジタル機器」カテゴリの記事

コメント

今ならFree Video ConverterがCUDA対応していて
私のところでは30%ぐらい高速になります

投稿: 2011 | 2011年6月30日 (木) 00時23分

なんだかんだいって、使ってます。
MediaShow Espressoも買ってしまいました。

画質の悪さには目をつぶってます。

ここまでくると、もう意地ですね (^-^;

投稿: katchie | 2010年8月 7日 (土) 22時02分

まぁそんな感じですよね。
CUDAもStreamも、これを使って動画エンコードすると
画質が悪くなるので、自分も使いません。
GPGPUはいまだ実用レベルでない、といえそうです。

投稿: 通行人 | 2010年8月 6日 (金) 05時04分

コメントを書く



(ウェブ上には掲載しません)




« 今さらながら、クリスピ号のタイヤチューブはどうしたらよいの? | トップページ | iPadがやってきた »