ASF ファイルの読み取り

[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーシンク ライターによって置き換えられます。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

Windows Media Format SDK を使用して、ASF ファイルからメディア サンプルを配信できます。 リーダー オブジェクトと同期リーダー オブジェクトの 2 つのオブジェクトを使用してサンプルを取得します。

リーダー オブジェクトは、Windows Media Format SDK の元の読み取りオブジェクトです。 リーダー オブジェクトは、非同期アーキテクチャを使用して、サンプルをアプリケーションにプッシュします。 リーダー オブジェクトを使用してビルドされたアプリケーションでは、このマルチスレッド モデルによって生成されるさまざまなメッセージとイベントに応答するコールバック関数を実装する必要があります。 わかりやすくするために、このセクションではリーダー オブジェクトを非同期リーダーと参照します。

同期リーダー オブジェクトは、このバージョンの Windows Media Format SDK の新機能です。 同期リーダーは、ASF ファイルからのサンプルの処理で複数のスレッドを使用しません。 同期リーダーを使用してビルドされたアプリケーションは、リーダーが送信するのを待つのではなく、必要に応じてサンプルを取得します。

ASF ファイルを読み取るアプリケーションを作成するときは、使用するリーダー オブジェクトを選択する必要があります。 一般に、Windows メディア ベースのコンテンツを配信するように設計されたアプリケーションは非同期リーダーを使用して作成する必要があり、ASF ファイルを編集するように設計されたアプリケーションは同期リーダーを使用して作成する必要があります。

次の表に、両方のリーダー オブジェクトの主な機能を示します。 この表は、アプリケーションに使用するオブジェクトを特定するのに役立ちます。

機能 非同期リーダー 同期リーダー
出力番号による非圧縮サンプルの読み取り はい はい
ストリーム番号で圧縮されたサンプルを読み取る はい はい
ストリーム番号による圧縮されていないサンプルの読み取り いいえ はい
インターネット サイトから読み取る はい いいえ
メタデータの読み取り はい はい
プレゼンテーション時間をシークする はい はい
フレームをシークする はい はい
マーカーをシークする はい いいえ
再生中に圧縮されたサンプル配信と圧縮されていないサンプル配信を切り替える いいえ はい
IStream インターフェイスを使用してファイルを開く はい はい

 

次のセクションでは、2 つのリーダー オブジェクトの操作について詳しく説明します。

セクション 説明
出力の操作 出力を使用および操作する方法について説明します。 両方のリーダー オブジェクトに適用されます。
ファイル読み取り用のバッファーの割り当て 独自のバッファー プールを使用して、リーダーまたは同期リーダーによって提供されるサンプルを保持する方法について説明します。
再生時のメタデータの読み取り 再生時にメタデータのサポートを利用する方法について説明します。 両方のリーダー オブジェクトに適用されます。
再生時のプロファイル情報の取得 開いているファイルのプロファイル情報にアクセスする方法について説明します。 両方のリーダー オブジェクトに適用されます。
マルチチャネル オーディオの読み取り マルチチャネル オーディオを正しくデコードするようにライターを構成する方法について説明します。
コンテンツのレンダリング 圧縮されていないサンプルのレンダリングに関連する問題について説明します。 両方のリーダー オブジェクトに適用されます。
最高のビデオシークパフォーマンスを得る ビデオ シークのパフォーマンスを向上させる方法について説明します。
非同期リーダーを使用したファイルの読み取り 非同期リーダー オブジェクトを使用して ASF ファイルを読み取る方法について説明します。
同期リーダーを使用したファイルの読み取り 同期リーダー オブジェクトを使用して ASF ファイルを読み取る方法について説明します。
DirectX ビデオ アクセラレーションの有効化 ビデオをデコードするために一部のビデオ カードのハードウェア アクセラレーション機能を使用するために DirectX ビデオ アクセラレーションを実装する方法について説明します。

 

プログラミング ガイド

リーダー オブジェクト

同期リーダー オブジェクト