共用方式為


建立 ASF 檔案接收

ASF 檔案接收是媒體基礎所提供的 IMFMediaSink 實作,應用程式可用來將 ASF 媒體資料封存至檔案。 如需 ASF 媒體接收的物件模型和一般使用方式的相關資訊,請參閱 ASF 媒體接收

有兩種方式可以建立 ASF 檔案接收的實例。 您可以呼叫 MFCreateASFMediaSinkMFCreateASFMediaSinkActivate

如果您呼叫 MFCreateASFMediaSink,您必須為輸出檔案指定位元組資料流程,接收會在編碼會話期間寫入 ASF 內容。 指定的位元組資料流程必須具有可搜尋且可寫入的功能,否則 MFCreateASFMediaSink 呼叫會失敗,並出現錯誤碼E_FAIL。 此呼叫會建立進程內檔案接收物件,並傳回檔案接收之 IMFMediaSink 介面的指標。

如果您呼叫 MFCreateASFMediaSinkActivate,您必須指定檔案接收將寫入媒體資料的輸出檔 URL。 在此情況下,檔案接收會在內部建立位元組資料流程。 函式會傳回檔案接收之 IMFActivate 介面的指標。 收件者

當您的編碼拓撲設計如下時,請考慮 MFCreateASFMediaSinkActivate 而不是 MFCreateASFMediaSink

  • 編碼拓撲適用于受保護媒體路徑 (PMP) ,且檔案接收會使用跨進程。

  • 拓撲的輸出節點是使用檔案接收之啟始物件的傳回指標所建立,而您的應用程式會依資料流程編號來追蹤檔案接收中的資料流程。

    注意

    您可以呼叫 IMFActivate::ActivateObject來啟用檔案接收。 不過,您不需要明確啟用物件。 媒體會話會追蹤啟用物件,並在編碼會話期間自動啟用檔案接收。

     

  • 資料流程資訊是在 ContentInfo 物件中設定。 下一個子區段中的解構。

建立 ASF 檔案接收之後,必須先設定它才能建置拓撲。 檔案接收必須知道下列資訊,才能產生輸出檔案。

  • 基本資料流程資訊
  • 編碼模式資訊
  • 中繼資料

檔案接收會實作 ASF ContentInfo 物件 ,並公開 IMFASFContentInfo 介面,讓應用程式可以使用它來設定與資料流程和編碼相關的資訊。 根據您呼叫以建立檔案接收的函式,有兩種方式可取得 IMFASFContentInfo 介面的參考。

  • 如果您呼叫MFCreateASFMediaSink函式,應用程式必須在傳回的檔案接收上呼叫IMFMediaSink::QueryInterface來查詢IMFASFContentInfo介面。
  • 如果您選擇呼叫 MFCreateASFMediaSinkActivate,此函式預期您在呼叫之前擁有完整設定的 ContentInfo 物件。 若要這樣做,您必須呼叫 MFCreateASFContentInfo 來建立空的 ContentInfo 物件,然後使用所有必要的資訊加以設定。 將設定的 ContentInfo 物件傳遞至 MFCreateASFMediaSinkActivate ,以接收接收啟始物件的指標。 您無法使用傳回的啟用物件來啟用檔案接收,然後變更任何資料流程或編碼資訊。

如需設定接收資料流程和特定屬性的相關資訊,請參閱下列主題:

ASF 媒體接收

管線層 ASF 元件

媒體基礎中的 ASF 支援