ASF ファイルを書き込むフィルター グラフの作成
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
Windows Media ベースのコンテンツを作成する場合、アプリケーションでは通常、次のいずれかのシナリオが使用されます。
- 他の形式のコンテンツを Windows メディア形式に変換またはコード変換する。
- Windows Media ベース (ネイティブ ストリーム形式) ではないコンテンツを ASF ファイルに挿入する。
- ライブ データをキャプチャし、Windows Media Format にすぐにエンコードします。
ASF ファイルのコード変換
WM ASF ライターを使用して、さまざまな方法でファイル トランスコード フィルター グラフを作成できます。 最も簡単な方法は、フィルター グラフに WM ASF ライターを追加し、IGraphBuilder::RenderFile メソッドを使用してグラフを自動的に構築することです。
別の方法として、各フィルターをグラフに手動で追加し、ピンを接続します。 WM ASF ライターを追加した後、既定のプロファイルが適していない場合は IConfigAsfWriter メソッドを使用して構成し、WM ASF ライター入力ピンをアップストリーム フィルターの対応する出力ピンに接続します。
次の図は、一般的な WM ASF ライターのコード変換フィルター グラフの構成を示しています。
ASF ファイルへのネイティブ ストリーム形式の挿入
既定では、WM ASF ライター フィルターでは、入力ピンに圧縮されていないオーディオ ストリームとビデオ ストリームが想定され、Windows Media Audio コーデックと Windows Media Video コーデックを使用してストリームが圧縮されます。 ただし、ASF ファイル コンテナーは、任意の種類のデータに使用できます。 デジタル メディア データを ASF ファイル コンテナーに配置することで、コンテンツをトランスコードすることなく、メタデータやデジタル著作権管理 (DRM) などの ASF によって提供される機能を追加できます。
Windows Media ベースではないコンテンツを含む ASF ファイルを作成するには、アプリケーションで WM ASF ライターの上流にあるフィルター グラフ内のストリームを圧縮し、 次のように IConfigAsfWriter2::SetParam を呼び出して WM ASF ライターの圧縮メカニズムをバイパスする必要があります。
pConfigAsfWriter2->SetParam(AM_CONFIGASFWRITER_PARAM_DONTCOMPRESS,TRUE,0)
次に、目的のプロファイルでフィルターを構成します。 入力ストリームのメディアの種類がプロファイルの形式と完全に一致することが不可欠です。 場合によっては、入力ストリームの形式を調べて、それに合わせてカスタム プロファイルを作成することが必要になる場合があります。
WM ASF ライターをアップストリーム フィルターに接続する場合は、IGraphBuilder::ConnectDirect メソッドを使用します。 フィルターの "バイパス圧縮" モードが無効になるため、IGraphBuilder::Connect や IGraphBuilder::RenderFile などの "インテリジェント接続" メソッドを使用してフィルターを接続しないでください。
デバイスから ASF ファイルへの直接キャプチャ
オーディオまたはビデオを ASF ファイルに直接キャプチャする場合、フィルター グラフは、使用されているキャプチャ デバイスの種類に応じて、次のようになります。
ビデオおよびオーディオ キャプチャ グラフの作成の詳細については、次のトピックを参照してください。
WM ASF ライターは、すべてのピンが接続されていない限り実行されません。 WM ASF Writer を既定のシステム プロファイル (推奨されない) またはオーディオストリームとビデオ ストリームを含むプロファイルを構成する場合は、ストリームごとに入力ピンが作成され、それらの各ピンを接続する必要があります。 たとえば、オーディオをキャプチャする予定がない場合は、オーディオ ピンが作成されないように、ビデオのみのプロファイルでフィルターを構成してください。
関連トピック