複数言語をサポートするには

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

ストリームとメタデータの両方で複数の言語をサポートできます。 Windows Media Format SDK での複数言語サポートの中核となるのは、サポートされている言語の一覧を保持する IWMLanguageList インターフェイスです。 言語リストは、サポートされている各言語にインデックスを提供します。これは、複数の言語を処理するときに SDK のさまざまなオブジェクトで使用されます。

IWMLanguageList::AddLanguageByRFC1766String メソッドは、リストに言語を追加します。 IWMLanguageList::GetLanguageCount を使用して言語の合計数を取得し、それぞれの IWMLanguageList::GetLanguageDetails を呼び出す言語をループして、リストに既に含まれている言語を識別できます。 言語インデックスは 0 から始まります。

言語別の相互除外を構成するには

言語による単純な相互除外オブジェクトの構成は非常に簡単です。 各ストリームは言語に関連付けられます。 ストリームに関連付けられている言語は、 IWMStreamConfig3::SetLanguage を使用して設定できます。 相互に排他的なストリームがすべて構成されたら、他の型の場合と同様に、単に相互排他オブジェクトを作成します。 次に、型のCLSID_WMMUTEX_Languageを渡して IWMMutualExclusion::SetType を呼び出します。

排他的ストリームもビット レートによって相互に排他的である場合、言語によって相互に排他的なストリームはより複雑になります。 この場合は、次の手順を実行して、相互に排他的なレコードを使用する必要があります。

  1. 各言語で異なるビット レートのストリームの相互除外オブジェクトを作成します。 ビット レートによる相互除外オブジェクトの作成の詳細については、「 複数ビット レート相互除外の使用」を参照してください。
  2. 相互除外オブジェクトを作成します。 IWMMutualExclusion::SetType を呼び出し、CLSID_WMMUTEX_Languageを渡して言語別に排他性を指定します。
  3. IWMMutualExclusionQueryInterface メソッドを呼び出して、手順 2 で作成した相互排他オブジェクトの IWMMutualExclusion2 インターフェイスへのポインターを取得します。
  4. IWMMutualExclusion2::AddRecord メソッドを言語ごとに 1 回呼び出して、相互に排他的になるストリーム レコードを作成します。
  5. 手順 4 で作成したレコードごとに、 IWMMutualExclusion2::AddStreamForRecord を呼び出して適切な言語のストリームを追加します。

複数の言語のファイルを読み取る方法

リーダー オブジェクトは、ファイル内のストリームの使用可能な言語を識別するメソッドを提供します。 IWMReaderAdvanced4::GetLanguageCount を呼び出すことで、出力でサポートされている言語の数を取得できます。 その後、 IWMReaderAdvanced4::GetLanguage を呼び出して、各言語の詳細を取得できます。

再生する言語を指定するには、 IWMReaderAdvanced2::SetOutputSetting を呼び出して、その言語のインデックスをリーダーに渡します。 これにより、指定した言語が選択され、ファイル内の他の相互除外オブジェクトの自動ストリーム選択が維持されます。

高度なトピック

IWMLanguageList インターフェイス

IWMMutualExclusion インターフェイス

IWMMutualExclusion2 インターフェイス

IWMReaderAdvanced2 インターフェイス

IWMReaderAdvanced4 インターフェイス

IWMStreamConfig3 インターフェイス