列舉編解碼器格式
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
編解碼器格式是串流組態物件,其中包含來自編解碼器的資料。 每個編解碼器格式都包含編解碼器支援的媒體組態。 大部分的音訊編解碼器都支援有限的格式,每個格式都是由編解碼器列舉,而且可以使用 IWMCodecInfo的 方法來存取。 另一方面,影片編解碼器只提供單一格式。 這是因為視訊串流具有比音訊串流設定更具彈性的變數,例如畫面大小。 使用視訊串流時,您必須填入一些串流組態值;音訊資料流程組態應該只編輯以指派名稱、連線名稱和資料流程號碼。 如需詳細資訊,請參閱 所有資料流程的通用設定。
列舉的編解碼器格式取決於目前的編解碼器列舉設定,這些設定是使用 IWMCodecInfo3::SetCodecEnumerationSetting 進行設定。 目前僅支援兩個編解碼器屬性:g_wszNumPasses,它會指定編解碼器將執行的編碼傳遞數目,以及g_wszVBREnabled,指定編解碼器是否會使用變數位元速率編碼。 任何編解碼器支援的編碼傳遞數目上限為 2,因此有四個不同的組態可供擷取編解碼器,如下表所示。
CBR) 資料流程 (固定位元速率 | 2 階段 CBR 資料流程 | 以品質為基礎的變數位元速率 (VBR) 資料流程 | 以位元速率為基礎的 VBR 資料流程 (限制或不受限制的) | |
---|---|---|---|---|
g_wszVBREnabled | false | FALSE | TRUE | true |
g_wszNumPasses | 1 | 2 | 1 | 2 |
若要列舉編解碼器支援的格式,請使用 IWMCodecInfo::GetCodecFormatCount 來尋找支援的編解碼器數目。 然後針對每個格式呼叫 IWMCodecInfo::GetCodecFormat 。 格式索引的範圍從零到小於支援格式總數的一個。 您可以呼叫 IWMCodecInfo2::GetCodecFormatDesc來擷取格式的描述。 使用 GetCodecFormatDesc時,您不需要使用 GetCodecFormat,因為這兩種方法都會擷取資料流程組態物件。 視訊編解碼器格式不包含描述。 每個視訊編解碼器只有一種格式,用於該類型的所有資料流程。
當您擷取編解碼器格式時,您會取得包含格式設定之資料流程組態物件的 IWMStreamConfig 介面。
相關主題