使用編碼器的激活物件
若要將媒體檔案轉換成 ASF 格式,您可以使用 Windows 媒體編碼器。 若要使用這些編碼器,它們必須向系統註冊。
如需有關編碼器註冊的資訊,請參閱 設置編碼器 MFT。
- 使用編碼器的激活物件
- Windows 7 和更新版本中 編碼器列舉
- 相關主題
使用編碼器的激活對象
除了使用編碼器的 IMFTransform 介面(如 使用 CoCreateInstance 建立編碼器中所述),您可以為編碼器建立啟用物件的實例。 啟用物件可輔助建立編碼器,而媒體基礎則透過提供以下兩個函數來實現這一方法:
- MFCreateWMAEncoderActivate 來具現化 Windows Media 音訊編碼器。
- MFCreateWMVEncoderActivate 來具現化 Windows Media 視訊編碼器。
這兩個函式都需要您建立目標媒體類型,並在呼叫這些函式之前設定編碼屬性。 如果您的應用程式使用 管線層 ASF 元件 將檔案編碼為 ASF 格式,且已建立並設定 ASF 媒體接收,您可以從 ASF 媒體接收取得這組資訊。
MFCreateWMAEncoderActivate 和 MFCreateWMVEncoderActivate 將編碼器的輸出類型設定為應用程式指定的媒體類型。
注意 如果您使用 MFCreateWMAEncoderActivate 和 MFCreateWMVEncoderActivate 您可以呼叫 IMFActivate::ActivateObject 來啟動編碼器,但您無法變更編碼器的輸入和輸出媒體類型,也無法變更任何編碼屬性。
如需使用啟用物件建立 Media Foundation 物件的詳細資訊,請參閱 Activation Objects。
從 ASF 媒體接收模組取得目標媒體類型
- 藉由在 ASF 媒體匯集上呼叫 IMFMediaSink::QueryInterface,並傳遞 IID_IMFASFContentInfo 作為介面標識符,以取得 ASF 媒體匯集的 IMFASFContentInfo 指標。
- 取得與 ContentInfo 物件相關聯的 ASF 設定檔物件。
- 列舉配置檔中的數據流,以取得數據流的媒體類型。
從 ASF 媒體匯流排取得編碼屬性
如果您已在媒體接收器中設定 編碼屬性(如在檔案接收器中設定屬性所述),您可以透過在 ASF 媒體接收器上呼叫 IMFMediaSink::QueryInterface,並傳遞 IID_IPropertyStore 作為介面標識符,來獲取接收器的屬性存放區的參考。
如果您有接收端 ContentInfo 物件的指標,您可以呼叫 IMFASFContentInfo::GetEncodingConfigurationPropertyStore,以取得媒體接收端屬性存放區的參考。
請確定在 ASF 媒體接收上設定的所有編碼屬性在傳遞至 MFCreateWMAEncoderActivate 和 MFCreateWMVEncoderActivate的屬性存放區中都能得到反映。 編碼器會根據應用程式指定的設定自動設定。
在編碼拓撲中建立轉換節點時,您可以將物件類型設定為這兩個呼叫中收到的 IMFActivate 指標。 解決拓撲時,媒體會話會使用啟用物件來建立編碼器 MFT 的實例。
Windows 7 和更高版本中的編碼器列舉
針對在 Windows 7 上執行的應用程式,除了 MFTEnum 之外,您還可以 呼叫 MFTEnumEx來列舉編碼器 MFT。 此函式會傳回編碼器 MFT 的啟用物件指標。 函式的結構與上述 MFTEnum 非常類似,MFTEnumEx傳回符合搜尋準則之編碼器 MFT 的 IMFActivate 指標數位。
相關主題