Share via


Microsoft Media Foundation) (編碼方法

大部分Windows媒體音訊和視訊編解碼器都支援多種編碼方法。 瞭解每個方法的使用方式和時機,可協助您建立高品質的壓縮內容。

編碼方法會將焦點放在解碼器用來管理壓縮輸入資料的緩衝區上。 此緩衝區是由資料流程的位元速率所定義,以每秒的位數為單位,以及以毫秒為單位的緩衝區視窗。 編碼時,編解碼器會遵守緩衝區的擷取。 如需緩衝區的詳細資訊,請參閱 流失貯體緩衝區模型

常數位元速率編碼

其中一個Windows媒體音訊和視訊編解碼器編碼的任何資料流程的位元速率不是固定的。 CBR) 編碼 (常數位元速率,因此有點誤導的詞彙。 CBR 編碼資料流程的區別功能是小型緩衝區視窗,可限制樣本大小的變化。 CBR 編碼主要用於透過網路串流至目的地的內容。 在這種情況下,請務必依賴一致的頻寬使用量。

從組態的觀點來看,CBR 編碼與開始編碼之前的其他模式不同,您可以設定輸出內容的平均位元速率,以及套用至該位元速率的緩衝區視窗。 在其他模式中,當您設定編碼器時,其中一或兩個值都是未知的,而且會在編碼時由編解碼器計算。 CBR 是Windows媒體編碼器 DMO 所使用的標準編碼模式。

Two-Pass固定位元速率編碼

標準 CBR 只會使用單一編碼傳遞。 您會提供內容做為輸入範例,而編解碼器會壓縮內容並傳回輸出範例。 您也可以處理輸入樣本兩次。 在第一次通過時,編解碼器會執行計算,以優化內容的編碼方式。 在第二階段,編解碼器會使用第一次傳遞期間收集的資料來編碼內容。

雙傳遞 CBR 編碼有許多優點。 它通常會透過標準 CBR 編碼產生顯著的品質提升,而不需要變更任何緩衝需求。 這讓此編碼模式非常適合透過網路串流處理的內容。 唯一無法進行雙傳遞 CBR 的情況是當您從即時來源編碼內容,且無法使用第二個階段時。

雙傳遞 CBR 資料流程的輸出媒體類型與標準 CBR 資料流程的輸出媒體類型相同;您仍然指定要使用的位元速率和緩衝區視窗。 設定DMO時,您必須將其設定為執行兩個階段。 當您完成傳送第一次通過的樣本時,您必須通知DMO。

Quality-Based變數位元速率編碼

因為 CBR 編碼實際上不會維護固定位元速率,所以在 VBR (VBR) 之間的差別可能有點模糊。 CBR 與 VBR 之間的主要差異是所使用的緩衝區視窗大小。 相較于 CBR 編碼資料流程,VBR 編碼資料流程通常會有大型緩衝區視窗。 品質型 VBR 不例外,在於您未為其定義位元速率或緩衝區視窗。 相反地,您可以設定品質值。 然後編解碼器會嘗試壓縮資料,讓編碼媒體的品質在其持續期間保持一致,而不論產生的資料流程的緩衝區需求為何。

以品質為基礎的 VBR 會使用單一編碼傳遞,而且通常會建立大型壓縮資料流程。 編碼完成時,編解碼器會設定緩衝區需求,讓解碼器可以解壓縮資料。 編碼的 VBR 串流不適合透過網路進行串流處理,因此品質型 VBR 應該只用于本機播放案例, (或下載和播放) 。

不受限制的變數位元速率編碼

不同于以品質為基礎的 VBR,不受限制的 VBR 不會編碼為特定品質等級。 相反地,它會將內容編碼為最高可能的品質,同時維持指定的位元速率。 未受限制的 VBR 會使用兩個編碼傳遞,而且類似于雙傳遞 CBR,但您未指定資料流程的緩衝區視窗設定。 這表示,只要平均位元速率小於或等於您設定的值,資料流程中個別樣本的大小就沒有任何限制。

不受限制的 VBR 使用有限,因為有幾個播放案例需要符合其緩衝區需求。 編解碼器可以將緩衝區視窗設定為編碼之後所需的任何值,讓您無法控制緩衝區大小。 在大部分情況下,如果您不擔心緩衝區大小或頻寬使用量的一致性,您應該使用以品質為基礎的 VBR。

Peak-Constrained變數位元速率編碼

最後的編碼模式是尖峰限制的 VBR。 如同未受限制的 VBR,此模式會使用兩個編碼傳遞和編碼至指定的位元速率。 不過,使用尖峰限制的 VBR,您也會設定編碼的尖峰值。 尖峰值類似于一般緩衝區組態值:有尖峰位元速率和尖峰緩衝區視窗。 檔案會編碼為符合尖峰值所描述的緩衝區,且條件是資料流程的整體平均位元速率等於或小於您指定的平均位元速率值。

限制的 VBR 可能難以概念化。 以下是考慮使用的緩衝模型最簡單的方式。 假設資料流程是 CBR 資料流程,其中包含用來定義緩衝區的尖峰位元速率和尖峰緩衝區視窗。 一般而言,尖峰位元速率相當高。 編碼器可確保您所指出的預期平均位元速率值會維持在資料流程持續時間內。 在資料流程的任何特定時間點,平均位元速率保證大於位大小總計,除以資料流程持續時間以秒為單位) 。

請考慮下列範例:您可以設定平均位元速率為每秒 16,000 位的資料流程、每秒 48,000 位的尖峰位元速率,以及尖峰緩衝區視窗為 3,000 (3 秒) 。 用於資料流程的緩衝區大小為 144,000 位, (每秒 48,000 位 x 3 秒,) 由尖峰值決定。 編碼器會壓縮資料以符合該緩衝區。 此外,資料流程的平均位元速率必須是 16,000 或更少。 如果編碼器需要製作一些非常大的樣本來處理複雜的內容區段,它可以利用大型緩衝區大小。 但資料流程的其他部分必須以較低的位元速率編碼,使平均值降低至指定的層級。

尖峰限制 VBR 編碼對於具有有限緩衝區容量和某些資料速率限制的播放裝置很有用。 常見的範例是用於 DVD 的編碼方式。

使用 VBR 編碼

Windows Media 轉碼器