設定不受限制的 VBR
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
您可以在資料流程上使用不受限制的變數位元速率 (VBR) 編碼,以指定將在編碼內容中維護的平均位元速率。 未受限制的 VBR 與一般 CBR 不同,因為整個資料流程的位元速率差異可能更大。
以 IWMStreamConfig::SetBitrate設定的資料流程位元速率會當做所需的平均位元速率使用。 當資料流程編碼完成時,您可以使用 IWMPropertyVault::GetPropertyByName 來擷取兩個額外的屬性: g_wszVBRPeak 和 g_wszBufferAverage。 這些屬性分別描述編碼內容的尖峰位元速率和內容的平均緩衝區視窗。
未受限制的 VBR 必須與雙階段編碼搭配使用。 未在設定檔中設定雙階段編碼。 您必須將寫入器設定為在寫入資料流程之前執行前置處理傳遞。 如需使用雙階段編碼的詳細資訊,請參閱 使用 Two-Pass 編碼。
若要將設定檔中的資料流程設定為使用不受限制的 VBR 進行編碼,請執行下列步驟:
- 呼叫 WMCreateProfileManager 函式來建立設定檔管理員物件。
- 開啟您想要新增 VBR 支援的現有設定檔。 如需開啟設定檔的詳細資訊,請參閱 使用設定檔。
- 呼叫 IWMProfile::GetStream 或 IWMProfile::GetStreamByNumber,以取得您想要使用的資料流程組態物件。
- 呼叫IWMStreamConfig::QueryInterface,以取得資料流程組態物件的IWMPropertyVault介面指標。
- 呼叫g_wszVBREnabled屬性的IWMPropertyVault::SetProperty來啟用資料流程的 VBR 編碼。
- 使用IWMPropertyVault::SetProperty將兩者都設定為零g_wszVBRBitrateMax和g_wszVBRBufferWindowMax。
- 呼叫 IWMProfile::ReconfigStream來儲存對資料流程所做的變更。
- 儲存設定檔,或將它傳遞至寫入器物件。
- 設定寫入器以執行前置處理傳遞。
相關主題