Unterstützung mehrerer Sprachen

[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Es wurde von Source Reader und Sink Writer abgelöst. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit quellleser und Senkenschreiber anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Sie können mehrere Sprachen sowohl in Streams als auch in Metadaten unterstützen. Der Kern der Unterstützung mehrerer Sprachen im Windows Media Format SDK ist die IWMLanguageList-Schnittstelle , die eine Liste der unterstützten Sprachen verwaltet. Die Sprachliste gibt jeder unterstützten Sprache einen Index, der in verschiedenen Objekten im SDK verwendet wird, wenn mehrere Sprachen verwendet werden.

Die IWMLanguageList::AddLanguageByRFC1766String-Methode fügt der Liste eine Sprache hinzu. Sie können die Sprachen identifizieren, die bereits in der Liste enthalten sind, indem Sie die Gesamtzahl der Sprachen mit IWMLanguageList::GetLanguageCount abrufen und dann die Sprachen durchlaufen, die IWMLanguageList::GetLanguageDetails für jede aufrufen. Der Sprachindex ist nullbasiert.

So konfigurieren Sie den gegenseitigen Ausschluss nach Sprache

Das Konfigurieren eines einfachen gegenseitigen Ausschlussobjekts nach Sprache ist sehr einfach. Jeder Stream ist jetzt einer Sprache zugeordnet. Die einem Stream zugeordnete Sprache kann mit IWMStreamConfig3::SetLanguage festgelegt werden. Nachdem alle sich gegenseitig ausschließenden Datenströme konfiguriert wurden, erstellen Sie einfach ein gegenseitiges Ausschlussobjekt wie bei jedem anderen Typ. Rufen Sie dann IWMMutualExclusion::SetType auf und übergeben CLSID_WMMUTEX_Language für den Typ.

Datenströme, die sich durch Sprache gegenseitig ausschließen, werden komplizierter, wenn sich die exklusiven Streams auch gegenseitig nach Bitrate ausschließen. In diesem Fall müssen Sie sich gegenseitig ausschließende Datensätze verwenden, indem Sie die folgenden Schritte ausführen:

  1. Erstellen Sie ein Gegenseitiges Ausschlussobjekt für die Streams unterschiedlicher Bitraten in jeder Sprache. Weitere Informationen zum Erstellen eines gegenseitigen Ausschlussobjekts nach Bitrate finden Sie unter Verwenden des gegenseitigen Ausschlusses mit mehreren Bitraten.
  2. Erstellen Sie ein Objekt für gegenseitigen Ausschluss. Rufen Sie IWMMutualExclusion::SetType auf, und übergeben Sie CLSID_WMMUTEX_Language, um exklusiv nach Sprache anzugeben.
  3. Rufen Sie einen Zeiger auf die IWMMutualExclusion2-Schnittstelle des in Schritt 2 erstellten Objekts für gegenseitigen Ausschluss ab, indem Sie die QueryInterface-Methode von IWMMutualExclusion aufrufen.
  4. Rufen Sie die IWMMutualExclusion2::AddRecord-Methode einmal für jede Sprache auf, um Streamdatensätze zu erstellen, die sich gegenseitig ausschließen.
  5. Fügen Sie für jeden in Schritt 4 erstellten Datensatz die Streams der entsprechenden Sprache mit Aufrufen von IWMMutualExclusion2::AddStreamForRecord hinzu.

So lesen Sie Dateien mit mehreren Sprachen

Das Reader-Objekt stellt Methoden bereit, um die verfügbaren Sprachen von Streams in einer Datei zu identifizieren. Sie können die Anzahl der unterstützten Sprachen für eine Ausgabe abrufen, indem Sie IWMReaderAdvanced4::GetLanguageCount aufrufen. Sie können dann Details zu jeder Sprache mit Aufrufen von IWMReaderAdvanced4::GetLanguage abrufen.

Sie können die wiedergegebene Sprache angeben, indem Sie den Index dieser Sprache mit einem Aufruf von IWMReaderAdvanced2::SetOutputSetting an den Leser übergeben. Dadurch wird die angegebene Sprache ausgewählt, während die automatische Datenstromauswahl für alle anderen Gegenseitigkeitsausschlussobjekte in der Datei beibehalten wird.

Weiterführende Themen

IWMLanguageList-Schnittstelle

IWMMutualExclusion-Schnittstelle

IWMMutualExclusion2-Schnittstelle

IWMReaderAdvanced2-Schnittstelle

IWMReaderAdvanced4-Schnittstelle

IWMStreamConfig3-Schnittstelle