使用編碼器的啟用物件

若要將媒體檔案轉換成 ASF 格式,您可以使用 Windows 媒體編碼器。 若要使用這些編碼器,您必須向系統註冊這些編碼器。

如需編碼器註冊的相關資訊,請參閱 具現化編碼器 MFT

使用編碼器的啟用物件

除了使用編碼器的 IMFTransform 介面 (使用 CoCreateInstance 建立編碼器) 中所述,您可以為編碼器建立啟用物件的實例。 啟用物件可協助建立編碼器,而 Media Foundation 提供下列兩個適用于此方法的功能:

這兩個函式都需要您建立目標媒體類型,並在呼叫這些函式之前設定編碼屬性。 如果您的應用程式使用 管線層 ASF 元件 將檔案編碼為 ASF 格式,而且已經建立並設定 ASF 媒體接收,您可以從 ASF 媒體接收取得這組資訊。

MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate 會將編碼器的輸出類型設定為應用程式指定的媒體類型。

注意 如果您使用 MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate ,您可以呼叫 IMFActivate::ActivateObject 來啟用編碼器,但無法變更編碼器的輸入和輸出媒體類型,也無法變更任何編碼屬性。

如需使用啟用物件建立 Media Foundation 物件的詳細資訊,請參閱 Activation Objects

從 ASF 媒體接收取得目標媒體類型

  1. 在 ASF 媒體接收上呼叫IMFMediaSink::QueryInterface並傳遞IID_IMFASFContentInfo作為介面識別碼,以取得 ASF 媒體接收之IMFASFContentInfo指標的指標。
  2. 取得與 ContentInfo 物件相關聯的 ASF 設定檔物件。
  3. 列舉設定檔中的資料流程,以取得資料流程的媒體類型。

從 ASF 媒體接收取得編碼屬性

  1. 如果您已在媒體接收中設定 編碼屬性 (在檔案接收中設定 屬性) 中所述,您可以在 ASF 媒體接收上呼叫 IMFMediaSink::QueryInterface 並傳遞 IID_IPropertyStore 做為介面識別碼,以參考接收的屬性存放區。

  2. 如果您有接收之 ContentInfo 物件的指標,您可以呼叫 IMFASFContentInfo::GetEncodingConfigurationPropertyStore 以取得媒體接收之屬性存放區的參考。

    請確定在 ASF 媒體接收上設定的所有編碼屬性都會反映在傳遞至 MFCreateWMAEncoderActivateMFCreateWMVEncoderActivate的屬性存放區中。 編碼器會根據應用程式指定的設定自動設定。

在編碼拓撲中建立轉換節點時,您可以將物件類型設定為在這兩個呼叫中收到的 IMFActivate 指標。 解析拓撲時,媒體會話會使用啟用物件來建立編碼器 MFT 的實例。

Windows 7 和更新版本中的編碼器列舉

對於在 Windows 7 上執行的應用程式,除了 MFTEnum 之外,您還可以呼叫 MFTEnumEx來列舉編碼器 MFT。 此函式會傳回編碼器 MFT 啟用物件的指標。 函式的結構與上述 MFTEnum 非常類似,但 MFTEnumEx會針對符合搜尋準則的編碼器 MFT 傳回 IMFActivate 指標陣列。

具現化編碼器 MFT

Windows 媒體編碼器

啟用物件