Media Foundation中的編碼概觀
本主題概述 Microsoft Media Foundation 中提供的檔案編碼 API。
術語
編碼 是涵蓋數個不同過程的總稱:
- 將音訊或視訊串流編碼成壓縮格式。 例如,將視訊串流編碼為 H.264 視訊。
- 多路複用(“muxing”)一或多個數據流成單一位元組流。 一般而言,傳入數據流會先進行編碼。 此步驟可能涉及封包編碼數據流。
- 將複用的位元組流寫入檔案,例如 MP4 或高階系統格式(ASF)檔案。 或者,多工數據流可以透過網路傳送。
下圖顯示這三個程式:
此程式的變化包括轉碼和重新編碼:
- 轉碼 表示解碼現有的檔案、重新編碼流,以及重新多工編碼流。 轉碼可以完成,將檔案從某個編碼類型轉換成另一種編碼類型;例如,將 H.264 視訊轉換成 Windows 媒體視訊 (WMV)。 您也可以這麼做來變更編碼的比特率;視訊畫面大小;幀速率;或其他格式參數。
- 重複多工 或 重新多工 指解除文件多工並重新結合數據流,不需要進行解碼/編碼步驟。 若要變更音訊/視訊封包的多重任務處理方式、移除數據流,或合併來自兩個不同的來源檔案的數據流,可能會這麼做。
- Transrating 是轉碼的特殊案例,其中位速率會變更而不變更壓縮類型。 例如,您可以將高比特率檔案轉換成較低的比特率。 將媒體內容從電腦同步處理到可攜式裝置時,通常會使用轉譯。 如果可攜式裝置不支援高比特率,檔案可能會在複製到可攜式裝置之前進行轉譯。
下方方塊圖顯示轉碼流程。
的圖表
下列區塊圖顯示重新封裝過程。
顯示重新模擬程式圖表
本文件有時會使用 編碼 一詞來包含轉碼和重新編碼。 當需要區分它們時,說明文件會指出差異。
另請參閱:媒體基礎:基本概念。
媒體基礎編碼架構
在媒體基礎架構的最低層,下列元件類型用於編碼:
- 針對轉碼,媒體來源 用來解譯來源檔案。
- 針對編碼流程,Media Foundation Transforms 用來譯碼和編碼串流。
- 針對多工處理過程,媒體匯合器 用於多工數據流,並將多工後的數據流寫入檔案或網路。
下圖顯示轉碼案例中這些元件之間的資料流:
中使用的元件
大部分的應用程式都不會直接使用這些元件。 相反地,應用程式會使用管理這些較低層級元件的較高層級 API。 Media Foundation 提供兩個較高層級的 API 進行編碼:
-
媒體會話功能提供端到端的管線,將數據從媒體來源通過編解碼器移動,最後移至媒體匯集。 應用程式會控制媒體會話,並從媒體會話接收狀態事件。
-
來源讀取器會包裝媒體來源,並選擇性地包裝譯碼器。 它會提供應用程式的編碼或譯碼範例。 接收端寫入器會包裝媒體接收端,並可選擇性地包裝編碼器。 應用程式會將範例傳遞至 Sink Writer(資料接收寫入器)。
下圖展示媒體會話:
Transcode API (藍色陰影方塊) 是 Windows 7 中引進的一組 API,可讓您更輕鬆地設定媒體會話進行編碼。
下圖顯示來源讀取器和接收寫入器:
相關主題