制約のない VBR を構成するには

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

ストリームで制約のない可変ビット レート (VBR) エンコードを使用して、エンコードされたコンテンツで維持される平均ビット レートを指定できます。 制約のない VBR は、ストリーム全体のビット レートの分散が大きくなる可能性がある点で、通常の CBR とは異なります。

IWMStreamConfig::SetBitrate で設定されたストリームのビット レートは、目的の平均ビット レートとして使用されます。 ストリームのエンコードが完了したら、 IWMPropertyVault::GetPropertyByName を使用して 、g_wszVBRPeakg_wszBufferAverage の 2 つの追加プロパティを取得できます。 これらのプロパティは、エンコードされたコンテンツのピーク ビット レートと、コンテンツの平均バッファー ウィンドウをそれぞれ記述します。

制約のない VBR は、2 パス エンコードと組み合わせて使用する必要があります。 プロファイルで 2 パス エンコードが設定されていません。 ストリームを書き込む前に前処理パスを実行するようにライターを構成する必要があります。 2 パス エンコードの使用の詳細については、「 Two-Pass エンコードの使用」を参照してください。

制約のない VBR でエンコードされるようにプロファイル内のストリームを構成するには、次の手順を実行します。

  1. WMCreateProfileManager 関数を呼び出して、プロファイル マネージャー オブジェクトを作成します。
  2. VBR サポートを追加する既存のプロファイルを開きます。 プロファイルを開く方法の詳細については、「プロファイル の使用」を参照してください。
  3. IWMProfile::GetStream または IWMProfile::GetStreamByNumber を呼び出して、使用するストリームのストリーム構成オブジェクトを取得します。
  4. IWMStreamConfig::QueryInterface を呼び出して、ストリーム構成オブジェクトの IWMPropertyVault インターフェイスへのポインターを取得します。
  5. g_wszVBREnabled プロパティの IWMPropertyVault::SetProperty を呼び出して、ストリームの VBR エンコードを有効にします。
  6. IWMPropertyVault::SetProperty を使用して、g_wszVBRBitrateMaxとg_wszVBRBufferWindowMax両方を 0 に設定します。
  7. IWMProfile::ReconfigStream を呼び出して、ストリームに加えられた変更を保存します。
  8. プロファイルを保存するか、ライター オブジェクトに渡します。
  9. 前処理パスを実行するようにライターを構成します。

VBR ストリームの構成