So verwenden Sie das Dynamische Bereichssteuerelement
[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.]
Der dynamische Bereich eines Audioinhalts ist im Wesentlichen der Unterschied zwischen der niedrigsten Lautstärke und der maximalen Lautstärke. Wenn der dynamische Bereich des Inhalts zu hoch ist, können Benutzer die Lautstärke während der Wiedergabe wiederholt anpassen. Beispielsweise weisen Filme häufig einen hohen dynamischen Bereich auf. Wenn die Lautstärke so eingestellt wird, dass Dialoge in ruhigen Szenen verstanden werden können, sind häufig andere Teile des Films mit Musik oder Soundeffekten lauter als gewünscht.
Die codecs Windows Media Audio 9 Professional und Windows Media Audio 9 Lossless unterstützen ein Feature, das als dynamische Bereichssteuerung bezeichnet wird. Zur Codierungszeit berechnet der Codec die spitzen und durchschnittlichen Amplitudenwerte im Inhalt, und das Writer-Objekt speichert diese Werte in den Metadaten für den Stream, wenn die Codierung abgeschlossen ist. Optional kann eine Anwendung auch "Zielwerte" als Metadaten schreiben, die Playeranwendungen und der Decoder bei der Wiedergabe der Datei als Hinweise verwenden können. Zur Wiedergabezeit kann eine Anwendung die Ebene der dynamischen Bereichssteuerung angeben, die auf den Audiodatenstrom angewendet werden soll.
Windows Medienwiedergabe implementiert die Dynamische Bereichssteuerung als Funktion für den stillen Modus.
Verwendung des Dynamischen Bereichssteuerelements
Das Dynamische Bereichssteuerelement kann den Sound des Inhalts ändern. Aus diesem Grund sollten Sie Ihre Anwendung nicht so konfigurieren, dass die dynamische Bereichssteuerung automatisch verwendet wird. Bieten Sie Benutzern stattdessen die Möglichkeit, die Dynamische Bereichssteuerung bei Bedarf ein- oder auszuschalten.
Verwenden des Dynamischen Bereichssteuerelements
Zur Wiedergabezeit wird die Dynamische Bereichssteuerung mithilfe der Ausgabeeinstellung g_wszDynamicRangeControl aktiviert. Verwenden Sie IWMReaderAdvanced2::SetOutputSetting , um die Einstellung zu konfigurieren. Der Wert 0 (Standard) gibt an, dass der dynamische Bereich nicht geändert werden soll. Der Wert 1 oder 2 signalisiert dem Codec, die Dynamische Bereichssteuerung durchzuführen, wobei 1 ein moderates Maß an Dynamischer Bereichskomprimierung und 2 ein hohes Maß an Dynamischer Bereichskomprimierung ist.
Zur Codierungszeit oder zur Wiedergabezeit können Sie den Ziel-PCM-Werten des Codecs für die Spitzen- und Durchschnittswerte angeben, indem Sie die Attribute WM/WMADRCPeakTarget bzw . WM/WMADRCAverageTarget festlegen. Diese Werte werden als Metadatenattribute gespeichert und sollten mithilfe der Methoden der IWMHeaderInfo3-Schnittstelle zugegriffen werden. Wenn Sie einen Audiostream mit dem professionellen oder verlustfreien Codec codieren, werden die Attribute WM/WMADRCPeakReference und WM/WMADRCAverageReference automatisch auf die Spitzen- und Durchschnittswerte des ursprünglichen Inhalts festgelegt. Die Zielwerte werden standardmäßig auf die gleichen Werte wie die Verweise festgelegt.
Der Decoder zur Wiedergabezeit berechnet den dynamischen Bereich basierend auf der ausgewählten Ebene der Dynamischen Bereichssteuerung und den Zielwerten (falls angegeben). Die möglichen Bereiche sind in der folgenden Tabelle aufgeführt.
Einstellungen | Bereich der bereitgestellten Audiodaten |
---|---|
g_wszDynamicRangeControl = 0 (Beliebige Zielwerte) | Derselbe Bereich wie der ursprüngliche Inhalt. |
g_wszDynamicRangeControl = 1 (Zielwerte gleich Verweiswerten) | Der Durchschnittswert wird beibehalten, und Spitzen sind auf den Durchschnitt von +12 dB beschränkt. |
g_wszDynamicRangeControl = 2 (Zielwerte gleich Verweiswerten) | Der Durchschnittliche Pegel wird beibehalten, und Spitzen sind auf den Durchschnitt von +6 dB beschränkt. |
g_wszDynamicRangeControl = 1 (angegebene Zielwerte) | Durchschnittliche Ebene, die auf den Zieldurchschnittswert festgelegt ist, und Spitzen, die auf den Zielspitzwert beschränkt sind. |
g_wszDynamicRangeControl = 2 (angegebene Zielwerte) | Durchschnittliche Ebene, die auf den Zieldurchschnittswert festgelegt ist, und Spitzen, die auf den Median des Zieldurchschnitts und der Zielspitzenwerte beschränkt sind. |
Beachten Sie, dass die Dynamische Bereichssteuerung nur ein Feature der Decodierung ist und nur als Metadaten in der Datei selbst vorhanden ist. Diese Einstellungen haben keine Auswirkungen auf den in der Datei gespeicherten Inhalt, es sei denn, Sie weisen den Decoder ausdrücklich an, sie zu verwenden. Das Windows Media Format SDK bietet keine Methoden zum Ändern des dynamischen Bereichs der Audiodaten zur Codierungszeit.
Zugehörige Themen