使用接收寫入器
概觀
檔案容器類型
接收寫入器具有數個檔案容器類型的內建支援。 如需完整清單,請參閱 MF_TRANSCODE_CONTAINERTYPE。 您可以藉由撰寫自訂 媒體接收來支援其他容器類型。 當您建立接收寫入器的新實例時,會指定檔案容器。
資料流程格式
針對每個資料流程,應用程式必須指定下列專案。
- 輸入格式是應用程式傳送至接收寫入器的格式。
- 輸出格式是將寫入檔案的格式。
輸入和輸出格式可以是壓縮或未壓縮。 接收寫入器支援下列組合:
- 具有壓縮輸出的未壓縮輸入。 這是典型的案例,用於編碼或轉碼案例。 必須有 Microsoft Media Foundation 編碼器,才能接受輸入類型和編碼至輸出類型。
- 具有相同輸出的壓縮輸入。 使用此組合來重新撰寫檔案,而不進行轉碼。
- 具有相同輸出的未壓縮輸入。 使用此組合將未壓縮的音訊或視訊寫入檔案容器。
除非編碼器提供這些函式,否則接收寫入器不支援視訊調整大小、畫面播放速率轉換或音訊重新取樣。 否則,應用程式可以使用 數位訊號處理器 來轉換輸入資料,再將資料傳送至
建立接收寫入器
有兩個函式會建立接收寫入器:
- MFCreateSinkWriterFromURL 會採用輸出檔案的 URL 或位元組資料流程的指標。 此函式會在內部建立媒體接收。
- MFCreateSinkWriterFromMediaSink 會取得應用程式已建立之媒體接收的指標。
如果您使用其中一個內建媒體接收,則 最好使用 MFCreateSinkWriterFromURL 函式,因為呼叫端不需要設定媒體接收。
MFCreateSinkWriterFromURL方法提供數個選項來指定檔案容器的類型。 在最簡單的情況下,函式會使用 URL 中的副檔名來選取檔案容器。 如需詳細資訊,請參閱函式參考頁面。
例如,下列程式碼會指定 URL 的檔案名 「output.wmv」。 根據副檔名,接收寫入器會載入 ASF 媒體接收 ,以建立進階系統格式 (ASF) 檔案。
HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);
在 MFCreateSinkWriterFromMediaSink的情況下,檔案類型是由媒體接收所決定。
相關主題