共用方式為


Media Foundation中的編碼概觀

本主題概述 Microsoft Media Foundation 中提供的檔案編碼 API。

術語

編碼 是涵蓋數個不同過程的總稱:

  1. 將音訊或視訊串流編碼成壓縮格式。 例如,將視訊串流編碼為 H.264 視訊。
  2. 多路複用(“muxing”)一或多個數據流成單一位元組流。 一般而言,傳入數據流會先進行編碼。 此步驟可能涉及封包編碼數據流。
  3. 將複用的位元組流寫入檔案,例如 MP4 或高階系統格式(ASF)檔案。 或者,多工數據流可以透過網路傳送。

下圖顯示這三個程式:

圖表顯示編碼和多工程序

此程式的變化包括轉碼和重新編碼:

  • 轉碼 表示解碼現有的檔案、重新編碼流,以及重新多工編碼流。 轉碼可以完成,將檔案從某個編碼類型轉換成另一種編碼類型;例如,將 H.264 視訊轉換成 Windows 媒體視訊 (WMV)。 您也可以這麼做來變更編碼的比特率;視訊畫面大小;幀速率;或其他格式參數。
  • 重複多工重新多工 指解除文件多工並重新結合數據流,不需要進行解碼/編碼步驟。 若要變更音訊/視訊封包的多重任務處理方式、移除數據流,或合併來自兩個不同的來源檔案的數據流,可能會這麼做。
  • Transrating 是轉碼的特殊案例,其中位速率會變更而不變更壓縮類型。 例如,您可以將高比特率檔案轉換成較低的比特率。 將媒體內容從電腦同步處理到可攜式裝置時,通常會使用轉譯。 如果可攜式裝置不支援高比特率,檔案可能會在複製到可攜式裝置之前進行轉譯。

下方方塊圖顯示轉碼流程。

顯示轉碼流程 的圖表

下列區塊圖顯示重新封裝過程。

顯示重新模擬程式圖表

本文件有時會使用 編碼 一詞來包含轉碼和重新編碼。 當需要區分它們時,說明文件會指出差異。

另請參閱:媒體基礎:基本概念

媒體基礎編碼架構

在媒體基礎架構的最低層,下列元件類型用於編碼:

下圖顯示轉碼案例中這些元件之間的資料流:

圖表 顯示轉碼 中使用的元件

大部分的應用程式都不會直接使用這些元件。 相反地,應用程式會使用管理這些較低層級元件的較高層級 API。 Media Foundation 提供兩個較高層級的 API 進行編碼:

媒體會話

媒體會話功能提供端到端的管線,將數據從媒體來源通過編解碼器移動,最後移至媒體匯集。 應用程式會控制媒體會話,並從媒體會話接收狀態事件。

來源讀取器 加上 接收寫入器

來源讀取器會包裝媒體來源,並選擇性地包裝譯碼器。 它會提供應用程式的編碼或譯碼範例。 接收端寫入器會包裝媒體接收端,並可選擇性地包裝編碼器。 應用程式會將範例傳遞至 Sink Writer(資料接收寫入器)。

下圖展示媒體會話:

顯示媒體會話如何執行轉碼的圖表

Transcode API (藍色陰影方塊) 是 Windows 7 中引進的一組 API,可讓您更輕鬆地設定媒體會話進行編碼。

下圖顯示來源讀取器和接收寫入器:

顯示來源讀取器和接收寫入器轉碼的圖表

編碼和檔案撰寫

媒體基礎程序設計:基本概念