Web 影片編解碼器指南

本指南介紹了您最可能在網路上遇到或考慮使用的影片編解碼器,總結了它們的功能以及任何相容性和實用性問題,並提供了幫助您為專案影片選擇正確編解碼器的建議。

由於未壓縮影片資料體積龐大,因此有必要對其進行顯著壓縮才能儲存,更不用說透過網路傳輸了。想象一下儲存未壓縮影片所需的資料量

  • 全綵色(每畫素 4 位元組)的高畫質 (1920x1080) 影片的單幀為 8,294,400 位元組。
  • 以典型的每秒 30 幀計算,每秒高畫質影片將佔用 248,832,000 位元組(約 249 MB)。
  • 一分鐘的高畫質影片將需要 14.93 GB 的儲存空間。
  • 一個相當典型的 30 分鐘視訊會議大約需要 447.9 GB 的儲存空間,而一部 2 小時的電影將佔用近 1.79 TB(即 1790 GB)

所需儲存空間不僅巨大,而且傳輸此類未壓縮影片所需的網路頻寬也將非常大,達到 249 MB/秒——不包括音訊和開銷。這就是影片編解碼器發揮作用的地方。就像音訊編解碼器處理聲音資料一樣,影片編解碼器壓縮影片資料並將其編碼成一種格式,以便以後可以解碼並播放或編輯。

大多數影片編解碼器都是有損的,這意味著解碼後的影片與源不完全匹配。一些細節可能會丟失;丟失的程度取決於編解碼器及其配置方式,但作為一般規則,壓縮程度越高,細節和保真度丟失越多。也存在一些無損編解碼器,但它們通常用於本地播放的存檔和儲存,而不是用於網路傳輸。

常見編解碼器

以下影片編解碼器是網路上最常用的編解碼器。對於每個編解碼器,還列出了可以支援它們的容器(檔案型別)。每個編解碼器都提供了一個指向下方某個部分的連結,該部分提供了有關該編解碼器的更多詳細資訊,包括您可能需要了解的特定功能和相容性問題。

編解碼器名稱(短) 完整編解碼器名稱 容器支援
AV1 AOMedia 影片 1 MP4WebM
AVC (H.264) 高階影片編碼 3GPMP4
H.263 H.263 影片 3GP
HEVC (H.265) 高效率影片編碼 MP4
MP4V-ES MPEG-4 影片基本流 3GPMP4
MPEG-1 MPEG-1 第 2 部分影片 MPEGQuickTime
MPEG-2 MPEG-2 第 2 部分影片 MP4MPEGQuickTime
Theora 已棄用 Theora Ogg
VP8 影片處理器 8 3GPOggWebM
VP9 影片處理器 9 MP4OggWebM

影響編碼影片的因素

與任何編碼器一樣,影響編碼影片大小和質量的因素主要分為兩類:源影片格式和內容特性,以及編碼影片時所用編解碼器的特性和配置。

最簡單的指導原則是:任何使編碼影片看起來更像原始未壓縮影片的因素,通常也會使最終資料更大。因此,這始終是大小與質量之間的權衡。在某些情況下,為了降低資料大小而犧牲更多質量是值得的;在其他時候,質量損失是不可接受的,因此有必要接受一種會導致相應檔案更大的編解碼器配置。

源影片格式對編碼輸出的影響

源影片格式對輸出的影響程度因編解碼器及其工作方式而異。如果編解碼器將媒體轉換為內部畫素格式,或者以簡單畫素以外的方式表示影像,則原始影像的格式沒有任何區別。然而,幀速率和顯然的解析度等因素總是會對媒體的輸出大小產生影響。

此外,所有編解碼器都有其優點和缺點。有些在處理特定形狀和圖案方面存在問題,或者不擅長複製銳利邊緣,或者傾向於在黑暗區域丟失細節,或者存在任何數量的可能性。這一切都取決於底層的演算法和數學原理。

源影片格式和內容對編碼影片質量和大小的潛在影響
特性 對質量的影響 對大小的影響
色彩深度(位深度) 色彩位深度越高,影片中實現的色彩保真度質量越高。此外,在影像的飽和部分(即顏色純淨且強烈的部分,例如明亮、純淨的紅色:rgb(255 0 0 / 100%)),每分量低於 10 位(10 位顏色)的色彩深度會產生色帶,即漸變無法在沒有可見顏色階梯的情況下表示。 根據編解碼器,更高的色彩深度可能會導致更大的壓縮檔案大小。決定因素是壓縮資料使用的內部儲存格式。
幀速率 主要影響影像中運動的感知平滑度。在一定程度上,幀速率越高,運動看起來越平滑、越真實。最終達到邊際效益遞減點。有關詳細資訊,請參閱下面的幀速率 假設編碼過程中幀速率沒有降低,較高的幀速率會導致壓縮影片檔案更大。
運動 影片壓縮通常透過比較幀、找出它們的不同之處以及構建包含足夠資訊的記錄來更新前一幀以近似後一幀的外觀。連續幀之間的差異越大,這些差異就越大,壓縮在避免將偽影引入壓縮影片方面的效果就越差。 運動引入的複雜性導致更大的中間幀(由於幀之間差異數量更多)。因此,以及其他原因,影片中的運動越多,輸出檔案通常就越大。
噪聲 畫面噪聲(如膠片顆粒效果、灰塵或其他影像粗糙度)會引入可變性。可變性通常會使壓縮更加困難,導致由於需要刪除細節以實現相同壓縮水平而損失更多質量。 影像中的可變性(例如噪聲)越多,壓縮過程就越複雜,演算法將影像壓縮到相同程度的可能性就越小。除非您以忽略部分或全部由噪聲引起的變化的方式配置編碼器,否則壓縮影片將更大。
解析度(寬度和高度) 在相同的螢幕尺寸下呈現的更高解析度影片,通常能夠更準確地描繪原始場景,除非在壓縮過程中引入了效果。 影片解析度越高,其尺寸就越大。這在影片最終大小中起著關鍵作用。

這些因素對最終編碼影片的影響程度將根據具體情況(包括您使用的編碼器及其配置方式)而異。除了通用編解碼器選項外,編碼器還可以配置為在編碼過程中降低幀速率、清除噪聲和/或降低影片的整體解析度。

編解碼器配置對編碼輸出的影響

用於編碼影片的演算法通常使用多種通用技術中的一種或多種來執行其編碼。一般來說,任何旨在減小影片輸出大小的配置選項都可能會對影片的整體質量產生負面影響,或將某些型別的偽影引入影片。還可以選擇無損編碼形式,這將導致更大的編碼檔案,但在解碼時完美再現原始影片。

此外,每個編碼器實用程式在處理源影片的方式上可能存在差異,從而導致輸出質量和/或大小的差異。

影片編碼器配置對質量和大小的影響
特性 對質量的影響 對大小的影響
無失真壓縮 無質量損失 無失真壓縮不能像有失真壓縮那樣顯著減小整體影片大小;最終檔案可能仍然太大,不適合一般用途。
有失真壓縮 在一定程度上,偽影和其他形式的質量下降會發生,具體取決於特定編解碼器和應用的壓縮程度 編碼影片與源影片偏離的程度越大,實現更高壓縮率就越容易
質量設定 質量配置越高,編碼影片看起來就越像原始媒體 一般來說,更高的質量設定會導致更大的編碼影片檔案;真實程度因編解碼器而異
位元率 質量通常隨位元率升高而提高 更高的位元率本身會導致更大的輸出檔案

編碼影片時可用的選項以及分配給這些選項的值不僅因編解碼器而異,而且還取決於您使用的編碼軟體。您的編碼軟體隨附的文件將幫助您瞭解這些選項對編碼影片的具體影響。

壓縮偽影

偽影是有損編碼過程的副作用,其中丟失或重新排列的資料導致可見的負面影響。一旦偽影出現,它可能會持續一段時間,因為影片的顯示方式。影片的每一幀都是透過對當前可見幀應用一組更改來呈現的。這意味著任何錯誤或偽影都會隨著時間的推移而複合,導致影像中出現故障或以其他方式奇怪或意想不到的偏差,並持續一段時間。

為了解決這個問題並縮短影片資料中的查詢時間,影片檔案中會定期插入關鍵幀(也稱為幀內幀I 幀)。關鍵幀是完整幀,用於修復當前可見的任何損壞或偽影殘留。

混疊

混疊是一個通用術語,指從編碼資料重構後看起來與壓縮前不同的任何事物。混疊有多種形式;您可能看到的最常見的形式包括

莫爾條紋

當源影像中的圖案和編碼器操作方式在空間上略有失準時,會產生莫爾條紋(一種大尺度空間干涉圖案)。然後,編碼器生成的偽影在解碼時會在源影像的圖案中引入奇怪的、漩渦狀的效果。

a brick wall showing swirling effect similar to waves due to the moire pattern

階梯效應

階梯效應是一種空間偽影,當應該平滑的對角線直線或曲線邊緣呈現鋸齒狀外觀時發生,看起來有點像一組樓梯。這就是“抗鋸齒”濾鏡正在減少的效果。

Photo of diagonal lines that look like a staircase due to aliasing causing a staircase effect

車輪效應

車輪效應(或頻閃效應)是電影中常見的視覺效果,其中旋轉的車輪由於幀速率和壓縮演算法之間的相互作用而顯得以錯誤的速度旋轉,甚至反向旋轉。同樣的效應也可能發生在任何移動的重複圖案上,例如鐵軌上的枕木、路邊的電線杆等。這是一個時間(基於時間)混疊問題;旋轉速度干擾了壓縮或編碼過程中執行的取樣頻率。

Turning wheel due to aliasing causing a wagon wheel effect.

彩色邊緣

彩色邊緣是一種視覺偽影,表現為場景中彩色物體邊緣出現的雜色。這些顏色與幀內容沒有故意的顏色關係。

清晰度損失

在編碼影片過程中移除資料需要丟失一些細節。如果施加足夠的壓縮,影像的部分或可能全部可能會失去清晰度,導致輕微的模糊或朦朧外觀。

清晰度損失會使影像中的文字難以閱讀,因為文字——尤其是小文字——是非常注重細節的內容,微小的改動會顯著影響可讀性。

振鈴效應

有失真壓縮演算法可能會引入振鈴效應,這是一種現象,即物體外部區域被壓縮演算法生成的彩色畫素汙染。當演算法使用跨越物體與其背景之間銳利邊界的塊時,就會發生這種情況。這在較高壓縮級別下尤其常見。

Example of the ringing effect

請注意上方星星邊緣的藍色和粉色條紋(以及階梯狀和其他顯著的壓縮偽影)。這些條紋就是振鈴效應。振鈴效應在某些方面類似於蚊子噪聲,不同之處在於振鈴效應或多或少是穩定不變的,而蚊子噪聲則會閃爍和移動。

振鈴是另一種偽影,它可能使影像中包含的文字難以閱讀。

海報化

當壓縮導致漸變中的顏色細節丟失時,就會發生海報化。影像不是透過區域內的各種顏色平滑過渡,而是變得塊狀,出現近似原始影像外觀的色塊。

Bald eagle photo with blotchy resolution.

請注意上面照片中白頭鷹羽毛(以及背景中的雪鴞)顏色的塊狀。由於這些海報化偽影,羽毛的細節大部分都丟失了。

等高線

等高線色帶是一種特定形式的海報化,其中色塊在影像中形成條帶或條紋。當影片以過粗的量化配置編碼時,就會發生這種情況。結果,影片內容呈現出“分層”外觀,即沒有平滑的漸變和過渡,而是顏色之間的過渡 abrupt,導致出現色帶。

Example of an image whose compression has introduced contouring

在上面的示例影像中,請注意天空是如何呈現不同深淺藍色條紋的,而不是隨著天空顏色向地平線變化而呈現一致的漸變。這就是等高線效應。

蚊子噪聲

蚊子噪聲是一種時間偽影,表現為噪聲或邊緣忙碌,呈現為一種閃爍的模糊或閃爍,大致沿著具有硬邊緣或前景物體與背景之間銳利過渡的物體邊緣外部。這種效應在外觀上可能類似於振鈴

Example of an image whose compression has introduced mosquito noise.

上面的照片顯示了許多地方存在蚊子噪聲,包括橋樑周圍的天空。在右上角,一個插圖顯示了影像中展示蚊子噪聲的部分的特寫。

蚊子噪聲偽影最常見於 MPEG 影片中,但只要使用離散餘弦變換 (DCT) 演算法,它就可能發生;例如,這包括 JPEG 靜止影像。

運動補償塊邊界偽影

影片壓縮通常透過比較兩個幀並記錄它們之間的差異,一幀接一幀,直到影片結束。當攝像機固定在位,或者幀中的物體相對靜止時,這種技術效果很好,但如果幀中有大量運動,幀之間的差異數量可能非常大,以至於壓縮不起任何作用。

運動補償是一種尋找運動(無論是攝像機還是視場中物體的運動)並確定移動物體在每個方向上移動了多少畫素的技術。然後儲存該偏移量,以及無法僅透過該偏移量描述的移動畫素的描述。實質上,編碼器找到移動的物體,然後構建一個內部幀,該幀看起來像原始幀,但所有物體都已平移到其新位置。理論上,這近似於新幀的外觀。然後,為了完成這項工作,找到剩餘的差異,然後將物體偏移集和畫素差異集儲存在表示新幀的資料中。描述這種偏移和畫素差異的物件稱為殘差幀

原始幀 幀間差異 運動補償後的差異
Original frame of video Differences between the first frame and the following frame. Differences between the frames after shifting two pixels right
觀看者看到的第一個完整幀。 這裡,只看到了第一幀和後續幀之間的差異。其他一切都是黑色的。仔細觀察,我們可以看到這些差異大部分來自水平攝像機移動,這使其成為運動補償的良好候選者。 為了最小化不同畫素的數量,這裡我們透過首先將第一幀向右移動兩個畫素,然後取差值來考慮攝像機的平移。這補償了攝像機的平移,允許兩幀之間有更多的重疊。
圖片來自 維基百科

運動補償有兩種通用型別:全域性運動補償塊運動補償。全域性運動補償通常調整攝像機運動,如跟蹤、推拉、平移、傾斜、滾動以及上下運動。塊運動補償處理區域性變化,尋找影像中可以使用運動補償編碼的較小部分。這些塊通常是固定大小的網格,但也存在允許可變塊大小甚至塊重疊的運動補償形式。

然而,由於運動補償可能會出現偽影。這些偽影沿著塊邊界出現,表現為銳利邊緣,產生虛假的振鈴效應和其他邊緣效應。這些是由於殘差幀編碼中涉及的數學原理,在被下一個關鍵幀修復之前很容易被注意到。

縮小幀尺寸

在某些情況下,縮小影片尺寸可能有助於改善影片檔案的最終大小。雖然尺寸的即時損失或播放的平滑度可能是負面因素,但仔細的決策可以帶來良好的最終結果。如果將 1080p 影片在編碼前縮小到 720p,則生成的影片可能會小得多,同時具有更高的視覺質量;即使在播放時重新放大,結果也可能優於以全尺寸編碼原始影片並接受滿足尺寸要求所需的質量損失。

降低幀速率

同樣,您可以完全從影片中刪除幀並降低幀速率以進行補償。這有兩個好處:它使整體影片更小,並且更小的尺寸允許運動補償為您完成更多工作。例如,與其計算由於幀間運動而相距兩個畫素的兩幀的運動差異,不如跳過其他每幀可能導致計算出四畫素移動的差異。這使得攝像機的整體運動可以透過更少的殘差幀來表示。

影片內容在人眼看來不再是運動之前,絕對最小幀速率約為每秒 12 幀。低於此值,影片就會變成一系列靜止影像。電影通常是每秒 24 幀,而標清電視約為每秒 30 幀(略少,但足夠接近),高畫質電視則在每秒 24 到 60 幀之間。從 24 FPS 到更高,通常會被認為是令人滿意的平滑;30 或 60 FPS 是理想的目標,具體取決於您的需求。

最終,關於您可以做出哪些犧牲的決定完全取決於您和/或您的設計團隊。

編解碼器詳情

AV1

AOMedia Video 1AV1)編解碼器是由開放媒體聯盟專門為網際網路影片設計的開放格式。它比VP9H.265/HEVC實現更高的資料壓縮率,並且比AVC高出多達 50%。AV1 完全免版稅,旨在用於<video>元素和WebRTC

AV1 目前提供三個配置檔案:主(main)高(high)專業(professional),對色彩深度和色度子取樣的支援逐漸增加。此外,還指定了一系列級別(levels),每個級別都定義了影片一系列屬性的限制。這些屬性包括幀尺寸、畫素影像區域、顯示和解碼速率、平均和最大位元率,以及編碼/解碼過程中使用的瓦片和瓦片列的數量限制。

例如,AV1 2.0 級提供最大幀寬度為 2048 畫素,最大高度為 1152 畫素,但其最大幀大小(以畫素為單位)為 147,456,因此在 2.0 級下,您實際上無法擁有 2048x1152 的影片。然而值得注意的是,至少對於 Firefox 和 Chrome 而言,目前在執行軟體解碼時,這些級別實際上被忽略了,解碼器只是盡其所能根據提供的設定播放影片。然而,為了將來的相容性,您應該保持在所選級別的限制範圍內。

目前 AV1 的主要缺點是它非常新,並且支援仍在整合到大多數瀏覽器中。此外,編碼器和解碼器仍在進行效能最佳化,硬體編碼器和解碼器仍主要處於開發階段而非生產階段。因此,將影片編碼為 AV1 格式需要很長時間,因為所有工作都是在軟體中完成的。

暫時,由於這些因素,AV1 尚未準備好成為您的首選影片編解碼器,但您應該留意它在未來投入使用。

支援的位元率

因影片級別而異;理論最大值在 6.3 級達到 800 Mbps

請參閱 AV1 規範的級別表,其中描述了每個級別的最大解析度和速率。

支援的幀速率 因級別而異;例如,2.0 級的最大幀率為 30 FPS,而 6.3 級可達到 120 FPS
壓縮 有損基於 DCT 的演算法
支援的幀大小 8 x 8 畫素到 65,535 x 65535 畫素,每個尺寸都可以取這些值之間的任何值
支援的顏色模式
配置檔案 色彩深度 色度子取樣
8 或 10 4:0:0(灰度)或 4:2:0
8 或 10 4:0:0(灰度)、4:2:0 或 4:4:4
專業 8、10 或 12 4:0:0(灰度)、4:2:0、4:2:2 或 4:4:4
HDR 支援
可變幀速率 (VFR) 支援
瀏覽器相容性
特性 Chrome Edge Firefox Firefox 安卓 Opera Safari
AV1 支援 70 75 67 113 57 17
容器支援 ISOBMFF、MPEG-TS、MP4WebM
RTP / WebRTC 相容
支援/維護組織 開放媒體聯盟
規範 https://aomediacodec.github.io/av1-spec/av1-spec.pdf
許可 免版稅,開放標準

AVC (H.264)

MPEG-4 規範套件的高階影片編碼AVC)標準由相同的 ITU H.264 規範和 MPEG-4 第 10 部分規範指定。它是一種基於運動補償的編解碼器,廣泛用於當今各種媒體,包括廣播電視、RTP視訊會議以及藍光光碟的影片編解碼器。

AVC 具有高度靈活性,具有多種功能各異的配置檔案;例如,受限基線配置檔案專為視訊會議和移動場景設計,使用的頻寬低於主配置檔案(在某些地區用於標清數字電視)或高配置檔案(用於藍光光碟影片)。大多數配置檔案使用 8 位顏色分量和 4:2:0 色度子取樣;高 10 位配置檔案增加了對 10 位顏色的支援,而高階形式的高 10 位配置檔案增加了 4:2:2 和 4:4:4 色度子取樣。

AVC 還具有特殊功能,例如支援同一場景的多個檢視(多檢視影片編碼),這使得(除其他外)能夠製作立體影片。

然而,AVC 是一種專有格式,其技術涉及眾多專利,由多個方擁有。AVC 媒體的商業使用需要許可證,但只要終端使用者可以免費觀看,Via LA 專利池不要求對 AVC 格式的流媒體網際網路影片收取許可費。

WebRTC 的非瀏覽器實現(任何不包括 JavaScript API 的實現)必須支援 AVC 作為 WebRTC 呼叫中的編解碼器。雖然 Web 瀏覽器不要求這樣做,但有些瀏覽器支援。

在 Web 瀏覽器的 HTML 內容中,AVC 具有廣泛的相容性,許多平臺都支援 AVC 媒體的硬體編碼和解碼。但是,在決定在您的專案中使用 AVC 之前,請務必瞭解其許可要求

支援的位元率 因級別而異
支援的幀速率 因級別而異;最高可達 300 FPS
壓縮 有損基於 DCT 的演算法,儘管可以在影像中建立無損宏塊
支援的幀大小 高達 8,192 x 4,320 畫素
支援的顏色模式

一些更常見或有趣的配置檔案

配置檔案 色彩深度 色度子取樣
受限基線 (CBP) 8 4:2:0
基線 (BP) 8 4:2:0
擴充套件 (XP) 8 4:2:0
主 (MP) 8 4:2:0
高 (HiP) 8 4:0:0(灰度)和 4:2:0
漸進高 (ProHiP) 8 4:0:0(灰度)和 4:2:0
高 10 (Hi10P) 8 到 10 4:0:0(灰度)和 4:2:0
高 4:2:2 (Hi422P) 8 到 10 4:0:0(灰度)、4:2:0 和 4:2:2
高 4:4:4 預測 8 到 14 4:0:0(灰度)、4:2:0、4:2:2 和 4:4:4
HDR 支援 是;混合對數伽馬或高階 HDR/SL-HDR;兩者都是 ATSC 的一部分
可變幀速率 (VFR) 支援
瀏覽器相容性 所有版本的 Chrome、Edge、Firefox、Opera 和 Safari

Firefox 對 AVC 的支援取決於作業系統的內建或預裝 AVC 及其容器編解碼器,以避免專利問題。

容器支援 3GPMP4
RTP / WebRTC 相容
支援/維護組織 MPEG / ITU
規範 https://mpeg.chiariglione.org/standards/mpeg-4/advanced-video-coding.html
https://www.itu.int/rec/T-REC-H.264
許可 專有,擁有眾多專利。商業用途需要許可證。請注意,可能適用多個專利池。

H.263

ITU 的 H.263 編解碼器主要用於低頻寬環境。特別是,它專注於 PSTN(公共交換電話網路)、RTSP 和 SIP(基於 IP 的視訊會議)系統上的視訊會議。儘管針對低頻寬網路進行了最佳化,但它對 CPU 的要求相當高,可能無法在低端計算機上充分執行。資料格式類似於 MPEG-4 第 2 部分。

H.263 從未在網路上廣泛使用。H.263 的變體已被用作其他專有格式的基礎,例如 Flash 影片或 Sorenson 編解碼器。然而,沒有任何主要瀏覽器預設包含 H.263 支援。某些媒體外掛已啟用對 H.263 媒體的支援。

與大多數編解碼器不同,H.263 從每幀(影像)的最大位元率(或 BPPmaxKb)的角度定義了編碼影片的基本要素。在編碼過程中,會選擇 BPPmaxKb 的一個值,然後影片的每幀都不能超過此值。最終位元率將取決於此值、幀速率、壓縮以及所選解析度和塊格式。

H.263 已被 H.264 取代,因此被視為傳統媒體格式,如果可以的話,您通常應該避免使用。在新專案中使用 H.263 的唯一真正原因是,如果您需要在 H.263 是最佳選擇的非常舊的裝置上獲得支援。

H.263 是一種專有格式,擁有專利,由包括 Telenor、Fujitsu、Motorola、Samsung、Hitachi、Polycom、Qualcomm 等在內的多家組織和公司持有。要使用 H.263,您有法律義務獲得相應的許可證。

支援的位元率 不受限制,但通常低於 64 kbps
支援的幀速率 任意
壓縮 有損基於 DCT 的演算法
支援的幀大小

最高 1408 x 1152 畫素。

H.263 的第 1 版規定了一組支援的影像尺寸。後續版本可能支援其他解析度。

支援的顏色模式 YCbCr;每種影像格式(sub-QCIF、QCIF、CIF、4CIF 或 16CIF)都定義了畫素的幀大小,以及每幀使用的亮度和色度樣本的行數
HDR 支援
可變幀速率 (VFR) 支援
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
H.263 支援
容器支援 3GPMP4QuickTime
RTP / WebRTC 相容
支援/維護組織 ITU
規範 https://www.itu.int/rec/T-REC-H.263/
許可 專有;需要適當的許可證。請注意,可能適用多個專利池。

HEVC (H.265)

高效率影片編碼HEVC)編解碼器由 ITU 的 H.265 以及 MPEG-H 第 2 部分(仍在開發中的 MPEG-4 後續標準)定義。HEVC 旨在支援高效編碼和解碼高解析度(包括 8K 影片)的影片,其結構經過專門設計,旨在讓軟體利用現代處理器。理論上,HEVC 可以將壓縮檔案大小減少到AVC的一半,但具有可比的影像質量。

例如,每個編碼樹單元(CTU)——類似於以前編解碼器中使用的宏塊——由每個樣本的亮度值樹和同一編碼樹單元中使用的每個色度樣本的色度值樹,以及任何所需的語法元素組成。這種結構支援多核輕鬆處理。

HEVC 的一個有趣特性是主配置檔案僅支援 8 位每分量顏色和 4:2:0 色度子取樣。同樣有趣的是,4:4:4 影片得到了特殊處理。它不是擁有亮度樣本(表示影像的灰度畫素)以及 Cb 和 Cr 樣本(指示如何改變灰色以建立彩色畫素),而是將三個通道視為三個單色影像,每個顏色一個,然後在渲染時組合以生成全綵影像。

HEVC 是一種專有格式,並受多項專利保護。許可由 Via LA 管理;費用向開發者收取,而不是向內容製作商和分銷商收取。在決定是否在您的應用程式或網站中使用 HEVC 之前,請務必檢視最新的許可條款和要求!

支援的位元率 高達 800,000 kbps
支援的幀速率 因級別而異;最高可達 300 FPS
壓縮 有損基於 DCT 的演算法
支援的幀大小 128 x 96 到 8,192 x 4,320 畫素;因配置檔案和級別而異
支援的顏色模式

以下資訊適用於主要配置檔案。此處未包含其他一些可用配置檔案。

配置檔案 色彩深度 色度子取樣
8 4:2:0
主 10 8 到 10 4:2:0
主 12 8 到 12 4:0:0 和 4:2:0
主 4:2:2 10 8 到 10 4:0:0、4:2:0 和 4:2:2
主 4:2:2 12 8 到 12 4:0:0、4:2:0 和 4:2:2
主 4:4:4 8 4:0:0、4:2:0、4:2:2 和 4:4:4
主 4:4:4 10 8 到 10 4:0:0、4:2:0、4:2:2 和 4:4:4
主 4:4:4 12 8 到 12 4:0:0、4:2:0、4:2:2 和 4:4:4
主 4:4:4 16 幀內 8 到 16 4:0:0、4:2:0、4:2:2 和 4:4:4
HDR 支援
可變幀速率 (VFR) 支援
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
HEVC / H.265 支援 107 18 120 94 11

Chrome 在 Windows 8+、Linux 和 ChromeOS 上支援具有硬體支援的裝置上的 HEVC,以及 macOS Big Sur 11+ 和 Android 5.0+ 上的所有裝置。

Edge (Chromium) 在 Windows 10 1709+ 上支援具有硬體支援的裝置上的 HEVC,前提是安裝了來自 Microsoft Store 的 HEVC 影片擴充套件,並且在其他平臺上具有與 Chrome 相同的支援狀態。Edge (Legacy) 僅支援具有硬體解碼器的裝置上的 HEVC。

Firefox 在以下版本啟用 HEVC:

  • 從 Firefox 134 開始的 Windows 版本,使用硬體(在支援它的裝置上,範圍與 Edge 相同)或軟體(在 Windows 上使用者必須付費並安裝擴充套件)
  • 從 Firefox 136 開始的 macOS 版本,使用硬體或軟體。
  • 從 Firefox 137 開始的 Linux 版本,使用硬體或軟體(透過系統 ffmpeg)。
  • 從 Firefox 137 開始的 Android 版本,僅使用硬體。

Opera 和其他基於 Chromium 的瀏覽器具有與 Chrome 相同的支援狀態。

Safari 在 macOS High Sierra 或更高版本的所有裝置上支援 HEVC。

容器支援 ISOBMFF、MPEG-TS、MP4 QuickTime
RTP / WebRTC 相容
支援/維護組織 ITU / MPEG
規範 http://www.itu.int/rec/T-REC-H.265
https://www.iso.org/standard/69668.html
許可 專有;確認您符合許可要求。請注意,可能適用多個專利池。

MP4V-ES

MPEG-4 影片基本流MP4V-ES)格式是 MPEG-4 第 2 部分視覺標準的一部分。雖然一般來說,MPEG-4 第 2 部分影片由於缺乏與其他編解碼器相關的引人注目的價值而未被任何人使用,但 MP4V-ES 在移動裝置上有一些用途。MP4V 本質上是 MPEG-4 容器中的 H.263 編碼。

其主要目的是用於透過 RTP 會話流傳輸 MPEG-4 音訊和影片。然而,MP4V-ES 也用於透過使用 3GP 的移動連線傳輸 MPEG-4 音訊和影片。

您幾乎肯定不想使用這種格式,因為它沒有被任何主流瀏覽器以有意義的方式支援,並且已經相當過時。此類檔案應該具有副檔名 .mp4v,但有時會被錯誤地標記為 .mp4

支援的位元率 5 kbps 到 1 Gbps 及更高
支援的幀速率 無特定限制;僅受資料速率限制
壓縮 有損基於 DCT 的演算法
支援的幀大小 高達 4,096 x 4,096 畫素
支援的顏色模式 支援帶色度子取樣(4:2:0、4:2:2 和 4:4:4)的 YCrCb;每分量最高 12 位
HDR 支援
可變幀速率 (VFR) 支援
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
MP4V-ES 支援

Firefox 僅在 3GP 容器中支援 MP4V-ES。

Chrome 不支援 MP4V-ES;但是,ChromeOS 支援。

容器支援 3GPMP4
RTP / WebRTC 相容
支援/維護組織 MPEG
規範 RFC 6416
許可 專有;根據需要透過 Via LA 和/或 AT&T獲取許可證

MPEG-1 第 2 部分影片

MPEG-1 第 2 部分影片於 1990 年代初問世。與後來的 MPEG 影片標準不同,MPEG-1 完全由 MPEG 建立,沒有 ITU 的參與。

由於任何 MPEG-2 解碼器也可以播放 MPEG-1 影片,因此它與各種軟體和硬體裝置相容。MPEG-1 影片不再有任何有效專利,因此可以免費使用,無需任何許可問題。然而,很少有網路瀏覽器在沒有外掛支援的情況下支援 MPEG-1 影片,並且隨著外掛在網路瀏覽器中被棄用,這些外掛通常不再可用。這使得 MPEG-1 不適合用於網站和網路應用程式。

支援的位元率 最高 1.5 Mbps
支援的幀速率 23.976 FPS、24 FPS、25 FPS、29.97 FPS、30 FPS、50 FPS、59.94 FPS 和 60 FPS
壓縮 有損基於 DCT 的演算法
支援的幀大小 高達 4,095 x 4,095 畫素
支援的顏色模式 Y'CbCr,採用 4:2:0 色度子取樣,每分量最高 12 位
HDR 支援
可變幀速率 (VFR) 支援
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
MPEG-1 支援
容器支援 MPEG
RTP / WebRTC 相容
支援/維護組織 MPEG
規範 https://www.iso.org/standard/22411.html
許可 專有;但所有專利均已過期,因此 MPEG-1 可自由使用

MPEG-2 第 2 部分影片

MPEG-2 第 2 部分是 MPEG-2 規範定義的影片格式,偶爾也以其 ITU 命名 H.262 來指代。它與 MPEG-1 影片非常相似——實際上,任何 MPEG-2 播放器都可以自動處理 MPEG-1,無需任何特殊工作——只是它已擴充套件到支援更高的位元率和增強的編碼技術。

目標是允許 MPEG-2 壓縮標清電視,因此也支援隔行掃描影片。標清壓縮率和由此產生的影片質量很好地滿足了需求,以至於 MPEG-2 成為 DVD 影片媒體使用的主要影片編解碼器。

MPEG-2 有幾種具有不同功能的配置檔案。每個配置檔案都有四個級別可用,每個級別都增加了影片的屬性,例如幀速率、解析度、位元率等。大多數配置檔案使用 Y'CbCr 和 4:2:0 色度子取樣,但更高階的配置檔案也支援 4:2:2。此外,還有四個級別,每個級別都支援更大的幀尺寸和位元率。例如,北美電視使用的 ATSC 規範支援高畫質 MPEG-2 影片,使用主配置檔案,高級別,允許 4:2:0 影片在 1920 x 1080(30 FPS)和 1280 x 720(60 FPS)下,最大位元率為 80 Mbps。

然而,很少有網路瀏覽器在沒有外掛支援的情況下支援 MPEG-2,並且隨著外掛在網路瀏覽器中被棄用,這些外掛通常不再可用。這使得 MPEG-2 不適合用於網站和網路應用程式。

支援的位元率 最高 100 Mbps;因級別和配置檔案而異
支援的幀速率
縮寫 級別名稱 支援的幀速率
LL 低級別 23.9, 24, 25, 29.97, 30
ML 主級別 23.976, 24, 25, 29.97, 30
H-14 高 1440 23.976, 24, 26, 29.97, 30, 50, 59.94, 60
HL 高級別 23.976, 24, 26, 29.97, 30, 50, 59.94, 60
壓縮 有損基於 DCT 的演算法
支援的幀大小
縮寫 級別名稱 最大幀尺寸
LL 低級別 352 x 288 畫素
ML 主級別 720 x 576 畫素
H-14 高 1440 1440 x 1152 畫素
HL 高級別 1920 x 1152 畫素
支援的顏色模式 大多數配置檔案使用 Y'CbCr 和 4:2:0 色度子取樣;“高”和“4:2:2”配置檔案也支援 4:2:2 色度子取樣。
HDR 支援
可變幀速率 (VFR) 支援
瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
MPEG-2 支援
容器支援 MPEG、MPEG-TS(MPEG 傳輸流)、MP4QuickTime
RTP / WebRTC 相容
支援/維護組織 MPEG / ITU
規範 https://www.itu.int/rec/T-REC-H.262
https://www.iso.org/standard/61152.html
許可 專有;除馬來西亞(截至 2024 年 10 月 1 日)外,全球所有專利均已過期,因此 MPEG-2 可以在馬來西亞以外自由使用。專利由 Via LA 授權。

Theora

警告:此編解碼器不再推薦使用。其使用率極低,並且正在從瀏覽器中移除支援。

Theora 是由 Xiph.org 開發的一種開放免費影片編解碼器,無需版稅或許可即可使用。Theora 在質量和壓縮率方面與 MPEG-4 Part 2 Visual 和 AVC 相當,使其成為影片編碼的非常好的選擇,儘管不是頂級的。但它免於任何許可問題,並且 CPU 資源要求相對較低,使其成為許多軟體和 Web 專案的流行選擇。由於 Theora 沒有可用的硬體解碼器,因此其低 CPU 影響特別有用。

Theora 最初基於 On2 Technologies 的 VC3 編解碼器。該編解碼器及其規範以 LGPL 許可證釋出,並委託給 Xiph.org,後者將其開發成 Theora 標準。

Theora 的一個缺點是它只支援每顏色分量 8 位,沒有使用 10 位或更多位以避免色帶的選項。話雖如此,每分量 8 位仍然是當今最常用的顏色格式,因此在大多數情況下這只是一個小小的不便。此外,Theora 只能在 Ogg 容器中使用。然而,最大的缺點是 Safari 不支援它,使得 Theora 不僅在 macOS 上,而且在所有數百萬 iPhone 和 iPad 上都無法使用。

Theora Cookbook 提供了有關 Theora 及其所用 Ogg 容器格式的更多詳細資訊。

支援的位元率 最高 2 Gbps
支援的幀速率 任意;支援任何非零值。幀速率指定為 32 位分子和 32 位分母,以允許非整數幀速率。
壓縮 有損基於 DCT 的演算法
支援的幀大小 寬度和高度的任意組合,最高可達 1,048,560 x 1,048,560 畫素
支援的顏色模式 Y'CbCr,支援 4:2:0、4:2:2 和 4:4:4 色度子取樣,每分量 8 位
HDR 支援
可變幀速率 (VFR) 支援

雖然 Theora 不支援單一流中的可變幀速率 (VFR),但可以在單個檔案中將多個流連線在一起,每個流都可以有自己的幀速率,從而實現本質上的 VFR。然而,如果幀速率需要頻繁更改,這就不切實際了。

瀏覽器相容性
特性 Chrome Edge Firefox Opera Safari
Theora 支援 3 到 121 12 到 121 3.5 到 126 10.5 到 107

Edge 透過可選的 Web Media Extensions 附加元件支援 Theora。

容器支援 Ogg
RTP / WebRTC 相容
支援/維護組織 Xiph.org
規範 https://www.theora.org/doc/
許可 開放且免版稅,無其他許可要求

VP8

影片處理器 8VP8)編解碼器最初由 On2 Technologies 建立。在收購 On2 後,Google 釋出了 VP8 作為一種開放且免版稅的影片格式,並承諾不強制執行相關專利。在質量和壓縮率方面,VP8 與 AVC 相當。

如果瀏覽器支援,VP8 允許帶 alpha 通道的影片,使得影片可以播放,背景在影片中以每個畫素的 alpha 分量指定的程度可見。

HTML 內容中對 VP8 的瀏覽器支援良好,尤其是在 WebM 檔案中。這使得 VP8 成為您內容的良好選擇,儘管如果可用,VP9 甚至是更好的選擇。Web 瀏覽器必須支援 WebRTC 的 VP8,但並非所有這樣做的瀏覽器也支援 HTML 音訊和影片元素中的 VP8。

支援的位元率 任意;除非強制執行基於級別的限制,否則無最大值
支援的幀速率 任意
壓縮 有損基於 DCT 的演算法
支援的幀大小 高達 16,384 x 16,384 畫素
支援的顏色模式 Y'CbCr,採用 4:2:0 色度子取樣,每分量 8 位
HDR 支援
可變幀速率 (VFR) 支援
瀏覽器相容性

所有版本的 Chrome、Edge、Firefox、Opera 和 Safari

iOS:Safari 12.1 及更高版本僅在 WebRTC 連線中支援 VP8。

Firefox 僅在沒有 H.264 硬體解碼器可用時才支援 MSE 中的 VP8。使用 MediaSource.isTypeSupported() 檢查可用性。

容器支援 3GPOggWebM
RTP / WebRTC 相容 是;VP8 是 WebRTC 規範要求的編解碼器之一
支援/維護組織 Google
規範 RFC 6386
許可 開放且免版稅,無其他許可要求

VP9

影片處理器 9VP9)是 Google 開發的舊 VP8 標準的後續版本。與 VP8 一樣,VP9 完全開放且免版稅。其編碼和解碼效能與 AVC 相當或略快,但質量更好。VP9 的編碼影片質量與 HEVC 在相似位元率下相當。

VP9 的主配置檔案僅支援 8 位色彩深度和 4:2:0 色度子取樣級別,但其配置檔案支援更深的色彩和全範圍的色度子取樣模式。它支援多種 HDR 實現,並在選擇幀速率、寬高比和幀尺寸方面提供了極大的自由。

VP9 受到瀏覽器的廣泛支援,並且編解碼器的硬體實現也相當普遍。VP9 是 WebM 強制要求的兩種影片編解碼器之一(另一種是 VP8)。但請注意,Safari 對 WebM 和 VP9 的支援僅在 14.1 版中引入,因此如果您選擇使用 VP9,請考慮為 iPhone、iPad 和 Mac 使用者提供 AVC 或 HEVC 等備用格式。

如果您能夠使用 WebM 容器(並且在需要時可以提供備用影片),VP9 是一個不錯的選擇。如果您希望使用開放編解碼器而不是專有編解碼器,則尤其如此。

支援的位元率 任意;除非強制執行基於級別的限制,否則無最大值
支援的幀速率 任意
壓縮 有損基於 DCT 的演算法
支援的幀大小 高達 65,536 x 65,536 畫素
支援的顏色模式
配置檔案 色彩深度 色度子取樣
配置檔案 0 8 4:2:0
配置檔案 1 8 4:2:0、4:2:2 和 4:4:4
配置檔案 2 10 到 12 4:2:0
配置檔案 3 10 到 12 4:2:0、4:2:2 和 f:4:4

支援的色彩空間:Rec. 601Rec. 709Rec. 2020SMPTE C、SMPTE-240M(已過時;由 Rec. 709 取代)和 sRGB

HDR 支援 是;HDR10+、HLGPQ
可變幀速率 (VFR) 支援
瀏覽器相容性

所有版本的 Chrome、Edge、Firefox、Opera 和 Safari

Firefox 僅在沒有 H.264 硬體解碼器可用時才支援 MSE 中的 VP8。使用 MediaSource.isTypeSupported() 檢查可用性。

容器支援 MP4OggWebM
RTP / WebRTC 相容
支援/維護組織 Google
規範 https://www.webmproject.org/vp9/
許可 開放且免版稅,無其他許可要求

選擇影片編解碼器

選擇使用哪個或哪些編解碼器始於一系列問題,以幫助您做好準備

  • 您是希望使用開放格式,還是也考慮使用專有格式?
  • 您是否有資源為每個影片製作多種格式?提供備用選項大大簡化了決策過程。
  • 您是否願意犧牲與某些瀏覽器的相容性?
  • 您需要支援的最舊的瀏覽器版本有多舊?例如,您需要支援過去五年釋出的所有瀏覽器,還是僅僅過去一年?

在下面的部分中,我們為特定的用例提供了推薦的編解碼器選擇。對於每個用例,您最多會找到兩個建議。如果被認為最適合該用例的編解碼器是專有的或可能需要支付版稅,則提供兩個選項:首先是開放且免版稅的選項,其次是專有選項。

如果您只能提供每個影片的單個版本,則可以選擇最適合您需求的格式。第一個建議在質量、效能和相容性方面具有良好的結合。第二個選項將是相容性最廣的選擇,但會犧牲一定程度的質量、效能和/或大小。

日常影片推薦

首先,讓我們看看在典型的網站上(例如部落格、資訊網站、使用影片演示產品的小企業網站(但影片本身不是產品)等)呈現影片的最佳選擇。

  1. 一個使用 VP9 影片編解碼器和 Opus 音訊編解碼器的 WebM 容器。這些都是開放、免版稅的格式,通常支援良好,儘管僅限於最新瀏覽器,這就是為什麼備用方案是個好主意。

    html
    <video controls src="filename.webm"></video>
    
  2. 一個 MP4 容器和 AVC (H.264) 影片編解碼器,最好搭配 AAC 作為您的音訊編解碼器。這是因為帶有 AVC 和 AAC 編解碼器的 MP4 容器是廣泛支援的組合——事實上,每個主流瀏覽器都支援——並且在大多數用例中質量通常很好。但是,請務必驗證您是否符合許可證要求。

    html
    <video controls>
      <source type="video/webm" src="filename.webm" />
      <source type="video/mp4" src="filename.mp4" />
    </video>
    

注意:<video> 元素需要一個關閉的 </video> 標籤,無論其中是否包含任何 <source> 元素。

高質量影片演示推薦

如果您的任務是以最高可能的質量呈現影片,您可能會受益於提供儘可能多的格式,因為能夠提供最佳質量的編解碼器通常也是最新的,因此最有可能在瀏覽器相容性方面存在差距。

  1. 一個使用 AV1 影片和 Opus 音訊的 WebM 容器。如果您能夠使用高或專業配置檔案編碼 AV1,並在高水平(例如 6.3)下,您可以獲得 4K 或 8K 解析度下的非常高位元率,同時保持出色的影片質量。使用 Opus 的全頻帶配置檔案以 48 kHz 取樣率編碼音訊,可以最大限度地捕獲音訊頻寬,捕獲人類聽覺範圍內的幾乎整個頻率範圍。

    html
    <video controls src="filename.webm"></video>
    
  2. 一個使用 HEVC 編解碼器的 MP4 容器,使用高階主配置檔案之一,例如帶有 10 或 12 位色彩深度的主 4:2:2,甚至主 4:4:4 配置檔案,每分量最高 16 位。在高位元率下,這提供了出色的圖形質量和卓越的色彩再現。此外,您還可以選擇包含 HDR 元資料以提供高動態範圍影片。對於音訊,使用 AAC 編解碼器,採用高取樣率(至少 48 kHz,但最好是 96 kHz),並使用複雜編碼而非快速編碼。

    html
    <video controls>
      <source type="video/webm" src="filename.webm" />
      <source type="video/mp4" src="filename.mp4" />
    </video>
    

存檔、編輯或混音推薦

目前,網路瀏覽器中普遍沒有無損或接近無損的影片編解碼器。原因很簡單:影片檔案巨大。無失真壓縮本質上不如有失真壓縮有效。例如,帶有 4:2:0 色度子取樣的未壓縮 1080p 影片(1920x1080 畫素)至少需要 1.5 Gbps。使用 FFV1 等無失真壓縮(網路瀏覽器不支援)可能會將其降低到大約 600 Mbps,具體取決於內容。這仍然是每秒透過連線傳輸的巨大位元數,目前不適用於任何實際用途。

即使某些有損編解碼器具有無損模式,情況也是如此;無損模式在任何當前網路瀏覽器中都沒有實現。您能做的最好的事情是選擇一種使用有失真壓縮的高質量編解碼器,並將其配置為儘可能少地執行壓縮。一種方法是將編解碼器配置為使用“快速”壓縮,這本質上意味著實現的壓縮較少。

外部影片準備

要從您的網站或應用程式外部準備用於存檔目的的影片,請使用對原始未壓縮影片資料執行壓縮的實用程式。例如,免費的 x264 實用程式可用於以 AVC 格式編碼影片,使用非常高的位元率

bash
x264 --crf 18 -preset ultrafast --output out-file.mp4 in-file

儘管其他編解碼器在顯著壓縮影片時可能具有更好的最佳質量水平,但它們的編碼器往往足夠慢,以至於透過這種壓縮獲得的近乎無損編碼在相同的整體質量水平下要快得多。

錄製影片

考慮到您能達到的接近無損的限制,您可能會考慮使用 AVCAV1。例如,如果您正在使用 MediaStream 錄製 API 錄製影片,您可以在建立 MediaRecorder 物件時使用如下程式碼

js
const kbps = 1024;
const Mbps = kbps * kbps;

const options = {
  mimeType: 'video/webm; codecs="av01.2.19H.12.0.000.09.16.09.1, flac"',
  bitsPerSecond: 800 * Mbps,
};

let recorder = new MediaRecorder(sourceStream, options);

此示例建立了一個配置為錄製 AV1 影片的 MediaRecorder,使用 BT.2100 HDR,12 位顏色,4:4:4 色度子取樣,以及 FLAC 用於無損音訊。生成的檔案將使用不超過 800 Mbps 的位元率,由影片和音訊軌道共享。您可能需要根據硬體效能、您的要求以及您選擇使用的特定編解碼器來調整這些值。這個位元率顯然不適合網路傳輸,可能只會在本地使用。

codecs 引數的值分解為其用點分隔的屬性,我們看到以下內容

描述
av01 四字元程式碼 (4CC) 指定,用於識別 AV1 編解碼器。
2 配置檔案。值 2 表示專業配置檔案。值 1 是高配置檔案,而值 0 將指定主配置檔案。
19H 級別和層。此值來自 AV1 規範A.3 節中的表格,表示 6.3 級的高層。
12 色彩深度。這表示每個分量 12 位。其他可能的值是 8 和 10,但 12 是 AV1 中可用的最高精度顏色表示。
0 單色模式標誌。如果為 1,則不錄製色度平面,所有資料應嚴格為亮度資料,從而產生灰度影像。我們指定了 0,因為我們想要顏色。
000 色度子取樣模式,取自 AV1 規範中的第 6.4.2 節。值 000,與單色模式值 0 結合,表示我們想要 4:4:4 色度子取樣,即沒有顏色資料損失。
09 要使用的顏色原色。此值來自 AV1 規範中的第 6.4.2 節;9 表示我們想要使用 BT.2020 顏色,用於 HDR。
16 要使用的傳輸特性。這也來自第 6.4.2 節;16 表示我們想要使用 BT.2100 PQ 顏色的特性。
09 要使用的矩陣係數,再次來自第 6.4.2 節。值為 9 指定我們想要使用帶有可變亮度的 BT.2020;這也被稱為 BT.2010 YbCbCr。
1 影片“全範圍”標誌。值為 1 表示我們希望使用全色範圍。

您的編解碼器選擇的文件可能會提供您在構建 codecs 引數時將使用的資訊。

另見