使用Sink寫入器
概述
檔案容器類型
接收寫入器有數種檔案容器類型的內建支援。 如需完整清單,請參閱 MF_TRANSCODE_CONTAINERTYPE。 您可以藉由撰寫自訂 媒體接收器來支援其他容器類型。 當您建立接收寫入器的新實例時,會指定檔案容器。
數據流格式
針對每個數據流,應用程式必須指定下列專案。
- 輸入格式 是應用程式傳送給接收端寫入器的格式。
- 的 輸出格式是將寫入檔案的格式。
輸入和輸出格式可以壓縮或未壓縮。 匯流寫入器支援下列組合:
- 未壓縮的輸入搭配壓縮的輸出。 這是典型的案例,並用於編碼或轉碼案例。 Microsoft Media Foundation 編碼器必須能夠接受輸入類型和編碼至輸出類型。
- 具有相同輸出的壓縮輸入。 使用此組合來重新命名檔案,而不需轉碼。
- 未壓縮的輸入產生相同的輸出。 使用此組合,將未壓縮的音訊或視訊寫入檔案容器。
除非編碼器提供這些功能,否則接收寫入器不支持視訊重設大小、幀速率轉換或音訊重新取樣。 否則,應用程式可以使用 Digital Signal Processors 來轉換輸入數據,然後再將數據傳送至
建立接收寫入器
有兩個函式可建立 Sink 寫入器:
- MFCreateSinkWriterFromURL 接受輸出檔案的 URL 或指向位元組流的指標。 此函式會在內部地建立媒體接收器。
- MFCreateSinkWriterFromMediaSink 會接收指向已由應用程式建立的媒體匯流端點的指標。
如果您使用內建的媒體接收器,建議使用 MFCreateSinkWriterFromURL 函式,因為呼叫者無需設定媒體接收器。
MFCreateSinkWriterFromURL 方法提供數個選項來指定檔案容器的類型。 在最簡單的情況下,函式會使用URL中的擴展名來選取檔案容器。 如需詳細資訊,請參閱函式參考頁面。
例如,下列程式代碼會指定 URL 的檔名 「output.wmv」。。 根據檔名的副檔名,接收器寫入程式會載入 ASF 媒體接收端,以建立高級系統格式 (ASF) 檔案。
HRESULT hr = MFCreateSinkWriterFromURL(L"output.wmv", NULL, NULL, &pSinkWriter);
在 MFCreateSinkWriterFromMediaSink的情況下,文件類型是由媒體匯流排所決定。
相關主題