共用方式為


使用Sink寫入器

概述

檔案容器類型

接收寫入器有數種檔案容器類型的內建支援。 如需完整清單,請參閱 MF_TRANSCODE_CONTAINERTYPE。 您可以藉由撰寫自訂 媒體接收器來支援其他容器類型。 當您建立接收寫入器的新實例時,會指定檔案容器。

數據流格式

針對每個數據流,應用程式必須指定下列專案。

  • 輸入格式 是應用程式傳送給接收端寫入器的格式。
  • 輸出格式是將寫入檔案的格式。

輸入和輸出格式可以壓縮或未壓縮。 匯流寫入器支援下列組合:

  • 未壓縮的輸入搭配壓縮的輸出。 這是典型的案例,並用於編碼或轉碼案例。 Microsoft Media Foundation 編碼器必須能夠接受輸入類型和編碼至輸出類型。
  • 具有相同輸出的壓縮輸入。 使用此組合來重新命名檔案,而不需轉碼。
  • 未壓縮的輸入產生相同的輸出。 使用此組合,將未壓縮的音訊或視訊寫入檔案容器。

除非編碼器提供這些功能,否則接收寫入器不支持視訊重設大小、幀速率轉換或音訊重新取樣。 否則,應用程式可以使用 Digital Signal Processors 來轉換輸入數據,然後再將數據傳送至

建立接收寫入器

有兩個函式可建立 Sink 寫入器:

如果您使用內建的媒體接收器,建議使用 MFCreateSinkWriterFromURL 函式,因為呼叫者無需設定媒體接收器。

MFCreateSinkWriterFromURL 方法提供數個選項來指定檔案容器的類型。 在最簡單的情況下,函式會使用URL中的擴展名來選取檔案容器。 如需詳細資訊,請參閱函式參考頁面。

例如,下列程式代碼會指定 URL 的檔名 「output.wmv」。。 根據檔名的副檔名,接收器寫入程式會載入 ASF 媒體接收端,以建立高級系統格式 (ASF) 檔案。

    HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);

MFCreateSinkWriterFromMediaSink的情況下,文件類型是由媒體匯流排所決定。

資料接收寫入器