為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

你在 Netflix 上看的《怪奇物語》、在愛奇藝上看的《延禧攻略》、在騰訊視頻上看的《三生三世》……這些劇集無論畫面多麼壯美震撼,色彩多麼瑰麗怡人,背後決定它們最終呈現形態的,幾乎都是看上去並不怎麼浪漫的數字信號。

對視頻內容而言,我們常常把視頻信號分為兩種:模擬信號和數字信號。模擬信號是指時間上和數值上均連續的信號,數字信號則是時間上和數值上均離散的信號(李永樂老師講解過 模擬信號與數字信號的區別 感興趣的可以看看)。

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

模擬信號與數字信號

而具體到電影和視頻,️膠片電影(光敏材料記錄)、以前的 CRT 電視(連續的電信號)、VHS 錄像帶這些都是採用模擬信號的代表;如今我們在網絡上看到的大部分視頻,在手機、電腦上保存的影片則大多是數字視頻,它們藉助攝像機進行採集並藉助編碼完成數字化,隨後計算機用 0 和 1 存儲、傳播,最後再解碼呈現到我們的屏幕上。

這個從信號到圖像的轉化過程中,視頻編解碼起著至關重要的作用。

什麼是編碼

自上個世紀末計算機逐漸普及開始,視頻和電影從拍攝、剪輯到傳播、呈現,都在不斷完成向數字化的轉變,視頻編碼在這個過程中發揮的作用尤為關鍵。

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

世界上第一臺數字錄像機


嚴格來說我們所說的視頻編碼全名其實叫做視頻編解碼器,英文名叫 codec,是 encoder 和 decoder 的縮寫,我們拍攝、剪輯、轉碼時候會將圖像的光信號處理完成 encoder 的過程;播放時則會藉助 decoder 將信號中的視頻信息呈現出來。

視頻編碼與我們平常見到的 .mp4、.flv 等視頻的拓展名並沒有必然的聯繫,你可以將這些拓展名格式看作是一個個容器(container),每個容器裡都可以包含了不同編碼的視頻、不同編碼的音頻、圖片、字幕等等。

而目前大家接觸比較多的視頻編碼主要有下面 5 種:

H.264/AVC

無論是叫 H.264、AVC、MPEG-4 Part 10 還是 Advanced Video Coding,都是指的這一個。

這是在 2003 年就由 MPEG(Moving Picture Experts Group 動態影像專家組)發佈了的、至今為止已經有 17 年曆史的視頻編碼,也是迄今為止最流行、最通用的視頻編碼。

H.264 的適應範圍非常廣,不同系統的電腦、瀏覽器、手機、電視、數碼相機、流媒體、播放器、剪輯軟件等幾乎都有在使用這種編碼。

H.265/HEVC

無論是叫 H.265、HEVC(High Efficiency Video Coding)還是 MPEG-H Part 2,指的都是這個編碼。

H.265 可以說是 H.264 的繼任者,它主要解決了 H.264 存在的兩個問題:

首先是效率。H.265 的效率要高很多,相同畫質下 H.265 比 H.264 節省了大約一倍的帶寬(1080P 下節省了 57% 左右,4K UHD 下更是能節省大約 64% 的帶寬 ),這對於一眾流媒體視頻網站的誘惑可以說是十分巨大,因為視頻網站往往有一半甚至更多的開銷得花費在帶寬上面;不過還是有缺點的,播放 H.265 編碼的視頻內容的設備需要更好的性能,因而目前很多設備往往也並不支持 H.265 視頻的播放,這時候就要在服務端放兩份,一份 H.264 的一份 H.265 的,然後分發給不同的客戶端。

另一方面,目前 4K 已經比較普及,很多專業設備甚至手機都能拍攝 8K 的內容,很多 8K 電視也已經開賣。而 H.264 因為有最高只支持 4K 分辨率這個限制存在,已經不太適合更高質量視頻的拍攝、製作、和播放了,H.265 支持 8K 更能滿足當前的需求。

H.265 最大的壞處是收費,並且比 H.264 更貴了。

VP9

上面提到無論是 H.264 還是 H.265 都有一個非常大的問題就是收費,並且非常昂貴,廠商隨隨便便一用一年就是幾百萬刀的錢。

於是像 Google 這種優秀青年就會想了,我又有技術又有錢,為啥不自己造個輪子?於是 2009 年 Google 花了 106.5 萬美元收購了視頻編碼公司 On2 並很快推出了免費的 VP8 視頻編碼。不過彼時天下早已經是 H.264 的了,VP8 本身的編碼效率也不夠好,除了 YouTube 和少數幾家瀏覽器支持外並沒有被特別大規模地使用過。

所以 2010 年 Google 又進一步推出了 VP9,目標直指 H.265,這一次不僅有 YouTube、Netflix 等視頻網站巨頭的相繼支持,除了 Safari 以外的主流瀏覽器也紛紛加入,另外,這也是你的 Safari 看 YouTube 沒有 1080p 以上選項的根本原因

根據 Netflix 分享過的對比測試,VP9 相比較 H.265 在 1080P 往上分辨率的視頻流播中有著不小的優勢。

AV1

雖然 Google 的 VP9 效果還不錯,但仍有幾家巨頭不怎麼願意使用,畢竟在 Google 手裡的項目他們也不太放心,比如 Apple 就始終未支持 VP9/VP8,很多買了 Apple TV 的朋友也因此無法觀看 4K 分辨率的 YouTube。

所以 Apple、亞馬遜、思科、 Google、英特爾、 微軟、Mozilla 以及 Netflix 等廠商又共同組建了 Alliance for Open Media(開放媒體聯盟)並在 2018 年推出了對抗 H.265 的新視頻編碼 AV1(AOMedia Video 1)。

你沒看錯,Google 也貢獻出了自己的 VP9 作為基礎,AV1 比起 VP9 又能節省約 20% 的帶寬,同時依然免收版權費。

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

AV1 聯盟

不過最重要的一點,這個聯盟擁有非常強大的號召力,上圖中的公司都加入了這個聯盟,Netflix、YouTube 這些大家常見的視頻平臺也因此陸續開始分發 AV1 編碼的視頻了。

Apple ProRes

與上述幾種幀間編碼的視頻編碼不同,多用於專業相機拍攝的編碼 Apple ProRes 屬於幀內編碼。根據「幀內壓縮只參考本幀數據,壓縮率小;幀間壓縮要參考其他幀數據,壓縮率大」 這個原理,Apple ProRes 這種幀內編碼的視頻編碼的體積會比幀間編碼的大很多,一般的數碼相機、微單也很少使用這種編碼。

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

幀內編碼與幀間編碼 示意

不過 Apple ProRes 這種幀內編碼的好處也是有的,這種編碼往往會使用更大的體積保存更多的信息;因為是幀內編碼不需要計算出其它幀,剪輯的時候對性能的要求也要低很多,即使用低配置的電腦剪輯高分辨率的視頻也會很流暢。

此外很多專業級別的拍攝設備也會開發 Apple ProRes 這樣的自有編碼,甚至有些會記錄「無損」的數據方便後期處理。這些專業拍攝設備一般用戶不會接觸到,網絡視頻傳播基本也不會使用幀內編碼,正如上面所說,採用這類編碼的視頻體積實在太大了,既燒錢又不利於傳播。

如果你對這些感興趣可以看看:

  • H.264 vs H.265 H.265 會主宰市場嗎?
  • 【省帶寬、壓成本專題】深入解析 H.265 編碼模式,帶你瞭解 Apple 全面推進 H.265 的原因
  • 視頻編碼的終結?
  • HEVC (H.265) 是啥,我們需要關注什麼?
  • aomedia 官網
  • 2016年 Netflix 在 Android 上分發 VP9 內容
  • AVC 編碼詳解
  • HEVC 授權價格
  • HEVC VP9 未來的視頻編碼

視頻拍攝的編碼選擇

針對拍攝,大部分設備我們都是沒法選擇視頻錄製編碼的,但 iPhone 可以。所以這裡我們以 iPhone 為例。

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

iPhone 拍攝模式 左 H.264 右 H.265

iPhone 在「設置 > 相機 > 格式」中提供了高效(H.265 即 HEVC)和兼容性最佳(H.264 即 AVC)兩種視頻拍攝編碼選項,在上述對比圖中不難看出視頻編碼對最終體積的影響真的很大。

選擇高效自然會碰見兼容性問題,類似的案例你可以參考廣告導演 @flypig 的 微博,碰見這種問題一般你可以選擇將 H.265 的素材轉成 H.264 或者檢查自己的系統和剪輯軟件是不是最新的。

拍攝、剪輯、和導出上傳我自然是門外漢了(別的也是),推薦你們可以看看影視颶風的這幾期視頻,講的很清楚。

  • 完全解析:編碼與封裝
  • 高畫質的背後——視頻的封裝與編碼
  • 422,420,10bit,8bit?這些究竟是什麼

視頻分發的編碼選擇

相同的電影劇集,影響最終看起來清晰不清晰的除了分辨率、碼率,視頻編碼也是非常重要的一部分,但這個因素常常被我們所忽視。

國際上比較主流的視頻網站都採用了多種視頻編碼來應對不同平臺、不同內容甚至不同網絡環境的播放情況,下面是我個人總結的一些(可能會不完整):

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

Edge Netflix 4k

Netflix 目前正在使用 4 種不同的編碼,分別是

  1. H.264(AVC)
    :這是 Netflix 使用較多的一種編碼格式,在 Safari、iOS、電視客戶端等都在使用。
  2. H.265(HEVC):Netflix 一般僅為 4K 的內容提供 H.265 的編碼,並且一般只有在能看 4K 的客戶端上使用此編碼。我這裡說的是 4K 的內容並不是你看 4K 的時候才會使用 H.265 編碼,舉個例子:你在 Fire TV 4K 或者 Windows Edge 瀏覽器上觀看 《愛爾蘭人》等有 4K 版本的內容時,即使你觀看的分辨率是 480P 或者 720P,視頻都會以 H.265 編碼呈現。
  3. AV1:Netflix 在不久前宣佈 Android 上正式開始使用這種編碼,在這之前一直使用的是 VP9,不過 AV1 只有在使用流量並開啟「節省數據」開關的選項後才會啟用。
  4. VP9: Netflix 目前在 Android、Chrome 等 Google 系軟件和硬件上一直使用這種編碼。這裡也很容易解釋為啥你在 iOS 下載相同的內容和 Android 下載的體積不一樣(iOS 客戶端下載的普遍體積更小)。
為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

YouTube 選擇AV1視頻編碼

YouTube 目前主要使用 VP9、H.264、以及 AV1 視頻編碼,不過值得注意的是 1080P 以上的內容 YouTube 都不會使用 H.264 編碼,這也導致了 Apple 全系產品目前沒法觀看 YouTube 4K。好在 YouTube 已經開始支持 AV1 編碼了(開啟頁面),而 AV1 也有 Apple 的一部分貢獻,所以上面這個問題在未來幾年內應該能解決。

至於 Apple TV+、Disney+ 也都在 4K 內容上採用了 H.265 編碼,並且碼率還要比 Netflix 的 16Mbps 要高些許,相比國內愛奇藝、bilibili 只使用 H.264 並且碼率也要低很多,「看上去」的差距自然就會十分明顯了。

總結下,大家經常說國外的流媒體比國內的清晰、看起來更好主要有下面三個原因:

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

上 Netflix 1080p 《流浪地球》 下 愛奇藝 4k 《流浪地球》

為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

左 Netflix 4k 右 愛奇藝 4k


  1. 編碼:國外的大部分流媒體的分發尤其是 4K 的內容都採用了 H.265 編碼(Dolby Vision 主要也是 H.265 編碼),國內的基本都還是 H.264。
  2. 碼率:就像我們常用圖片的文件大小來判斷清晰不清晰一樣,一個視頻採用相同或者類似的編碼,碼率大小會直接影響清晰。Netflix 一般 16Mbps 左右,國內的一般在 4、5Mbps 。如果算上編碼的差異這個差距還得乘以2。
  3. 色彩文件(HDR):國內的像愛奇藝即使你觀看 HDR 的內容實際播放的也是 BT709 8bit SDR 的內容,並沒有好好利用到你電視更廣的色彩顯示和更亮更優秀的屏幕,相比之下,Netflix 即使是非 HDR 內容也是 10bit 的色彩深度。
為什麼清晰度調到了「藍光」還是不清楚?一文詳解視頻編碼

firetv 開發者模式


另外,如果你也使用 Fire TV,想看詳細播放內容詳細信息可以按照這個步驟開啟開發者模式:

  • 遙控器:在方向盤上,按住「 中央」按鈕一秒鐘;然後(仍然按住居中),也按下「 向下」按鈕。按住兩個按鈕約3-4秒。
  • 然後釋放兩個按鈕,然後按遙控器的菜單按鈕。

(如果這不起作用,請嘗試同時按住「Center」和「 Down」,而不要交錯放置。)

尾巴

膠片電影時我們的視頻是一秒 24 張照片的魔法,到電視我們的視頻是「不穩定」的模擬電信號,再到如今藉助網絡力量高速傳播的數字信號。視頻編碼看不見也摸不著,它的進步卻讓我們的視頻變得越來越清晰、生動,播放下載也更加便捷流暢。

文章寫的雜亂,很多說的很糙很雜,如果有不對歡迎您指正。


分享到:


相關文章: