共用方式為


使用編碼器的激活物件

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

如需有關編碼器註冊的資訊,請參閱 設置編碼器 MFT

使用編碼器的激活對象

除了使用編碼器的 IMFTransform 介面(如 使用 CoCreateInstance 建立編碼器中所述),您可以為編碼器建立啟用物件的實例。 啟用物件可輔助建立編碼器,而媒體基礎則透過提供以下兩個函數來實現這一方法:

這兩個函式都需要您建立目標媒體類型,並在呼叫這些函式之前設定編碼屬性。 如果您的應用程式使用 管線層 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 Media Encoders

啟用物件