ATI DirectShowフィルター

ATI DirectShowフィルター

GraphEditを利用したATI DirectShowフィルターの使用で、エンコード設定のカスタマイズ
(2006.02.26追記)
GraphEdit は、DirectShowフィルターを操作(追加や変更)するためのGUI ツール。
DirectShow には、メディアの再生、キャプチャ、フォーマット変換など様々な機能が用意されており、
フィルターというプラグインを追加することで機能拡張が行える。フィルターには、デコード機能以外
にも動画の画質調整などの機能を付加することが出来る。
参考:DirectShowフィルターの分類
Splitter
MPEG2では「デマルチプレクサ」と呼ぶ事が多い。動画を映像ストリームと音声
ストリームに分離して担当デコーダーに引き渡す役割。
Decoder
伸張する働き。「フィルター(狭義)」として扱われる。
Compressors
圧縮する働き。「コーデック(狭義)」として扱われる。
Renderer
デジタルデータを元の映像・音声に戻す処理(レンダリング)の事。
映像のレンダラは VideoRenderer、音声のレンダラは Default DirectSound
Device。
Mux
多重化(映像と音声を一つにすること)するためのフィルター。
FileWriter
ファイルを生成するためのフィルター。拡張子を付けて保存する。
  変換・圧縮作業の流れは、Splitterで分離、Decoderで圧縮解除、Compressors でエンコード、Muxに
  よる多重化、FileWriterによるファイル生成という過程になる。
そこで今回 GraphEditを用いて、ATI Avivo Video Converterのインストールで導入されるDirectShow
フィルターを調整して、MPEG2を素材として MPEG-4(DivX互換), H.264(AVI), WMV9及びH.264(一般的)
ファイルに変換させる方法を検討してみた。

GraphEditの入手先
    WindowsMediaテクノロジーはDirectXを使った技術で、GraphEditは「DirectX SKD」に含まれるツールだ
    が、DirectX SKDの容量は大きいので、GraphEdit(Built:011008)単体を ここから入手。

操作手順
1) GraphEditを起動し素材ファイル(例えばcinesco.mpeg)をドラッグ&ドロップすると下図のようなフローチャ
  ートが表示される。 ここには再生時に必要なフィルター類が表示される。
   なお、ATI Avivo Video Converterをインストールすると、意図しないMPEG2デコーダーの InterVideo
   Video Decoderが勝手に読み込まれてしまう
ので、DirectShow Filter Toolここを参照)を用いて
   Moonlight-Elecard MPEG2 Video Decoderを読み込むように変更した。
2) 図右下に並ぶ二つのフィルターDefault DirectSound DeviceとVideoRendereは、再生時に必要なフィル
  ターであり変換時には必要が無いので、これを選択し、[Del] を押して削除する。
3) 次にGraph -> Insert Filters ->
  DirectShow Filters -と辿って必要なATI 社
  のフィルタを導入する。
  ・Videoのサイズ調整フィルター:
    ATI Video Scaler Filter
  ・
VideoとAudioのエンコード用フィルター:
    ATI MPEG Video Encoder
    ATI MPEG Audio Encoder
  ・VideoとAudioの多重化用フィルター:
    ATI MPEG Multiplexer
  ・ファイルに書き出す為のフィルター:
    ATI MPEG File Writer
   この際 作成するデータの出力先に拡張子
   付き名前(H264.avi など)を記述する。

  *OSが用意しているFile Writerでは上手
   く出力出来ない。
4) 導入されたフィルター類を下図のように配置して、各々のOutとInputをマウスでドラッグして接続する。
5) 各フィルターのプロパティ を調整する。   
5-1)ATI Video Scaler Filterの設定
全変換共通でAuto
に設定。

ここで映像のサイズ
を変更しても反映さ
れない!



   5-2)ATI MPEG Video Encoderの設定
GOP Length
 
B-frames
 
De-interlacing
 
Aspect Ratio
 
WMV9はSquareに!

上図はH.264(AVI)の場合を示す。MPEG-4(DivX互換)の場合は MPEG-4(DivX) を、
   WMV9の場合は WMV9を、H.264(一般的)の場合はH.264(Generic)を選択。
注意
 1) Load presetで[Low]をクリックすると、Handheldframe rateにチェックが入るが、出力
   動画は15fpsになってしまう。
 2) シネスコサイズのWMV9を作成する場合は、Aspect RatioをSquareにしないと比率が
   4:3になってしまう。


5-3)ATI MPEG Audio Encoderの設定
図はH.264(AVI)
とMPEG-4(DivX
互換)の場合を
示す。

WMV9の場合
はWMAudioを
選択
H.264(一般的)
の場合
はMPEG4AAC
を選択


5-4)ATI MPEG Multiplexerの設定
図はH.264(AVI)
とMPEG-4(DivX
互換)の場合を
示す。

WMV9の場合は
ASFを選択
H.264(一般的)の
場合は
MP4 Genericを
選択


6) 最後に再生ボタンを押して変換を開始する。

   変換中、進行状況は表示
   されない。
   再生ボタンがアクティブに
   なった時点でエンコードは
   終了する。

成績
 I. 出力ファイルのプロパティ
   素材はMPEG2_MP2.mpg(サイズ640x272のシネスコ)。目標トータルビットレート464+64=528kbpsに設定
 Output Format
出力されたファイルのプロパティ
フォーマット形式
(映像_音声.コンテナ)
画像サイズ
(ピクセル)
映像ビットレート
(kbps)
音声周波数・レート
(kHz, kbps)
 MPEG-4(DivX互換)
DivX4_MP3.avi
640x272
428.0
32kHz, 64kbps
 WMV9
WMV9_WMA.wmv
640x272
464.0
22.05kHz, 64kbps
 H.264(AVI)
H.264_MP3.avi
640x272
406.0
32kHz, 64kbps
 H.264(一般的)
H.264_mp4a.mp4
640x272
400.6
32kHz, 64kbps
結果:
映像のフレームレートは、29.97fpsとなりカスタマイズ不可。
WMV9の音声周波数は、22.05kHzとなり設定した値にならなかった。
映像ビットレートは、やや低めに抑えられも、ほぼ目的の値で出力された。
 II. 変換に必要な時間
    素材MPEG2_MP2.mpg(サイズ528x352, 3分00秒)を用いて、WMV9へ変換するのに必要な時間を、
    AzWM9 Script Frontendここを参照)によるWindows Media エンコーダの場合と比較した。

変 換 ソ フ ト
エンコード時間
出力ファイルのプロパティ
サイズ
映像(WMV9)
音声(WMA)
 GraphEdit:ATI DirectShow
25秒
11.0MB
528x352, 440kbps
22.05kHz, 64kbps
 Avivo Video Converter
18秒
15.5MB
480x352, 2610kbps
44.1kHz,128kbps
 AzWM9 Script Frontend
3分32秒
10.8MB
528x352, 436kbps
44.1kHz,64kbps
結果:
ATI Avivo Video Converterと同様に極めて短時間に変換出来た
*Avivo Video Converterで出力されるファイルの映像サイズ、音声のビットレートは、
  勝手に変更されてしまう。映像のビットレートは 992kbpsより低く設定出来ず、大きく
  ずれて出力されてしまう。
 III. Web配信試験
    変換出力したWMV9ファイルとH.264(一般的)ファイルのデモ(約 3.9MB, 1分)試験
      結果:いずれのファイルもプログレッシブダウンロード方式で、疑似ストリーミング  
          再生させることは出来ず、ダウンロード完了近く又は完了後でないと上手く
          再生しない(MacではWMV9ファイルを再生出来ない)
→ ここから視聴

結語
1) ATI Avivo Video Converterと比べてやや煩雑な操作を必要とするが、
   1-1) 映像ビットレートは設定した目標近くに出力される。音声ビットレートの変更も可能。
   1-2) WMV9への変換では、映像ビットレートを低く(例えば500kbpsに)設定することが可能。
   1-3) ビットレートとは別にエンコード品質の設定が可能。
   なお、今回検討していないが、GOP長さ、Bフレームの数、インターレースの解除の設定も出来る
     ようになっている。また、逆テレシネなども可能。
   しかし、映像のサイズやフレームレートの変更は出来ない。
 2) 今回の使用方法では、ATI Avivo Video Converterと同様に驚速スピードで変換出来る。
しかし残念ながら、
 3) Web配信用に、FastStart再生が可能なWMVやMP4ムービーへの変換は出来ない! 

<参考>
 
GraphEditによる変換については、素材がWMVの場合は「AVIVO Video Converterを使ってみました
   及び「DirectX SDKを使用した変換」を、素材がOGMの場合は
OGM→AVI変換」を参照。
  なお、GraphEditで作業を行っても、Windows 内部の DirectShow の矢印のつながり方が恒久的に
   変更されてしまう事はなく、あくまでロードされているファイル一回限りの臨時の仮想的な編集なので、
   矢印のつなぎ方を間違えても、GraphEditがクラッシュする以外の害は発生しない、と。


| Kenのムービー計画へ >動画狂コーナーへ |