相互排他
[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーとシンク ライターに置き換わりました。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
すべての ASF ファイルには、デジタル メディア データを含む 1 つ以上のストリームが含まれています。 通常の状況では、各ストリームは 1 つの出力に関連付けられます。 再生時に、リーダー オブジェクトは出力ごとにサンプルを提供します。 そのため、既定では、ASF ファイル内のすべてのストリームは、再生時にリーダーによって配信されます。
すべてのストリームをクライアントに配信したくない場合があります。 たとえば、5 つのオーディオ ストリーム (5 つの言語ごとに 1 つ) を含むビデオ ファイルを作成する場合、一度に配信するオーディオ ファイルは 1 つだけです。 相互排他は、Windows Media Format SDK の機能であり、すべて同じ出力に相当する相互排他的なストリームの数を指定できます。
相互除外は、ファイルの作成に使用されるプロファイルで定義されます。 プロファイルで相互除外を構成するには、相互除外オブジェクトを使用します。 相互排他オブジェクトにストリームを一度に 1 つずつ追加し、型を設定し、プロファイルに オブジェクトを含めます。
Windows Media Format SDK では、次の 4 種類の相互除外が認識されます。
- ビット レート
- Language
- プレゼンテーション
- Unknown
ビット レートによる相互除外
ビット レート相互除外は、特殊な種類の相互除外であり、より一般的に複数ビット レート (MBR) 相互除外と呼ばれます。 MBR 相互除外には、すべてのストリームが同じ入力から送信されますが、異なるビット レートでエンコードされるストリームが多数含まれています。 MBR でファイルを再生する場合、リーダーは使用可能な帯域幅に基づいて最適なストリームを決定します。
Windows Media Format SDK では、オーディオストリームとビデオ ストリームの MBR がサポートされています。 SDK では、複数のビデオ サイズ MBR と呼ばれる特別な種類の MBR ビデオもサポートされています。 これは通常の MBR ビデオに似ていますが、個々のストリームのフレーム サイズが異なる場合があります。 たとえば、既定の 320 x 240 ビデオ サイズのストリームと、ビットレートが高く 640 x 480 ビデオ サイズのストリームがある場合があります。
言語別の相互除外
言語ベースの相互除外は、複数の言語で記録されたコンテンツ (通常はオーディオ) で使用するように設計されています。 言語ベースの相互除外には、一意の入力から生成される複数のストリームが含まれます。 各入力内容は同じですが、言語は異なります。
言語による相互除外を機能させるには、読み取りアプリケーションに適切な言語を選択するロジックを含める必要があります。 ASF ファイルを再生するアプリケーションを作成し、言語ベースの相互除外を持つファイルをサポートする場合は、再生を開始する前に適切なストリームを選択する必要があります。
プレゼンテーション別の相互除外
プレゼンテーションベースの相互除外は、異なる縦横比でエンコードされた同じコンテンツを含むビデオ ストリームをサポートするために提供されます。 通常、これはレターボックス バージョン (縦横比 16:9) でビデオを提供する場合や、テレビ画面 (縦横比 4:3) 用に書式設定された場合に使用されます。
再生するプレゼンテーションの選択は、ほとんどの場合、ユーザーによって決定されます。 ASF ファイルを再生するアプリケーションを作成し、プレゼンテーションベースの相互除外を持つファイルをサポートする場合は、表示するプレゼンテーションの種類を選択するオプションをユーザーに提示する必要があります。
不明な相互排他
好きな条件に基づいて相互除外を作成できます。 すべてのカスタム相互除外型は、不明な型を使用して作成する必要があります。
高度な相互除外機能
相互排他を使用して、相互に排他的なグループにストリームを割り当てることもできます。 たとえば、複数の言語のオーディオ ストリームを用意し、それぞれに異なるビデオ ストリームを割り当てることができます。 相互除外を使用して、各オーディオ ストリームを対応するビデオ ストリームでグループ化し、すべてのグループを相互に排他的にします。
リーダーは、すべての相互除外に対してストリームを自動的に選択します。 MBR と言語ベースの相互除外を除くすべての種類の相互除外では、リーダーは常に既定のストリームを選択します。これは、プロファイル内の相互除外オブジェクトに追加される最初のストリームです。 MBR の場合、リーダーは再生時に使用可能な帯域幅に最も適したストリームを選択します。 既定のストリームを使用しない場合は、ファイルの読み取りを開始する前に、ストリームの選択を手動に設定できます。
手動ストリーム選択は、ファイル全体に適用されます。 同じファイル内に異なる型の相互除外がある場合、困難が発生する可能性があります。 たとえば、ファイルには、ビット レートベースの相互除外とカスタム相互除外の両方を含めることができます。 カスタム相互除外で既定以外のストリームを選択するには、手動でストリームを選択する必要があります。 ただし、手動のストリーム選択を使用する場合、リーダーは複数のビット レート ストリームを自動的に選択しません。 1 つのファイルで複数の種類の相互除外をサポートする予定の場合は、アプリケーションでこの最終的な処理を計画する必要があります。 通常、これは、通常は自動の種類の相互除外に対して独自のストリーム選択ルーチンを作成することを意味します。
関連トピック