« AviUtlと拡張編集の小ネタ KENくんからの隠しメッセージ | トップページ | LAV Filters 0.35のインストール画面と設定画面のスクリーンショット »

2011年9月27日 (火)

LAV Filters 0.35を少しだけ試してみた

※2011/09/27 19:30追記
  記事公開直後、なんかMP4の再生(特に音声)がおかしいことに気づきました。
  MPC-HC 1.5.2.3456の内蔵スプリッタ+デコーダーで再生するとギリギリそれなりに再生できるものが、
  内蔵MP4スプリッタをやめてLAV Splitterにしただけで途切れたり遅延したりするようになります。
  デコーダーをffdshow tryoutsにすると更にひどくなりますが、こんなに負荷高かったっけか・・・?
  低スペックなうちの環境のせいかもしれませんが、Haaliに戻すことも含めて再検討中です・・・。

※2011/09/27 23:00追記
  ●その後色々試してみたところ、どうやら
     「LAV Splitterを使うと、CPU使用率が100%近くになった際に音声再生が破綻しやすい」
    という感じでした。音声が途切れたり同じ箇所の音声を何度か繰り返したりします。
    MPC-HC内蔵スプリッタやHaali Media Splitterを使った場合は音声が破綻しにくい感じなので、
    LAV Splitterのこの挙動が目立ったようです。
    設定か何かで改善できるのかもしれませんが、めぼしいところを変えてみても変化がありませんでした。
  ●ffdshow tryoutsの負荷が高かったのは、
     ◎MPC-HCのレンダラ指定でVMR7(renderless)を指定したため、
       ffdshow tryoutsのデコーダーでYUV→RGB32変換を実行し、VMR7にRGB32で渡していた。
     ◎おまけにrev3765で、「YV12からRGBへの高画質変換」がデフォルトで有効になったので
       それも影響して余計に負荷が高くなった?(今回最新のrev3984を導入)
    というのが原因だったようです。
    MPC-HCでレンダラの指定をVMR9(renderless)にしたところ、
    ffdshowからVMR9へYV12で渡すようになり、再生負荷は軽減されました。
  ●もしかすると間違ってるかもしれませんが、今の自分の知識ではこれが精一杯。
  ●そんなわけで、LAV Splitterの導入は当面やめることにし、Haali Media Splitterに戻すことにしました。
    うちのPCは、他のアプリを全て落としてMPC-HCだけにしても
    720p 25fpsのMP4すらまともに再生できないほど低スペックなので、
    LAV Splitterはあまり向かないようですね・・・。
    これもふまえて記事を修正しました。

=====以下、記事=======

最近動画関係のスレで「LAV Splitter」とか「LAV Filters」というのを
ちょくちょく見かけるので、ちょっと調べてみました。
下記のフォーラムからダウンロードすることができます。

  LAV Filters - DirectShow Media Splitter and Decoders - Doom9's Forum

書いてあるとおり、LAV Filtersはffmpegのライブラリ(libavformatなど)を使った
DirectShowのスプリッターとデコーダーのセットのようです。
現時点の最新版は2011/09/07のv0.35となっており、
以下の3つがセットになっています。(個別にインストールすることも可能)
  LAV Splitter
  LAV Video Decoder
  LAV Audio Decoder
要するにコーデックパックのようなものだと考えればよいでしょう。
MP4やFLV、MPEGなどを始めとする色々な種類のコンテナやコーデックをサポートしているので、
これ1つで大抵の動画をDirectShowで再生・読み込みできるようになります。
ただしDirectShowフィルタのみであり、VFW(VCM)コーデックなどは入っていません。
試しにインストールしてみたのですが、いくつか注意すべき点もあったので書いておきます。

■インストール前の動画再生関連の環境
  OS: WindowsXP 32bit SP3
  Haali Media Splitter
  ffdshow tryouts
  MPC-Standalone Filtersの「FLV Splitter(FLVSplitter.ax)」
  On2 Flix Proの「On2 Flv Splitter Filter(flvsplit.dll)」「On2 Video Decoder Filter(flvdecvp6.dll)」

  ※普段はMP4やFLVくらいしか再生しません。
  ※Haali Media Splitterは主にMP4やMPEG-TSのスプリッターとして利用。
  ※ffdshow tryoutsは、H.264/AVCとAACのビデオデコーダーと、一部のVFWデコーダーを使う程度。
  ※FLV関連のフィルタについては、こちらこちら の記事を参照。

■インストール前の作業
  色々と競合するとまずいかもしれないと思い、
     Haali Media Splitter
     ffdshow tryouts
  の2つはアンインストールしておきました。
  Haali Media Splitterについては、LAV Filters 0.35のzip版のreadme.txtに
     「アイツ(Haali)はおかしな方法で登録してやがるからな。
      (Haaliを)アンインストールするか、(Haaliの)axファイルをリネームしといてくれ。」
  と書いてあったので。
  FLV系のフィルタは、まあ大丈夫だろうと思い入れたままにしておきました。
  できればFLV系についてはOn2社のフィルタのほうを有効にしたかったので。
  (ffmpeg系のVP6デコーダーは、稀におかしなデコードをすることがあるようなので。)

■インストール
  インストーラー版(.exe)と、zip版(.zip)があります。
  インストーラー版では、
     ・インストール時に、処理させるコンテナやコーデックを選択することができる
     ・スタートメニューにプログラムグループが登録され、
      そこからスプリッターやデコーダーの設定を行なうことができる。
  という特徴があります。
  zip版ではバッチファイルでregsvr32を実行するだけです。システムフォルダ等へのコピーも行ないません。
  また、スタートメニューへの登録もないので、細かい設定などはどこでやればよいのかわかりませんでした。
  インストーラー版を使うのが無難なようです。

■結果
  確かに色々な動画を再生できるようになりました。
  とくに、QuickTimeの各種movファイルや、RealPlayerのRealMediaのファイルを
  DirectShowで再生・読み込みできるようになるのは、それらの動画を扱う人にとっては大きなメリットかもしれません。
  自分では扱わないのですが以前調べた感じでは、QuickTime AlternativeやReal Alternativeなど、
  ライセンス的にもなんだか怪しそうなもの(?)を使うしかなさそうな感じでした。それが不要になりますね。
  MPC-Standalone FiltersにもRealSplitter.axなどがあるようですが自分はよくわかってません。

  というか、QuickTime Alternativeなどを配布していた(?)、Codec Guideを見に行ってみたら、
  今年7月頃からLAV SplitterなどをK-Lite Codec Packに導入しており、
  QuickTime Alternativeなどのリンクは見当たらなくなっていました。
  (しばらく見に行ってなかったので、もっと前からなくなってたのかもしれませんが。)

いくつか気になった挙動については、以下で述べていきます。

 
■インストーラーで全てデフォルト設定のままインストールすると、無圧縮RGB24のAVIが再生できなくなった。

  →デフォルト設定だとAVIコンテナにもチェックが入っており、LAV Splitterで扱うようになるのですが、
    AviUtlや「NiVE(NicocVisualEffects)のVFWOutput」で出力した無圧縮RGB24のAVI 1.0がDirectShowで再生できなくなりました。
    音声がある場合は音声だけが流れ、映像しかない場合は再生に失敗します。
    このAVIはAviUtlの「AVI/AVI2 File Reader」やNiVEの「VFWInput」などでは
    正常に読み込めるので、AVIファイルそのものに異常があるわけではありません。

  →以下で説明しますが、インストーラーでAVIの関連付けチェックを外せば問題ないようです。

■インストーラーで全てデフォルト設定のままインストールすると、
  NiVEの「VFWOutput」で出力したAVI 1.0の一部が再生できなくなった。

  →無圧縮RGB24が再生できなくなったのは上に書いたとおりですが、
    NiVEのVFWOutputで出力したAVIの場合、他のいくつかのコーデックでも
    DirectShowでの再生がおかしくなりました。例えば、UtVideoやAMV2MT、AMV3で圧縮したAVIは、
    音声がついていれば正常に映像が出ますが音声なしだと再生に失敗します。
    これらのAVIはAviUtlの「AVI/AVI2 File Reader」やNiVEの「VFWInput」などでは
    正常に読み込めるので、ファイルそのものに異常があるわけではありません。
    また、同じコーデックを使ってもAviUtlで出力した場合はDirectShowでも問題なく再生できます。

  →以下で説明しますが、インストーラーでAVIの関連付けチェックを外せば問題ないようです。

■インストール時に指定したコンテナの関連付けは、後から変更することができない?

  →上に書いたように、AVIの扱いが不便だったので、LAV Splitterの取り扱い対象から
    AVIを外そうと思い、「LAV Splitter Configuration」を開いて「Input Formats」にある
    「avi」の部分のチェックを外してみたところ、全てのAVIファイルが再生できなくなりました。\(^o^)/

    後からチェックを外せばデフォルトのAVI Splitterが呼ばれるようになると思ったのですがそうもいかないようです。
    試しに「flv」のチェックも外してみましたが、On2のFLVフィルタが呼ばれることもなく、
    全てのFLVファイルが再生できなくなりました。チェックをつけなおせば、また再生できるようになります。

  →よくわからないまま「MONOGRAM GraphStudio」を使って色々試してみた結果、
      「インストーラーでコンテナを指定した場合、関連付けのようなものが設定され、
       そのコンテナについては"LAV Splitter Source"フィルタがソースフィルタとして使用される。」
      「"LAV Splitter Configuration"の"Input Formats"は、"LAV Splitter"フィルタで
       そのコンテナを処理するかどうかのフラグを設定する。」
    という違いがあるのかなと推測しました。
    要するに、
      「LAV Splitter ConfigでAVIやFLVのチェックを外しても、関連付けの設定は外れない。」
      「インストーラーでそのコンテナが関連付けられていると、"LAV Splitter Source"を使って
       そのコンテナを処理しようとするが、LAV Splitter ConfigのInput Formatsでそのコンテナのチェックが
       外れていると処理することができず、再生エラーとなる」
    ということなのかなと。(基本知識が浅いので変なこと言ってるかもしれません。)

■結論

  上で試した結果をもとに、インストーラーで「AVI」「FLV」のチェックを外してみたところ、
  再生できなかったAVIも再生できるようになり、On2社やMPC-HCのFLVフィルタも使われるようになりました。

  そんなわけで、個人的には、LAV Filtersをフルセットで使うなら
     ●LAV Filters (インストール時にAVIとFLVのチェックを外す)
     ●MPC-Standalone Filtersの「FLV Splitter(FLVSplitter.ax)」
     ●On2 Flix Proの「On2 Flv Splitter Filter(flvsplit.dll)」「On2 Video Decoder Filter(flvdecvp6.dll)」
  という感じで再生環境を構築するのがいいかなと思ってます。

  ただ、ffdshow tryoutsのVFWデコーダーや、ポストプロセッシングフィルタも使いたいので、当面は
     ●LAV Splitter
       ※スプリッタのみインストールし、LAV Video DecoderとLAV Audio Decoderは使わない
       ※インストーラーで、AVIとFLVの関連付けは外しておく
     ●ffdshow tryouts
     ●MPC-Standalone Filtersの「FLV Splitter(FLVSplitter.ax)」
     ●On2 Flix Proの「On2 Flv Splitter Filter(flvsplit.dll)」「On2 Video Decoder Filter(flvdecvp6.dll)」
  という組み合わせでしばらく使ってみようと思います。
  要するにHaali Media SplitterをやめてLAV Splitterに変えてみるというだけですね。

  Haali Media SplitterからLAV Splitterに乗り換えてみる理由は、「対応コンテナの種類が増える」というだけで、
  スプリッタとしての性能やパフォーマンスなど細かいことについては全く調べてません。


  ※2011/09/27 23:00追記
    上の組み合わせで少し使ってみたのですが、記事冒頭に書いたように、
    うちの低スペック環境ではMP4再生時に音声が破綻しやすかったため、
    LAV Splitterもアンインストールし、Haali Media Splitterに戻しました。
    スペックさえ十分なら、対応コンテナが豊富なLAV Splitterは導入の価値がありそうなのですが。

  よく見るとx264.nlのトップページのdecoderのところには、

ffdshow video and audio decoder
During installation: Decode the following video formats with ffdshow:
'H.264 / AVC' enables x264 playback
media player classic homecinema is a player for many formats - doom9
haali media splitter is used to split mkv files
lav filters is used to split all the rest (mp4, mov, flv, mpeg-ts, etc...)

  と書いてありますね。
  マトリョーシカコンテナ(Matroska、mkv)だけはHaali Media Splitterにまかせて
  他のコンテナは全部LAV Filters(LAV Splitter)に任せちゃおうってことのようです。
  自分はとりあえずmkvを扱うことはなさそうだし、扱うようになったらHaaliも入れるようにするかな。

  なお、LAV Video Decoderには、以下のように様々な出力色空間に対応しているという特徴もあります。
     ●8bit・・・YV12、NV12、YUY2、UYVY、AYUV、RGB32、RGB24
     ●10bit・・・P010、P210、Y410
     ●16bit・・・P016、P216、Y416
  今のところ10bitや16bitを使う機会はあまりないかもしれませんが、こういう出力に対応している
  デコーダーは少ないと思うので、対応しているということだけでも覚えておくとよさそうです。

■おまけ
  インストール画面や設定画面のスクリーンショットを記事にまとめました。
      LAV Filters 0.35のインストール画面と設定画面のスクリーンショット: さまよう金の髭

|

« AviUtlと拡張編集の小ネタ KENくんからの隠しメッセージ | トップページ | LAV Filters 0.35のインストール画面と設定画面のスクリーンショット »

コメント

コメントを書く



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




トラックバック

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

この記事へのトラックバック一覧です: LAV Filters 0.35を少しだけ試してみた:

« AviUtlと拡張編集の小ネタ KENくんからの隠しメッセージ | トップページ | LAV Filters 0.35のインストール画面と設定画面のスクリーンショット »