使用接收寫入器

概觀

檔案容器類型

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

資料流程格式

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

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

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

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

除非編碼器提供這些函式,否則接收寫入器不支援視訊調整大小、畫面播放速率轉換或音訊重新取樣。 否則,應用程式可以使用 數位訊號處理器 來轉換輸入資料,再將資料傳送至

建立接收寫入器

有兩個函式會建立接收寫入器:

如果您使用其中一個內建媒體接收,則 最好使用 MFCreateSinkWriterFromURL 函式,因為呼叫端不需要設定媒體接收。

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

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

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

MFCreateSinkWriterFromMediaSink的情況下,檔案類型是由媒體接收所決定。

接收寫入器