翻譯| Alex
技術(shù)審查|元英姬
這篇文章來自O(shè)TTVerse,作者是Krishna Rao Vijayanagar。
視頻編碼是一門在減少視頻數(shù)據(jù)體積大小或碼率的同時而不對其質(zhì)量產(chǎn)生不良影響(在人類的視覺感知下)的科學(xué)。對視頻進(jìn)行編碼從而減少其數(shù)據(jù)體積同時保持視頻質(zhì)量是一項綜合了藝術(shù)和科學(xué)的技術(shù)。在本篇文章中,我們將介紹這個復(fù)雜且神奇的領(lǐng)域?qū)σ曨l流和視頻傳輸產(chǎn)生的巨大影響。
視頻編碼Easy Tech
#003#
本文我們將會學(xué)習(xí):
- 什么是視頻編碼
- 什么是視頻轉(zhuǎn)碼以及視頻轉(zhuǎn)碼與視頻編碼的區(qū)別
- 視頻質(zhì)量VS碼率
- 視頻編碼中的關(guān)鍵概念:編解碼器、碼率、分辨率、時間、GOP和幀類型
- 視頻編碼是藝術(shù)還是科學(xué)?
什么是視頻編碼?
視頻編碼是一門在減少視頻數(shù)據(jù)體積或碼率的同時而不對其質(zhì)量產(chǎn)生不良影響(在人類的視覺感知下)的科學(xué)。
減小文件體積被稱為壓縮,視頻壓縮通過一系列定義明確且記錄在案的數(shù)學(xué)工具和算法(被稱為視頻編解碼器)來完成。當(dāng)對某個視頻數(shù)據(jù)進(jìn)行壓縮,一般來說,壓縮后的格式(被稱為比特流)只能被可以解碼這種格式的相應(yīng)的軟件所理解。比如,一個使用H.264/AVC視頻編碼器編碼的視頻是無法被HEVC解碼器解碼的。
當(dāng)一個視頻被壓縮,那么就可以從主觀和客觀上來判斷視頻質(zhì)量:
客觀方法包括PSNR、SSIM、VMAF。這些軟件使用數(shù)學(xué)方法來判斷視頻質(zhì)量。
主觀方法如MOS(Mean Opinion Score, 平均主觀意見分),這種方法包含強(qiáng)烈的個人主觀色彩,通過一群人為視頻打分(0~5分)來確定視頻質(zhì)量。這種方法也被稱為“黃金眼觀測(Golden-eye viewing)”。
什么是視頻轉(zhuǎn)碼以及視頻轉(zhuǎn)碼與視頻編碼的區(qū)別
你可能經(jīng)常聽到人們交替使用視頻編碼和視頻轉(zhuǎn)碼這兩個術(shù)語。這種做法有失偏頗,因為兩者之間還存在細(xì)微的差別。
視頻編碼通常指將原始視頻數(shù)據(jù)壓縮成編碼數(shù)據(jù)的整個過程。而視頻轉(zhuǎn)碼是指重新編碼壓縮文件,但它多了一個編碼之前對傳入視頻解碼的步驟。
但不要搞混了,這兩個過程都需要在最后階段編碼視頻。
通常轉(zhuǎn)碼器有很多功能,比如:
- 解碼不同的容器格式(mp4,ts等)。
- 使用不同的視頻編解碼器解碼比特流,如H.264/AVC、HEVC、AV1和VP9等。
- 改變視頻的分辨率,從而可以輸出不同的分辨率(對ABR流制作至關(guān)重要)。
除了轉(zhuǎn)碼,還有兩個術(shù)語不常在行業(yè)中使用:
- Transrate是指改變視頻碼率。
- Transmux是指改變?nèi)萜鞲袷?,如將mp4更改為avi或者ts。
在介紹了視頻編碼和轉(zhuǎn)碼之后,現(xiàn)在讓我們學(xué)習(xí)下一部分中最重要的率失真折衷(Rate-distortion Trade-off)。
視頻質(zhì)量VS視頻編碼/轉(zhuǎn)碼中的碼率
想要理解碼率和視頻質(zhì)量之間的平衡關(guān)系,就要先理解視頻壓縮是如何操作的。你不必深入探究質(zhì)量與碼率的折衷,但你需要明白幾件事:
視頻壓縮算法要做兩件重要的事(如在H.264/AVC、HEVC、VP9和AV1等編解碼器中):
- 使用DCT(Discrete Cosine Transform,離散余弦變換)將“像素域”轉(zhuǎn)換為“頻域”。如果你還不了解什么是DCT,可以看下這篇文章(如何給5歲孩子解釋DCT?)。
- 通過一種被稱為量化的技術(shù)舍棄一些頻域數(shù)據(jù)(被稱為系數(shù)),同時確保人眼無法感知這種數(shù)據(jù)丟失。
本質(zhì)上,當(dāng)你壓縮視頻時,你需要丟掉一些信息,但同時要保證視頻質(zhì)量沒有被破壞。
- 如果你使用過高的壓縮率來壓縮視頻數(shù)據(jù),那么將丟掉大量信息,壓縮的效果顯而易見——糟糕的視頻質(zhì)量。
- 如果你使用較低的壓縮率來壓縮視頻,那么壓縮后文件就會很大,但會得到很棒的視頻質(zhì)量。
- 上面所述被稱為視頻壓縮中的率失真折衷。碼率越小,視頻質(zhì)量越差(假設(shè)分辨率、比特位深、色度二次采樣、編碼時間和硬件等都是固定的。)
下面兩張CrowdRun的屏幕截圖說明了這一點,它們分別使用 H.264/AVC 以兩種不同碼率編碼,其他參數(shù)在編碼過程中保持不變。
1080P,低碼率
1080P,高碼率
低碼率流的視頻質(zhì)量要比高碼率流的視頻質(zhì)量差,這正說明了我們之前對于率失真折衷的論述。
然而,不要誤以為較低的碼率就意味著較差的視頻質(zhì)量,要依據(jù)視頻內(nèi)容的性質(zhì)而定,降低碼率但并不影響視頻質(zhì)量是非常有可能的。
在編碼和轉(zhuǎn)碼之前,讓我們來學(xué)習(xí)一些影響視頻編碼的重要因素。
影響視頻編碼的重要因素
有很多重要因素影響視頻編碼和轉(zhuǎn)碼,并且大部分因素之間也相互影響。比如,在轉(zhuǎn)碼時,你不能隨便改變視頻的分辨率而不去調(diào)整碼率,對吧?
在本節(jié)中,讓我們來看看一些能夠產(chǎn)生壓縮充分且高質(zhì)量的比特流的最重要的因素。
內(nèi)容性質(zhì)
并不是所有創(chuàng)造出來的視頻都一樣!每個視頻都獨一無二,都有自己的風(fēng)格,這就使得視頻壓縮成為了一門藝術(shù)。充滿各種動作的職業(yè)橄欖球比賽視頻背后的各種設(shè)置和調(diào)整肯定不同于壓縮《辛普森的一家》那樣的卡通視頻,對吧?
非常容易壓縮!
沒那么容易壓縮!
影響視頻分類的因素有很多,比如:
- 視頻里有充滿各種動作的體育運(yùn)動嗎?
- 有大量的草地或者水(二者都很難壓縮)嗎?
- 充滿各種動作的電影(戰(zhàn)爭或者高速追車)
- 露出頭部和肩部的內(nèi)容,比如新聞或者脫口秀
- 卡通、日本動畫?
- 內(nèi)容中是否有提示文字(Ticker text)向一側(cè)移動,而電影向著另一側(cè)移動?
電影中存在許多不同的場景,這些場景使得每部影片都與眾不同,了解了這些,工程師就能更好地壓縮視頻。如果你知道視頻中含有諸如卡通這樣的平場區(qū)域(Flat region),如上所示,你就可以給它分配一個更低的碼率,而不必像處理體育運(yùn)動視頻那樣用高碼率。
視頻編解碼器
我是這樣定義視頻編解碼器的:它們是一組用來壓縮視頻以達(dá)到預(yù)定率失真折衷的工具和算法。視頻編解碼器通常由工程師、學(xué)術(shù)界和工業(yè)界(軟件和硬件公司)的科學(xué)家組成的委員會來協(xié)商創(chuàng)建。
現(xiàn)在市面上流行的視頻編解碼器包括H.264/AVC、HEVC、AV1、VP9、EVC、VVC和LCEVC。
每一個編碼器在設(shè)計時都有一個特定的目標(biāo)。它們有可能比上一代具有更高的性能,或者免版稅,或者推出一種新的壓縮方法(像LCEVE那樣)。
因為每一種編碼器都擁有不同的設(shè)計和優(yōu)化方法,它們的性能也必然有所不同。比如,AV1在壓縮效率上就比H.264/AVC高出很多,但卻比AVC要消耗更多時間和資源。但這些都沒有關(guān)系,重要的是是否能滿足你自己的需求和資源。
碼率控制模式(CBR、VBR和有上限的VBR)
每個編碼器都擁有碼率控制算法,該算法用于確定在一段時間(或者GOP)內(nèi)如何消耗碼率預(yù)算。編解碼器中的碼率控制技術(shù)極大地影響了壓縮效率、視頻質(zhì)量和速度。
下面是三種常用的碼率控制算法。
1.CBR(Constant Bitrate,固定碼率):在犧牲視頻質(zhì)量的同時,平均碼率保持不變。
2.VBR(Variable Bitrate,可變碼率):在碼率出現(xiàn)波動的同時,視頻質(zhì)量保持不變。
3.Capped VBR(Capped Variable Bitrate,有上限的VBR):視頻質(zhì)量保持不變的同時,允許碼率在一定限制或者上限之內(nèi)波動。
根據(jù)你為視頻編碼/轉(zhuǎn)碼選擇的模式,編碼器將在視頻質(zhì)量和碼率(或者文件尺寸)之間折衷優(yōu)化。
碼率
視頻碼率是指每秒傳送信息的比特數(shù)。碼率單位通常為:
- kbps(千比特每秒)
- mbps(兆比特每秒)
當(dāng)你開始編碼時,你通常需要設(shè)置編碼器的碼率,根據(jù)編碼模式(CBR、VBR、2-pass VBR和Capped VBR),編碼器將使用設(shè)置的碼率值作為壓縮視頻的指南。
根據(jù)經(jīng)驗,碼率越大,視頻質(zhì)量越好。但是也有例外,如果調(diào)整了視頻分辨率和內(nèi)容(動作快慢,頭肩是否出鏡),增加碼率也有可能不會提高視頻質(zhì)量。
分辨率
視頻分辨率是指視頻圖像的寬度乘以高度,其中衡量分辨率的單位是像素。視頻分辨率通常有以下兩種表現(xiàn)形式:
1.使用視頻圖像高度描述分辨率:1080p或720p
2.或者使用圖像寬乘高描述分辨率:1920×1080或者1280×720
視頻分辨率在編碼過程中能夠發(fā)揮重要作用的原因如下:
- 高分辨率的視頻(如4K)需要更多內(nèi)存空間和時間來壓縮。
- 低分辨率的視頻(如360p)需要較少內(nèi)存空間,并且能夠很快被壓縮。
所以,當(dāng)選擇編碼碼率時,視頻分辨率是一個重要的決策因素。
編碼時間
壓縮、編碼以及轉(zhuǎn)碼視頻時所需的時間也是一個關(guān)鍵因素。不同環(huán)境下有不同的解決方案,對吧?
- 如果你正在視頻直播,那么你肯定不能每分鐘只編碼1幀,那么做將是大災(zāi)難!你需要以接近24fps、50fps或者60fps的刷新率來實時壓縮視頻。在這樣的情況下,編碼器通常會為了提升速度而犧牲視頻質(zhì)量。
- 然而,當(dāng)你在點播視頻時,你可以花幾個小時的時間來壓縮視頻。在這樣的情況下,編碼器被調(diào)整為緩慢壓縮,并使用復(fù)雜的工具來獲得更高的壓縮效率及更好的視頻質(zhì)量。
比如,在FFmpeg這種編碼器中,你已經(jīng)預(yù)定義了Slow、Slower,、VerySlow、Fast、Faster和Fastest的設(shè)置,而這些設(shè)置表明了編碼器中速度、質(zhì)量和壓縮效率之間的權(quán)衡。
所以應(yīng)該依據(jù)視頻應(yīng)用場景(直播還是點播)來選擇你的編碼設(shè)置(和速度)。
GOP(一組圖像,Group of Pictures)和GOP長度
一組圖像(GOP)是指一批按照事先定義好的順序被編碼、解碼和播放的視頻幀。GOP長度對視頻壓縮效率、視頻流恢復(fù)能力和視頻質(zhì)量影響深遠(yuǎn)。
簡而言之,GOP尺寸越大,視頻壓縮效率越高,但視頻質(zhì)量和視頻流恢復(fù)能力也越差,反之亦然。
Closed GOP和Open GOP
Closed GOP和Open GOP常見于視頻流中,并影響壓縮效率、視頻容錯能力以及ABR流的切換能力。
- 顧名思義,Closed GOP對GOP外部的幀是封閉的。一個屬于Closed GOP的幀只能參考這個GOP之內(nèi)的幀。
- Open GOP與Closed GOP相反,Open GOP內(nèi)部的幀可以參考其他GOP中的幀。
幀的類型 (I幀、P幀和B幀)
I幀、P幀和B幀是視頻壓縮領(lǐng)域中的基礎(chǔ)概念,用于提升視頻壓縮效率、視頻質(zhì)量和視頻恢復(fù)能力。
- I幀(關(guān)鍵幀或幀內(nèi)幀)僅由幀內(nèi)預(yù)測的宏塊組成。
- P幀代表預(yù)測幀,除了空域預(yù)測以外,它還可以通過時域預(yù)測來進(jìn)行壓縮。P幀通過使用已經(jīng)編碼的幀進(jìn)行運(yùn)動估計。
- B幀可以參考在其前后出現(xiàn)的幀,B幀中的B代表雙向(Bi-Directional)。
升頻、降采樣的工具和算法
本篇文章中,我們不會深入講解升頻和降頻算法。但是需要注意的是這些工具會對視頻質(zhì)量產(chǎn)生很大的影響。假如輸入的視頻分辨率為540p,你想輸出720p的視頻,那你就需要一個可以升頻的工具,對吧?通過降低視頻采樣率,該工具又深深影響了視頻質(zhì)量——如果它出色地完成了任務(wù),那么輸出視頻也會很清晰。否則,你就陷入了大麻煩。
通常來說,升采樣和降采樣工具使用經(jīng)過充分研究的圖像處理過濾器(如 Lanczos 或 Bicubic 過濾器)來創(chuàng)建具有新分辨率的視頻。在選擇購買或使用編碼器/轉(zhuǎn)碼器之前,最好先對這些工具進(jìn)行詳細(xì)的測試。
現(xiàn)在,我們對于影響視頻編碼的重要因素的學(xué)習(xí)已經(jīng)將近尾聲,雖然沒有那么詳盡,但也為音視頻技術(shù)的學(xué)習(xí)提供了一個指南。下面我們將通過視頻編碼一覽表來總結(jié)我們所學(xué)過的知識。
視頻編碼一覽表
在編碼視頻之前,有幾點要銘記于心。這雖然不是一個詳盡無遺的表單,但卻能幫助你縮小視頻壓縮中使用到的正確參數(shù)范圍。
1.理解你的觀眾:你的觀眾平時常用的帶寬是多少?你是為擁有高速互聯(lián)網(wǎng)的城市居民提供視頻服務(wù),還是為低網(wǎng)速的鄉(xiāng)村人口提供服務(wù)?他們是使用固定連接的網(wǎng)線,還是使用移動互聯(lián)網(wǎng)?
2.你的終端用戶使用什么設(shè)備?他們平時會看大屏幕的智能電視嗎?還是使用智能手機(jī)看視頻?
3.你所提供的視頻服務(wù)的內(nèi)容性質(zhì)是什么?是充滿各種動作的電影、體育賽事,還是沒有那么多動作的新聞,亦或是很容易壓縮的卡通片?
4.你擁有多少時間壓縮視頻?你所提供的服務(wù)是直播還是點播?
5.你使用哪種視頻編解碼器?你的目標(biāo)觀眾的設(shè)備能否解碼H.264/AVC、 HEVC、AV1或者VP9?
以上這些只是部分(在編碼、轉(zhuǎn)碼視頻前)影響因素,我相信還有更多,但我希望這個一覽表對你來說是個好的開始。
現(xiàn)在,讓我們來看下視頻編碼和轉(zhuǎn)碼中用到的工具和服務(wù)。
視頻編碼和轉(zhuǎn)碼工具
在這一部分,我們將了解視頻壓縮、編碼和轉(zhuǎn)碼中的常用工具和服務(wù)。其中一些是付費(fèi)的,一些是開源的。每種工具或服務(wù)都擁有不同的功能和特性。
我們先來看開源的工具。
FFmpeg (開源)
FFmpeg是目前為止最流行的視頻編解碼工具。它支持視頻解碼、大部分容器格式的多路分離和多路復(fù)用、改變視頻分辨率、能夠在最常用的視頻編解碼器(如H.264/AVC、HEVC、AV1和VP9等)中編碼,這些功能使FFmpeg成為不可或缺的視頻壓縮工具。
Handbrake(開源)
作為開源視頻轉(zhuǎn)碼器,Handbrake被認(rèn)為是基于GUI的最佳視頻編碼和轉(zhuǎn)碼工具。操作簡單、可基于多平臺、并涵蓋廣泛的預(yù)設(shè)和設(shè)備。這意味著你無需花錢購買轉(zhuǎn)換或轉(zhuǎn)碼工具,更無需花費(fèi)數(shù)小時制作命令行參數(shù),就能夠前所未有地輕松、快速壓縮視頻。
視頻編碼的付費(fèi)工具和服務(wù)
基于云的視頻壓縮付費(fèi)服務(wù)有好幾百個,這些服務(wù)通常支持多種類型的容器、編解碼器、ingest/egress格式,如RTMP、HLS、DASH等。
下面簡略地列出了一些比較常用的服務(wù):
- Mux.com
- Encoding.com
- Wowza.com
- Harmonic 360
- AWS Elemental
- QEncode
- Coconut.co
- Bi
所以,視頻編碼究竟是藝術(shù)還是科學(xué)?
學(xué)習(xí)了這么多視頻編碼和壓縮的知識,這里有一個有趣的哲學(xué)問題:視頻編碼/轉(zhuǎn)碼究竟是藝術(shù),還是科學(xué)?你認(rèn)為呢?
老實講,如果你問我,我只能回答,各有千秋。
說視頻編碼是科學(xué),是因為它需要精確的公式和算法,而這些公式和算法都是在世界各地的實驗室中被發(fā)明出來的,并需要接受不斷的測試和改進(jìn)。
另一方面,說視頻編碼是藝術(shù),是因為對視頻編碼質(zhì)量的感知是主觀的,不同的人對視頻質(zhì)量好壞的判斷不同。所以,當(dāng)你在設(shè)置某個編碼器或者編碼器的壓縮工具時,你不能只是按照發(fā)給你的表格中的質(zhì)量措施和碼率值來設(shè)置編碼器。
一位態(tài)度認(rèn)真的工程師在進(jìn)行視頻編碼設(shè)計時,一定會嘗試在不同的參數(shù)設(shè)置下觀察編碼效果,并最后決定哪種設(shè)置才能最大程度上滿足他的觀眾。你看,取悅他人是一門藝術(shù)
你是怎么想的?編碼是藝術(shù),還是科學(xué)?在評論區(qū)告訴我你的想法!
結(jié)束語
我希望本篇關(guān)于視頻編碼和解碼的文章能夠?qū)δ阌兴鶐椭?,并讓你領(lǐng)略視頻壓縮中藝術(shù)和科學(xué)的魅力。
我們下次再見,祝直播愉快!
本文已獲得作者Krishna Rao Vijayanagar授權(quán)翻譯和發(fā)布,特此感謝。
原文鏈接:
1.《視頻編碼完全指南》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點,與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《視頻編碼完全指南》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/3032339.html