再生時のプロファイル情報の取得
[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーとシンク ライターに置き換わりました。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
ファイルの作成に使用されるプロファイルからの情報は、ファイルのヘッダー セクションに格納されます。 どちらのリーダー オブジェクトも、ファイル ヘッダーからプロファイル情報にアクセスできます。 閲覧者からプロファイル データにアクセスする理由はいくつかあります。 最も一般的には、ストリーム、相互除外オブジェクト、帯域幅共有オブジェクトに関する情報を取得する必要があります。
非同期リーダー オブジェクトと同期リーダー オブジェクトの両方で、 IWMProfile インターフェイスに対してクエリを実行できます。 プロファイル情報に対する変更は、リーダー内のファイルに影響を与える可能性はありません。 プロファイル情報へのアクセスの詳細については、「プロファイルの 操作」を参照してください。
ストリーム情報
ストリームの構成方法を把握することが重要な場合があります。 いずれかのリーダー オブジェクトからメディア プロパティを取得すると、出力のプロパティが取得されます。 出力プロパティは、ストリームからの非圧縮データをリーダーによって配信する方法を示します。ASF ファイル内でストリームを構成する方法は説明しません。
いずれかのリーダー オブジェクトから非圧縮ストリーム サンプルを受信する場合は、プロファイル情報を使用して圧縮データの形式を識別する必要があります。 これは、圧縮ストリームを別の ASF ファイルに書き込む場合に特に重要です。
また、スマート再圧縮を使用してオーディオ ストリームを低いビット レートにトランスコードする場合は、ストリーム情報にアクセスする必要もあります。
ストリームが可変ビット レート (VBR) エンコードを使用して書き込まれたかどうかを判断できます。 どちらのリーダー オブジェクトの IWMProfile インターフェイスからも VBR 情報にアクセスすることはできません。 これは、エンコード後に VBR 情報がファイルに格納されないためです。 ストリームが VBR エンコードを使用して作成されたかどうかを確認するには、リーダー オブジェクトの IWMHeaderInfo インターフェイスへのポインターを取得し、 IWMHeaderInfo::GetAttributeByName を呼び出します。 ストリーム番号を指定し、属性名としてg_wszIsVBR渡す必要があります。
相互除外情報
相互排他を使用する読み取りアプリケーションを作成する場合は、プロファイルに含まれる相互除外オブジェクトに関する情報にアクセスする必要があります。 ビット レートを除くすべての相互除外の種類について、読み取りアプリケーションは、必要なストリーム切り替えを担当します。 ストリームを切り替えるには、どのストリームがどのストリームであるかを把握する必要があります。
帯域幅共有情報
プロファイルに含まれる帯域幅共有オブジェクトは、情報提供のみを目的として含まれます。 ライター オブジェクトもリーダー オブジェクトも、帯域幅共有データの結果としてアクションを実行しません。 読み取りアプリケーションで帯域幅共有を使用する場合は、プロファイル データから帯域幅共有情報にアクセスする必要があります。
注意
ファイルの作成に使用されるプロファイルのすべての情報がファイル ヘッダーに存在するわけではありません。 一般的なルールとして、エンコード時にのみ使用されるデータはファイルに保持されません。 これには、 IWMWriterAdvanced2::SetInputSetting メソッドを使用して設定された入力設定と、 IWMPropertyVault::SetProperty メソッドを使用して設定されたプロパティが含まれます。
関連トピック