次の方法で共有


ダイナミック レンジ コントロールを使用するには

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

オーディオ コンテンツの動的範囲は、基本的に最小ボリュームと最大ボリュームの差です。 コンテンツのダイナミック レンジが高すぎると、ユーザーは再生中に音量を繰り返し調整することがあります。 たとえば、映画は、多くの場合、高いダイナミック レンジを持っています。 多くの場合、静かなシーンの間にダイアログを理解できるように音量を調整すると、音楽や効果音を含むムービーの他の部分は、必要以上に大きくなります。

Windows Media Audio 9 Professional および Windows Media Audio 9 のロスレス コーデックでは、ダイナミック レンジ コントロールと呼ばれる機能がサポートされています。 エンコード時に、コーデックはコンテンツ内のピークと平均の振幅値を計算し、エンコードが完了すると、ライター オブジェクトはこれらの値をストリームのメタデータに格納します。 必要に応じて、アプリケーションは、プレーヤー アプリケーションとデコーダーがファイルを再生するときにヒントとして使用できるメタデータとして "ターゲット" 値を書き込むこともできます。 再生時に、アプリケーションはオーディオ ストリームに適用するダイナミック レンジ コントロールのレベルを指定できます。

Windows メディア プレーヤーは、Quiet Mode 機能としてダイナミック レンジ コントロールを実装します。

ダイナミック レンジ コントロールを使用するタイミング

ダイナミック レンジ コントロールは、コンテンツのサウンドを変更できます。 そのため、動的範囲制御を自動的に使用するようにアプリケーションを構成しないでください。 代わりに、必要に応じて動的範囲制御をオンまたはオフにする機能をユーザーに提供します。

ダイナミック レンジ コントロールの使用

再生時には、出力設定g_wszDynamicRangeControlを使用してダイナミックレンジ制御が作動します。 IWMReaderAdvanced2::SetOutputSetting を使用して設定を構成します。 値 0 (既定値) は、動的範囲を変更しないことを示します。 値が 1 または 2 の場合、ダイナミック レンジ制御を実行するためにコーデックに信号が送られます。ここで、1 は中程度のダイナミック レンジ圧縮レベル、2 は高レベルのダイナミック レンジ圧縮です。

エンコード時または再生時に、 WM/WMADRCPeakTarget 属性と WM/WMADRCAverageTarget 属性をそれぞれ設定することで、ピーク レベルと平均レベルのコーデック ターゲット PCM 値 指定できます。 これらの値はメタデータ属性として格納され、 IWMHeaderInfo3 インターフェイスのメソッドを使用してアクセスする必要があります。 プロフェッショナル コーデックまたはロスレス コーデックを使用してオーディオ ストリームをエンコードすると、 WM/WMADRCPeakReference 属性と WM/WMADRCAverageReference 属性が、元のコンテンツのピーク レベルと平均レベルに自動的に設定されます。 ターゲット値は、既定で参照と同じ値に設定されます。

再生時のデコーダーは、選択したダイナミック レンジ コントロールのレベルとターゲット値 (指定されている場合) に基づいて動的範囲を計算します。 使用可能な範囲を次の表に示します。

設定 配信されたオーディオの範囲
g_wszDynamicRangeControl = 0 (すべてのターゲット値) 元のコンテンツと同じ範囲。
g_wszDynamicRangeControl = 1 (ターゲット値が参照値と等しい) 平均レベルは維持され、ピークは平均 +12 dB に限定されます。
g_wszDynamicRangeControl = 2 (ターゲット値が参照値と等しい) 平均レベルは維持され、ピークは平均 +6 dB に限定されます。
g_wszDynamicRangeControl = 1 (ターゲット値を指定) 平均レベルは目標平均値に設定され、ピークは目標ピーク値に限定される。
g_wszDynamicRangeControl = 2 (ターゲット値を指定) 平均レベルは目標平均値に設定され、ピークは目標平均値と目標ピーク値の中央値に限定されます。

 

動的範囲制御はデコードのみの機能であり、ファイル自体のメタデータとしてのみ存在することに注意してください。 これらの設定は、特にデコーダーに使用するように指示しない限り、ファイルに格納されているコンテンツには影響しません。 Windows Media Format SDK には、エンコード時にオーディオ データの動的範囲を変更するためのメソッドはありません。

高度なトピック