« Googleが発表した動画規格「WebM」について | トップページ | Xiph.OrgのVorbisデコーダーとかってWebM用に使えるのだろうか? »

2010年5月23日 (日)

WebMのエンコードと再生について(FlixWebM編)

先日発表されたWebMについて、ちょっと興味があったので色々試してみました。

とりあえずこのエントリでは、WebM公式ページのCommercial Toolsでも紹介されている、
Wildform社の「Flix WebM」という製品でのエンコード手順と、
出来上がったwebmファイルの再生方法について書いてみます。
製品といっても無料で入手できる体験版のようなもので、簡易WebMエンコーダといった感じですね。

■Flix WebMのダウンロードおよびインストール手順

 1.Flix WebMの製品ページへいく。

 2.「Enter Email:」の欄にEメールアドレスを入力して「Continue>>」ボタンを押す。

 3.入力したEメールアドレス宛に、ダウンロードページのURLとパスワードを書いた
   メールが送られてくるので、それに従ってダウンロードページへ行き、
   パスワードを入力してダウンロードする。
   (WildformFlixWebM.zipという2.6MBほどのファイルがダウンロードされます)

 4.zipファイルをLhaplusなどで解凍すると、WildformFlixWebMSetup_100519.exeという
   インストーラファイルがあるので、これを実行してFlix WebMをインストールする。

 ※Flix WebMをインストールすると、WebM用のDirectShowフィルタがsystem32の下に上書き登録されます。
   登録されるフィルタ群のバージョンは0.9.3.0です。公式のものは0.9.5.0なので、ちょっと古いものですね。
   最新のフィルタを使いたいという人は注意が必要です。詳細は最後に書きます。

■Flix WebMでのWebMエンコード手順

 1.Flix WebMを起動すると、以下のような画面が表示される。
   (画像は起動後、ソースとなる動画を選択した状態のものです)

Flixwebm_input

 2.「Input:」の右側にある「Browse」ボタンを押して、エンコードしたい動画ファイルを選択する。
   ただ、普通に再生できるはずの動画でも、読めるものと読めないものがある模様。
   「Huffyuv+PCMのAVI」で試してみたが、AviutlでRGB圧縮したものならちゃんとエンコードされるが、
   YUY2圧縮したものだと映像が真っ黒になってしまった。
   UtVideoCodecでも、ULRGなら読めるがULY2やULY0は駄目だった。

   ※読める動画の場合は画面下側にある映像表示欄に映像が表示されるが、
     読めない場合は映像表示欄は真っ黒になってしまう。エンコード前にしっかり確認したほうがよい。
     (表示されるのは映像の冒頭なので、冒頭が真っ黒の動画だと確認しようがないが・・・)

   ※読み込めているかどうかよくわからない場合はとりあえずエンコードしてみるとよい。
     エンコードを途中キャンセルすれば、そこまでのデータでwebmが作成されるので、
     冒頭部分を少しだけエンコードして、出来上がったwebmファイルを再生して、
     ちゃんと映像がエンコードされているかどうか確認するとよい。

   ※右側にある「Play」ボタンを押すとActiveMovieWindowでの再生ができるのだが、
     うちの環境だと、ActiveMovieWindowを閉じた瞬間にFlixWebM本体が100%落ちる。
     しかも、ここで再生できたとしても、エンコードしてみたら映像が真っ暗ということもある。
     つまり「ここで再生できたとしてもちゃんと読み込めているかわからない」ということなので、
     確認方法としてもあまり意味がない。基本的に押さないほうがよいと思われる。

 3.入力ファイルを選択すると、「Output:」の欄に自動的に出力ファイルのパスが登録される。
   デフォルトでは開いたファイルと同じディレクトリで拡張子が「.webm」のファイルになるが、
   変えたいなら右側の「Browse」ボタンを押して、パスやファイル名を変更する。
   (直接入力で変えてもよいが、おかしくなることがあるのでBrowseボタン推奨)

 4.Presetを選択する。ファイルにあわせて適当に選べばOK。下のものほど品質が高い。
   大まかな値を決めるだけであり、細かい設定は後で変更できる。
   Presetの右側にある「Encode」ボタンを押すとエンコードが始まってしまうので、
   この段階ではまだ押さないように注意。

 5.「Vid/Aud」のタブを開く。ここで具体的な設定を行なうが、設定項目は非常に少ない。

Flixwebm_config

    ◎Input Video Properties
       元動画の映像情報が表示される。

    ◎Video Dimensions
       リサイズして出力したい場合に使う。
       元動画と同じサイズなら「Use Source Dimensions」にチェックを入れる。

    ◎Framerate Settings
       フレームレートを変更したい場合に使う。
       元動画と同じでよいなら「Use source FPS」にチェックを入れる。

    ◎Key Frame Settings
       キーフレームを入れる間隔を設定する。
       まあだいたいフレームレートの5~10倍の数値をMaxとして設定しておけばよいかと。

    ◎Video Encoder Settings
       映像の最大ビットレートの設定。

    ◎Rate Control Mode
       「CBR(streaming)」「VBR(local playback)」のどちらかを選択。

    ◎Input Audio Properties
       元動画の音声情報が表示される。

    ◎Audio Output Settings
       音声の出力設定を行なう。
       SamplingRateは44100Hz、22050Hz、11025Hzのいずれかを選択。
       ビットレートは16kbps~144kbpsの12段階の中から選択。

 6.「File」タブに戻り、Presetの右側にある「Encode」ボタンを押すとエンコードが開始される。

    ※普通に最後までエンコードすればよいだけだが、上述のとおり、
      途中キャンセルした場合でもそこまでのデータでwebmが作成される。

 試しに、秒速5センチメートルの公式サイトにある予告編(1280x720で8Mbpsのwmv、24.3MB)を、
 AviutlでHuffyuvRGB+PCMのAVIに変換してから、上の設定画面にある設定でエンコードしてみたところ、
    CBRモード →映像5196kbps、音声500kbps、ファイルサイズ31.8MB
    VBRモード →映像4880kbps、音声500kbps、ファイルサイズ30.1MB
 というファイルが出来上がりました。(数値はMediaInfoで見たものです)
 元ファイルよりサイズが増えとるがな・・・。設定は映像2000kbps、音声128kbpsだったのに・・・。
 映像と音声のビットレート指定が全く意味がないような・・・。
 2passエンコしてるわけじゃなさそうだから仕方ないのだろうか。よくわかりません。

■出来上がったwebmファイルの再生

 さて、出来上がったwebmファイルの再生についてですが、大きく分けて以下の2つの方法があります。
 
   方法1.WebMに対応したブラウザで再生する
   方法2.DirectShowを利用したプレイヤーで再生する

 それぞれについて書いてみます。

 ●方法1.WebMに対応したブラウザで再生する

   前の記事でも書いたとおり、WebMが目指すのは「HTML5のvideoタグでの標準コーデックの座」です。
   WebMの発表にともない、いくつかのブラウザが、WebMの再生エンジンを実装したテスト版をリリースしています。
   対応ブラウザの情報は、WebMの公式サイトの「Supported Web Browsers」のところに載っています。

   テスト版をリリースしているのは現時点ではChromium、Firefox、Operaの3つのようですね。
   Google Chromeも間もなく対応予定と書いてあります。

   とりあえず、上記ページのSupported Web Browsersのところにあるリンクから
   お好みのブラウザのサイトに行って、WebM対応のテスト版をダウンロードしてきましょう。
   そのテスト版ブラウザをインストールして、webmファイルをブラウザにドラッグ&ドロップすれば、
   ブラウザに実装された再生エンジンによって、webmファイルが再生されます。
   うちではFirefoxのテスト版で再生できることを確認しました。

 ●方法2.DirectShowを利用したプレイヤーで再生する

   もう1つの方法は、MPC-HC(Media Player Classic - Home Cinema)やWMP(Windows Media Player)等の
   DirectShowを利用したプレイヤーで再生する方法です。

   上でも少し書きましたが、FlixWebMをインストールすると、WebM用のDirectShowフィルタが登録されます。
   登録されるのは以下のようなフィルター群です。

DLL名フィルタ名概要メリット値
vp8decoder.dll WebM VP8 Decoder Filter VP8のデコーダー 0x00600000
vp8encoder.dll WebM VP8 Encoder Filter VP8のエンコーダー 0x00200000
webmmux.dll WebM Muxer Filter WebMのMuxフィルター 0x00200000
webmsource.dll Webm Source Filter WebMのソースフィルター 0x00600000
webmsplit.dll Webm Splitter Filter WebMのスプリッター 0x00600000

 
   WebMの映像部分(VP8)を再生するためのフィルターはこれで揃っているので、
   映像部分に限れば、この状態でWMPでもMPC-HCでも問題なく再生できます。

   しかしながら、WebMの音声コーデックであるVorbisは、デフォルトではWindowsに含まれていないため、
   これとは別になんらかのデコーダーが必要になります。
   MPC-HCの場合は内蔵デコーダーを有効化すればよいですが、WMPなどで汎用的に再生したい場合は
   ffdshowのインストールが必要となります。それぞれの方法について以下に示します。

   ◎MPC-HCで内蔵のVorbisデコーダーを有効化する

     MPC-HCはVorbisのデコーダーを内蔵していますので、それを有効化すれば
     WebMファイルの音声も再生可能です。
     「メニュー→View→Options→Internal Filters」とたどっていき、
     右側にある「Vorbis」にチェックを入れるだけでOKです。
     この状態でwebmファイルを再生すれば、映像・音声ともに再生されるはずです。

Vorbis_mpchc

   ◎ffdshow tryoutsをインストールし、Vorbisのデコードを有効にする

     ffdshow tryoutsは、エンコーダー・デコーダー等の集合プログラムです。
     既にインストール済みの人も多いかと思います。コーデックパックに含まれていることもあります。

     まだインストールされていない場合は、SourceForgeのffdshowプロジェクトのページに行き、
     最新版をダウンロードしてインストールしましょう。

     インストールしたら、
       「スタートメニュー→すべてのプログラム→ffdshow→オーディオデコーダーの設定」
     を開き、設定画面の「コーデック」のところで、「Vorbis」の部分を「libavcodec」にします。
     これで、Vorbisのデコードが有効になります。
     この状態で、WMPなどのDirectShowプレイヤーでwebmファイルを開けば、
     映像・音声ともに再生されるはずです。

Vorbis_ffdshow

 
■最新のDirectShowフィルターを使いたい場合

 上で少し書きましたが、FlixWebMをインストールすると、system32の下に
 webmsource.dll等のDirectShowフィルタが登録されます。
 これらのフィルタは、WebM公式サイトでも配布されているものですが、
 公式の最新版が0.9.5.0であるのに対し、FlixWebMでインストールされるのは
 0.9.3.0となっており、少し古いバージョンになっています。
 なお、これらのDirectShowフィルターは、FlixWebMをアンインストールしても残ります。

 最新版のDirectShowフィルタを使いたい場合は、FlixWebMをインストールした後に、
 以下の手順で最新のDirectShowフィルタを登録しなおすとよいかと思います。
 (ただし自分もあまり詳しくないのでおかしくなる可能性もあります。自己責任でお願いします。)

     1.WebM公式サイトのDirectShowフィルターのページを読み、
       ダウンロードページから最新版の「WebM/VP8 DirectShow Filters」をダウンロードしてくる。
       ダウンロードしたzipファイルはLhaplusなどの解凍ソフトで解凍しておく。

     2.コマンドプロンプトから
         regsvr32 /u webmsource.dll webmsplit.dll vp8decoder.dll vp8encoder.dll webmmux.dll
       を実行して古いフィルタの登録を解除する。

     3.1でダウンロードしてきたファイルの中にある、
          webmsource.dll
          webmsplit.dll
          vp8decoder.dll
          vp8encoder.dll
          webmmux.dll
       の5つのファイルを、C:\Windows\system32に上書きコピーする。
       (WindowsXPの場合。VistaやWin7等は使ってないのでわかりません。)

     4.コマンドプロンプトから
         regsvr32 webmsource.dll webmsplit.dll vp8decoder.dll vp8encoder.dll webmmux.dll
       を実行して新しいフィルタを登録する。

■まとめ

 ●FlixWebMというツールではwebmへの簡易エンコードが可能だが、
   パラメータもほとんど設定できないし、まだ色々未調整っぽい。

 ●FlixWebMを入れると公式より少し古いDirectShowフィルタがインストールされるので注意

 ●webmの再生にはWebM対応版のブラウザが便利

 ●DirectShowプレイヤーでwebmを再生する場合は、音声のためにVorbisのデコーダーが必要。

なお、webmへのエンコードにはWebMパッチを当てたffmpegを使うという方法もあります。
そちらについてはこちらの記事にまとめてあります。

|

« Googleが発表した動画規格「WebM」について | トップページ | Xiph.OrgのVorbisデコーダーとかってWebM用に使えるのだろうか? »

コメント

コメントを書く



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




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1278146/34838196

この記事へのトラックバック一覧です: WebMのエンコードと再生について(FlixWebM編):

« Googleが発表した動画規格「WebM」について | トップページ | Xiph.OrgのVorbisデコーダーとかってWebM用に使えるのだろうか? »