列舉編解碼器格式
[與此頁面相關聯的功能 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 | 錯誤 | 假 | 真 | 真實 |
g_wszNumPasses | 1 | 2 | 1 | 2 |
若要列舉編解碼器支援的格式,請使用 IWMCodecInfo::GetCodecFormatCount 來尋找支援的編解碼器數目。 然後針對每個格式呼叫 IWMCodecInfo::GetCodecFormat。 格式索引的範圍從零,到小於支援格式總數的一個。 您可以呼叫 IWMCodecInfo2::GetCodecFormatDesc來擷取格式的描述。 使用 GetCodecFormatDesc時,您不需要使用 GetCodecFormat,因為數據流組態物件是由這兩種方法擷取。 視訊編解碼器格式不包含描述。 每個視訊編解碼器只有一種格式,用於該類型的所有數據流。
當您擷取編解碼器格式時,您會取得包含格式設定之數據流組態物件的 IWMStreamConfig 介面。
相關主題