- Oct 17 Wed 2018 06:12
-
H.265 和 H.264 的不同
透過以上瞭解,詳細大家對於H.265和H.264解碼有了一定的認識。希望能對計畫選購超高清電視的消費者提供一定的幫助。
Reference: https://3smarket-info.blogspot.com/2018/11/h265-h264.html
視頻編碼H.265與H.264的區別——-深入淺出說監控
我們在購買監控攝像頭或者錄像機產品的時候,一般情況下,經銷商會問你是要H.265編碼格式與H.264編碼格式的,很多人都會好奇,什麼是H.265和H.264?他們的實際效果有什麼區別?今天就從定義和作用兩方面來聊聊H.265和H.264之間的區別。

一、定義:
視頻編碼:指通過特定的壓縮技術,將某個視頻格式的文件轉換成另一種視頻格式文件的方式。常見的音頻視頻編碼有MPEG系列與H.26X系列。
H.264,同時也是MPEG-4第十部分,是由視頻編解碼技術的組織國際電聯(ITU-T)視頻編碼專家組(VCEG)和ISO/IEC動態圖像專家組(MPEG)聯合組成的聯合視頻組(JVT)提出的高度壓縮數字視頻編解碼器標準。這個標準通常被稱之為H.264/AVC–用來明確的說明它兩方面的開發者。因此,不論是MPEG-4 AVC、MPEG-4 Part 10,還是ISO/IEC 14496-10,都是指H.264。
而H.265(HEVC,High Efficiency Video Coding,高效率視頻編碼)是ITU-TVCEG繼H.264之後所指定的新的視頻編碼標準,它圍繞現有視頻編碼標準H.264,保留原來的某些技術,使用新技術對某些方面加以改進優化,如碼流、編碼質量、延時等,提高壓縮效率、增強錯誤恢復能力、減少實時的時延、降低複雜度等。

二、對比
1、傳輸碼率
H264由於算法優化,可以低於1Mbps的速度實現標清數字圖像傳送;H265則可以實現利用1~2Mbps的傳輸速度傳送720P(解析度1280*720)普通高清音視頻傳送;H.265能在有限帶寬下傳輸更高質量的網絡視頻,僅需原先的一半帶寬即可播放相同質量的視頻,實現在線播放1080P全高清視頻。H.265標準也同時支持4K、8K超高清視頻,讓網絡視頻跟上了顯示屏「高解析度化」的腳步;所以,H.265擁有更低的傳輸碼率。
2、壓縮率碼率:
H.264是一種高性能的視頻編解碼技術,它最大優勢是高壓縮比率,在同等圖像質量的條件下,H.264的壓縮比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。H.264在低碼率作用下,大大節省用戶下載時間和數據流量收費,降低成本,同時更擁有高質量流暢的圖像,而相對於H264,H265則青出於藍勝於藍,它的壓縮效率更好,在H264的基礎上傳輸再減半,存儲空間也減半;
值得一提的是,H.264在具有高壓縮比的同時,還擁有高質量流暢的圖像。所以,使用H.264編碼的視頻監控,傳輸所需帶寬更少,也更快,更經濟實惠。就好比一個相同質量與畫質的視頻,H.264能夠讓視頻文件大小壓縮一半。
相對於H.264,H.265青出於藍勝於藍,壓縮效率更好,在H.264的基礎上傳輸再減半,存儲再減半。也就是說,在相同的畫質和碼率下,H.265比H.264占用的存儲空間理論上要少50%。

3、視頻畫質:
那麼,在H.265的壓縮效果高於H.264,視頻的畫質會不會就有所缺損了呢?擔心完全無必要,H265引進了一個叫Deblocking filter的功能,它可以儘量將邊緣區域平滑化,建立區塊之間數據的依賴性,從而提高整體圖像質量。如果解析度足夠高,就連視頻人物臉上的毛孔都可以看得清;簡而言之,在存儲空間相同前提下,一樣的碼率,H.265會比H.264畫質要高30%—40%。
三、總結
H.265與H.264的區別,就在於H.265壓縮效率更高,傳輸碼率更低,視頻畫質更優,實現監控視頻傳輸帶寬減半、存儲減半、成本減半,帶給人們更優質的體驗。而現在,H.265的時代已經到來。

H.265與H.264:H.265和H.264之間的比較
根據日常經驗,您可能會發現,儘管H.265(HEVC)是H.264(AVC)的後繼產品,但它在市場上並不像H.264那樣受歡迎.而且,似乎H.265和H.264之間的討論是不間斷的.這兩個視頻編解碼器的主要區別是什麼? H.265的優點是什麼?為什麼H.264不如H.265?問題在這里和那裡.在本文中,我們將向您展示H.265和H.264之間的詳盡比較.
H.265和H.264的定義
H.264或MPEG-4第10部分,高級視頻編碼(MPEG-4 AVC)是基於塊的基於運動補償的視頻壓縮標準.它廣泛用於藍光光盤,YouTube和iTunes Store中的視頻等互聯網資源,網絡軟件以及通過地面,有線和衛星進行的HDTV廣播.
H.265或MPEG-H第2部分,高效視頻編碼(HEVC)是一種視頻壓縮標準,旨在作為廣泛使用的H.264(AVC)的後繼產品.它以與H.264相同的比特率提供更高質量的視頻.H.265支持的分辨率高達8192×4320,包括8K UHD.
H.265和H.264之間的比較
我將列出H.265和H.264在文件大小,宏塊和壓縮率等方面的區別,以便為您提供清晰的比較.
文件大小: 一些先前的研究表明,位減少與視頻圖像質量成反比,並且對文件大小也呈正比.與H.264相比,H.265以較低的比特率編碼相同的信息,但具有相同的視頻質量,這意味著當壓縮到相同的文件大小或比特率時,H.265可以提供更好的視覺質量.
宏塊: H.264支持16 x 16像素宏塊,在高分辨率視頻中效果不佳.H.265提供對64 x 64像素宏塊的支持,在所有分辨率下均顯示出更高的編碼效率.
壓縮率: H.265的壓縮率幾乎是H.264的兩倍,可以進一步降低設計流量,從而降低存儲和傳輸成本.
幀內預測: H.265的幀內預測功能更加全面,這意味著H.265可以支持33個運動方向,而H.264僅允許9個運動方向.
帶寬利用率: 與H.264編解碼器相比,H.265需要的帶寬要少得多.實際上,H.264需要32 mbps的互聯網速度才能播放4K視頻,而HEVC只需15 mbps即可輕鬆實現同樣的效果.
如何將H.265轉換為其他格式以及反之
從以上比較中我們知道,H.265優於H.264,但是由於並非所有流行設備都完全支持H.265,因此H.265並未在市場上廣泛使用.如果您想在便攜式設備上欣賞H.265視頻,則最好將H.265轉換為其他格式以在設備上播放.
要轉換視頻編解碼器, VideoSolo Video Converter Ultimate是您的最佳選擇,它是一款功能強大但簡單的視頻轉換器,可以對H.265/HEVC進行編碼和解碼.使用此類程序,您可以將H.265/HEVC 4K(UHD),1080P(FHD),720P(HD)和480P(SD)轉換為常見的視頻格式.另一方面,您也可以將常規視頻格式傳輸到H.265.此外,您可以根據自己的喜好編輯轉換後的視頻.這是一個非常神奇的視頻轉換器,可以快速有效地滿足您的需求.
下面,我想向您展示如何將H.265轉換為其他格式的教程.
#步驟1.添加文件
完成VideoSolo Video Ultimate Converter的下載和安裝後,啟動該程序,您可以從主界面添加文件.單擊“添加文件”瀏覽存儲在計算機中的文件夾,然後選擇要轉換的H.265文件.但是,您可以將文件直接拖放到程序中.
#步驟2.選擇輸出格式
根據需要,可以從“配置文件”的彈出列表中選擇所需的格式.共有300多種格式,例如MP4,AVI,MOV和WMV等所有常見的視頻格式.
#步驟3.選擇輸出文件夾
單擊“瀏覽”按鈕,然後選擇一個文件夾來保存轉換後的文件.
#步驟4.將H.265轉換為其他格式
單擊“轉換”按鈕開始轉換過程.只要轉換完成,請單擊“打開文件夾”以找到轉換後的文件.
閱讀本文後,您是否解決了問題?我敢打賭,你是.根據H.265和H.264的比較,可以看出H.265的優越性.您可以說H.265是未來的編解碼器.在VideoSolo Video Ultimate Converter的幫助下,您可以輕鬆地將常見的視頻格式轉換為H.265或從H.265轉換為普通的視頻格式.只有幾個簡單的步驟,為什麼不嘗試一下呢?
由於儲存空間和資料傳輸速度的限制,我們可能沒辦法將錄影設備所錄製到的資訊,或是藉由軟體演算出來的畫面完好無損地保存或是傳送。影片是給人看的,但是人類的眼睛的分辨能力有限,非常細微的訊號差異其實感受不太出來,因此可以使用一些會改變原本影像訊號的方式來將其重新編碼(Encode)成和原始影像訊號看起來差異不大的格式,減少儲存影像訊號所佔用空間和加快傳送影像訊號時的速度,而這種壓縮影像訊號的方式就稱為有損壓縮(Lossy Compression)。有損壓縮影像訊號的方式有很多種,以10-bit的色彩深度來說,常見的格式為H.264、H.265、VP9,另外還有比較後來才出現的AV1格式。有些編碼格式除了可以做有損壓縮外,還可以做無損壓縮(Lossless Compression),將原始的影片畫質完整地保留下來。這篇文章並不會去比較影片編碼格式的畫質優劣,因為相同編碼格式的影片,其畫質可以藉由增加影片的位元率來提高。取而代之地,這邊文章將會實際地去對相同檔案做不同格式的轉檔,並以SSIM(structural similarity)指標為準,來比較在幾乎相同畫質下的不同格式的影片,其位元率的差異如何。
有損影片壓縮
有損影像壓縮的原則
有損(Lossy)影響壓縮,顧名思義就是將影像訊號使用破壞性壓縮,使用較少、有限的資料量來還原出接近原始的影像訊號,以縮小儲存影像訊號所需的空間。
由於影像是給人看的,因此理論上會儘量保留會對人類肉眼比較敏感的資訊,並移除或是減少人類肉眼不敏感的部份。
影片壓縮
一部影片是由很多張影像(影格)所構成,由於這些影像有時間順序,因此在進行影片編碼時,我們不需要將其所有的影像都完整地儲存下來,而是可以藉由計算連續的影格,將其有變動和沒變動的部份分開來儲存,因此沒變動的影像部份,儘管會在多個影格中出現,但也還是只需要儲存一份的資訊就好,如此一來就能把儲存空間節省下來。當然,這樣子做的話也會讓影片在解碼的時候需要去參考前後影像的資料來繪製出目前要播放出來的完整影像。
影片的位元率
影片的位元率直接影響著影片檔案的大小,這點很重要,因為有些人可能會提出這樣無理的要求:「我想要保留影片的位元率,但是要讓影片檔案變小一點。」
實際上影片檔案所需佔用的儲存空間算法如下:
儲存空間 = 平均位元率 * 影片時間長度
單看影片的位元率,即便是使用同一個編碼器所編碼出來的影片,也無法比較出兩個影片的畫質優劣。這是因為影片的壓縮如同上述所提,除了會壓縮單張影像之外,也會針對影像和影像之間的關係進行處理,處理得愈多,位元率自然就愈低,但影片畫質並不會因此下降或是提升。
若要比較相同片源的影片畫質,最好還是參考以下文章來計算重製後的影片和片源的畫質差異程度……數字會說話!
常見的壓縮格式
影片壓縮的格式有許多種,不同的壓縮格式會使用不同的演算法來對影像訊號進行壓縮,影格之間的處理方式也有所不同。愈新的影片編碼格式通常會有愈好的壓縮率,但也需要更久的運算時間來進行編碼和解碼的動作。
MPEG-4
MPEG-4(此處指MPEG-4 Part 2)是MPEG(Moving Picture Experts Group)在1990年代所制定的影片編碼標準,提供多種Profile。代表的編碼器有Xvid和DivX,前者採用GPL開源,更為流通,基於MPEG-4 ASP(Advanced Simple Profile)標準。
H.264
H.264是由多個組織組成的JVT(Joint Video Team)在2000年代所制定的標準,也被分類在MPEG-4之下(MPEG-4 Part 10),也稱為MPEG-4 AVC,可以寫成H.264/AVC。H.264可在相同畫質下提供比過去MPEG-4標準更低的位元率,且支援10-bit編碼(Hi10P)。代表的編碼器為x264。
H.265
H.265是由JVT在2010年代所制定的標準,在MPEG-H之下(MPEG-H Part 2),也稱為MPEG-H HEVC( High Efficiency Video Coding),可在相同畫質下提供比MPEG-4 AVC標準更低的位元率。代表的編碼器為x265。
VP8
由於MPEG系列的格式要商業運用的話都需要繳交授權費用,因此Google和On2 Technologies就在制定了VP8,並在2010年將On2 Technologies收購之後將VP8開源(BSD授權),使其成為可以免費授權使用的高品質影片編碼格式,常與H.264做比較。官方的編碼器為libvpx。
VP9
西元2013年,VP8的後繼格式VP9誕生,可在相同畫質下提供比過去VP8更低的位元率,且支援10-bit編碼(VP9 Profile 2)。官方的編碼器為libvpx。
AV1
AV1是由多個組織組成的開放媒體聯盟(AOMedia)在2018年開發出來的影片編碼格式,其編碼技術主要來自於Google開天窗的VP10(VP9的下一代),因此可以在相同畫質下提供比過去VP9更低的位元率。官方的編碼器為libaom。
影片壓縮格式的優劣
通常愈晚出來的影片格式壓縮效果會愈好,但也會需要更多的運算時間來進行編碼和解碼的動作。像是H.264、H.265、VP9、AV1這樣的格式,它們雖然都有支援10-bit編碼,但若沒有辦法被硬體編碼或解碼的話,就需要用到大量的CPU運算資源透過軟體程式來進行編碼或解碼,在硬體等級比較不好的電腦設備上若無法順暢地編解也等同無用武之地。現階段最流行的10-bit影片編碼格式還是H.265,雖然它不是最好的,但因為它有最多的硬體設備支援,所以是最實用的。
H.264(x264)、H.265(x265)、VP9、AV1的比較
接下來才是本篇文章的重頭戲,筆者將會使用一個解析度為1920×1080、FPS為24、像素格式為yuv420ple、長度為30秒的無損壓縮的片源,來實際對H.264、H.265、VP9和AV1格式進行轉檔測試。
測試用的影片檔
這個測試用的影片檔案來自於這個網站提供的Big Buck Bunny影片逐格PNG檔。筆者下載了其4:30~5:00的片段的圖檔,也就是big_buck_bunny_06480.png
到big_buck_bunny_07200.png
,並利用以下指令透過x265編碼成無損壓縮的H.265影片,位元率為194249Kbps。
ffmpeg -r 24 -start_number 06480 -i big_buck_bunny_%05d.png -vcodec libx265 -x265-params lossless=1 -preset veryslow -pix_fmt yuv420p10le out.mp4
可以透過以下連結下載壓製好的檔案:
https://file.magiclen.org/index.php?file=426967204275636b2042756e6e792d31302d6269742e726172
如果以VP9格式來做無損壓縮的話,使用的指令如下:
ffmpeg -i ‘Big Buck Bunny.mp4’ -vcodec vp9 -lossless 1 -speed 0 ‘Big Buck Bunny.webm’
這個以VP9壓縮後的影片,位元率為209155Kbps,約為libx265壓製出來的108%。由此可知,10-bit無損壓縮下,x265是比VP9還要好上一點的。
編碼器
為了編碼出不同格式的檔案,筆者使用了多種不同的編碼器,都是透過FFmpeg 4.2.1來操作。列表如下:
- libx264 snapshot-20190211-2245:用來進行H.264的編碼。
- libx265 3.2:用來進行H.265的編碼。
- libvpx 1.8.1:用來進行VP9的編碼。
- libaom 1.0.0-20200110:用來進行AV1的編碼。
畫質差異分析工具
為了比較影片檔案之間的畫質差異,筆者使用了FFmpeg來計算PSNR和SSIM(作法可參考這篇文章),也用FFmpeg來擷取影片中的影格畫面,並使用ImageDifferencer 1.0.1來比較影像在壓縮前與壓縮後的差異(可參考這篇文章)。
片源的影格擷取
以下是從片源的第16秒所取得的影格畫面:
使用的FFmpeg指令如下:
ffmpeg -i ‘Big Buck Bunny.mp4’ -ss 16 -frames:v 1 ‘Big Buck Bunny.png’
CRF(Constant Rate Factor)和qscale
CRF是x264、x265、libvpx、libaom用來控制影片畫質的參數,數值愈低畫質愈高(位元率相對愈高),x264和x265的CRF範圍都是0~51;libvpx和libaom的CRF範圍是0~63。
若要使用CRF來控制x264和x265的編碼畫質,FFmpeg指令寫法如下:
ffmpeg -i 輸入影片路徑 -vcodec libx264/libx265 -crf 20 -preset veryslow 輸出影片路徑
其中,-preset veryslow
參數可以儘可能地在保有相同的畫質下,減少位元率。(如果要讓位元率與畫質擁有極致的比例,可以使用-preset placebo
,不過編碼速度會很慢!)
若要使用CRF來控制libvpx-vp9的編碼畫質,FFmpeg指令寫法如下:
ffmpeg -i 輸入影片路徑 -vcodec libvpx-vp9 -b:v 0 -crf 20 -speed 0 輸出影片路徑
其中,-speed 0
的功用類似x264和x265的-preset veryslow
。
若要使用CRF來控制libaom的編碼畫質,FFmpeg指令寫法如下:
ffmpeg -i 輸入影片路徑 -vcodec libaom-av1 -b:v 0 -crf 20 -strict -2 輸出影片路徑
其中,-strict -2
是用來允許使用FFmpeg實驗性的功能(因為AV1還是FFmpeg 4.2.1的實驗性功能)。
開始比較
底下將會以先前這篇8-bit影片編碼比較的文章作為基準,針對其中根據SSIM找出的三種畫質等級(視覺無損、標準畫質和筆者可接受的最低畫質)來將片源分別用x264、x265、VP9、AV1進行有損壓縮,最後再來比較這些SSIM指標相近的影片,其位元率的高低。
視覺無損(SSIM≈0.9925)
「視覺無損」(visually lossless)的畫質,也就是雖然不是真的無損,但人類肉眼看起來的結果是跟片源一模一樣的。x264使用21作為CRF參數值來進行轉檔後,可以得到位元率為2879Kbps的影片。此時的影片與片源的PSNR為46.972455,SSIM為0.992194。
影格擷取如下:
與原始影格的差異如下:
從上圖可以看出x264在壓縮影像的時候會先從丟失邊緣的細節開始。
當x265的CRF參數設為22時,可以得到位元率為2423Kbps的影片。此時的影片與片源的PSNR為40.536643,SSIM為0.973012。
影格擷取如下:
與原始影格的差異如下:
從上圖可以看出x265在壓縮影像的時候也會先從丟失邊緣的細節開始。
當VP9的CRF參數設為22時,可以得到位元率為3955Kbps的影片。此時的影片與片源的PSNR為48.028055,SSIM為0.992675。
影格擷取如下:
影片壓縮在幹嘛?看懂H.264、H.265、VP9等影片的檔案瘦身原理

無論我們使用手機拍攝影片,或是透過YouTube、Netflix觀賞影片,這些檔案都會經過壓縮手續,來節省儲存空間與傳輸流量,然而影片壓縮的原理是什麼,或是目前大家會遇到林林總總的檔案編碼格式,是不是讓你覺得眼花繚亂,就讓我們一起來看看這些技術背後的原理吧。
電腦也是點描派藝術大師
其實電腦儲存數位影像的方式很簡單,但在說明其原理之前,筆者想要先介紹一下點描派藝術大師秀拉,他透過堆砌色點的方式繪畫,當觀賞者與圖畫保持較長距離時,因為不容易看清楚每一個色點,所以就會感覺是一幅正常的畫作。
數位影像的原理與點描畫很接近,電腦會透過儲存很多色點的方式記錄影像,不過在電腦領域會以「像素」(Pixel,也可稱為畫素)稱呼色點,畫面上的每個像素除了有固定位置外,還記錄了紅、綠、藍等3原色的資訊(即RGB資訊),當累積足夠多像素之後,就能拼湊出細膩的畫面。
以Full HD的影像為例,它的解析度為1920 x 1080,代表,畫面上會有寬1920個像素、高1080個像素,透過共207萬3600個像素記錄影像。
▲ 《大碗島的星期日下午》是點描派大師秀拉最具代表性的畫作之一。
▲ 將畫作放大來看,可以發現是由許多色點所構成。
▲ 45 x 30解析度(共1,350像素)的影像因像素太少,所以相當粗糙。
▲ 若把解析度提升至720 x 480(共345,600像素),由更多像素組合出的影像就清晰許多。
▲ 目前主流的Full HD的解析度為1920 x 1080,代表寬、高分別有1920、1080個像素,雖然不及更高階的4K解析度,但已經能夠提供高畫質的視覺體驗。
點描其實很佔空間
目前常見的顏色取樣深度為24bit,代表分別使用8個位元儲存RGB資訊,因此3原色可以有256種不同色階變化,組合起來共可呈現16,777,216(約1677萬)種顏色。
由於每個像素需佔用24bit,所以儲存Full HD畫面上的200多萬個像素總共需要的儲存空間如下
1920 x 1080 x 24 = 6,220,800bit
,若以無壓縮的BMP格式儲存這種圖片,則需額外加上54 bit的檔頭資料,總共會佔用5.93MB左右的儲存空間。
在不壓縮畫面的情況下,光是儲存1張靜態畫像就會佔用不少空間,若以60FPS的影片為例,每秒儲存60張畫面,就需佔用356MB左右,這樣下來1個小時的影片的畫面部分(不含聲音資訊),就會佔用約1.22TB的儲存空間。
這樣無論是對於儲存或是傳輸影片來說都是很大的負擔,舉個例子來說,如果我們以手機拍攝無壓縮、Full HD、60FPS影片,那麼64GB的空間大約只夠儲存3分鐘的影片,若以10GB的行動上網流量觀賞串流影片,則只能觀看28秒影片,看來不把影片壓縮一下真的讓人吃不消。
▲ 24bit雖然可以還原美麗的色彩,在未壓縮的情況下儲存靜態畫像就耗費不少空間。
▲ 降低顏色取樣深度雖然可以節省儲存空間,但也會大幅折損色彩表現,圖為16色範例。
先從靜態圖片壓縮
從上面的範例可以看到,降低顏色取樣深度並不是個可行的解決方案,所以我們需要使用其他方式壓縮影片以節省容量,由於這個部分牽扯到許多艱深的影像處理技術,會讓文章內容太過發散,所以筆者僅以概念性的方式解說影片壓縮的原理。
由於影片是由許多靜態圖片組合而成,所以壓縮的過程首先可以先考慮把每張圖片都壓縮起來,舉例來說,將BMP點陣圖壓縮成JPEG格式,就能節省許多容量。
而這類圖片壓縮的技術大多為破壞性壓縮,意即編碼器會捨棄些許原始資訊以換取更高的壓縮效率,這類壓縮方式大家比較容易理解的案例是MP3音訊格式。由於一般人耳大多只能聽到頻率20,000Hz以下的聲音,所以MP3就捨棄這些人耳不易查覺的高頻訊號,讓壓縮後的檔案會更小,但由於被捨棄的部分在解壓縮後無法還原到與原始資訊相同,因此稱為破壞性壓縮。
回到圖片部分,壓縮的重要程序就是捨棄人眼難以分辨的細節,由於人眼對亮度比較敏感,而對顏色比較遲鈍,因此在壓縮過程中,會將RGB資訊轉換成YUV,在維持記錄每個像素亮度(Luma)的情況下,降低色度、濃度(Chrominance、Chroma)的記錄密度,達到節省容量的效果。
接著透過離散餘弦變換(Discrete Cosine Transform)、量化(Quantization)、熵編碼(Entropy Coding)等數學運算方式,再次將YUV訊號進行破壞性壓縮,進一步縮小檔案容量。
此外在壓縮影片時,編碼器也會進行畫格內預測(Intra-Frame Prediction),找出空間上的資訊冗餘(簡單地說就是分析畫面內臨近像素是否是相近顏色),並以差分編碼(Delta Encoding)方式節省記錄容量。
▲ 以JPEG格式圖片格式為例,將品質參數設為96(最高為100),可以把原先容量為854KB的BMP圖片壓縮至87.9KB,且肉眼不易分辨差異。
▲ 但是把品質參數設為10的話,雖然能把容量進一步壓縮至12.8KB,但可以看出破壞性壓縮對畫質造成負面影響。
動態畫面靠資源回收
當考慮完單張的靜態畫面後,接下來就是要處理把多張畫面串起來後的問題,比方說60FPS的影片就代表每秒播放60張靜態畫面,但是畫面中可能會有很多區域是重覆的,如果可以不用記錄這些重覆的部分,是不是就可以省下很多容量呢?
我們可以想像一個都會區馬路的場景,攝影機高處俯瞰街景,影片中的行人、車輛會移動,但是道路、建築物卻固定不動。另一個例子是電影結束後所播放的工作人原列表,會有許多人的名字從畫面下方向上捲動,字體內容不會改變,只是持續往相同方向移動。
這個時候就是進行畫格間預測(Inter-Frame Prediction),找出時間上的資訊冗餘(簡單地說就是分析影片播放過程中沒有變動的物件),並以動態補償(Motion Compensation)方式找出影片中有變動的部分,只記錄差異的資料,至於沒有變動的部分則重覆利用先前的資訊。
回到前面的例子,在街景的範例中,編碼器會先以I畫格(I Frame)記錄完整畫面,然後使用P畫格(P Frame,可以參考前一畫格內的資訊)與B畫格(B Frame,可以參考前一與後一畫格內的資訊,可以提升壓縮率,但會增加運算負擔)記錄行人、車輛移動時造成的畫面差異,至於沒有變動的部分則沿用先前畫面上的資訊,如此一來就能大幅減少需要記錄的資訊,進而發揮降低壓縮後的檔案容量。
▲ 筆者隨手拍攝的範例影片,可以看到畫面中只有行人、車輛在移動。(為降低容量所以畫質較差請見諒)
▲ 影片的I畫格會記錄完整畫面,但P或B畫格則只需記錄紅框標註的區域,其他部分的資訊則可省略並節省容量。
壓縮後只需千分之一容量
早期常見的影片壓縮格式包含VCD與DVD使用的MPEG-1、MPEG-2,還有網路影片常用的RM、RMVB。到了MPEG-4盛行的年代,則因公開規格的關係,讓各公司、機構可以根據MPEG-4標準開發不同的格式,而產生如DivX、XviD、3ivx等繁多的衍生格式,直到H.264出現,才算是一統MPEG-4的「業界標準」,而H.264也是目前最主流的影片壓縮格式之一。
以YouTube所採用的H.264格式影片為例,筆者先前以Full HD解析度錄製的《實感賽車7》開場動畫時間長度約為30秒,若以未壓縮的方式儲存需要佔用10.43GB的空間,而經YouTube壓縮後檔案容量大幅下降為10.4MB,差距大約為1000倍。
除此之外,Google也先後推出VP8、VP9等影片壓縮格式,改善線上影片串流的觀賞體驗,而H.264的後續技術H.265也能在維持相近影像品質時,節省一半影片容量,對於往4K或更高解析度的影片播放來說相當關鍵。這3種壓縮格式的介紹可以參考筆者先前所撰寫的深入報導。
延伸閱讀:
認識 VP8 影像編碼:整合 HTML5 更小更漂亮、挑戰 H.264 地位
VP9影像編碼格式是什麼?為何能讓YouTube播高畫質影片不需緩衝
新一代影像編碼格式 H.265 完全析解,流量省一半,檔案更小更美
目前最新的影片壓縮格式之一就是由開放媒體聯盟(AOMedia)所開發的AV1,它的目標是取代其前身,即由Google開發的VP9影片壓縮格式,並具有日漸完整的生態系統,有望成為下個世代最主流的格式。
▲上傳至YouTube的影片會犧牲些許畫質並換取更高的壓縮率,檔案容兩能夠壓低至約為無壓縮影片的千分之一。
▲ AV1具有完整的生態系統與相對開放且免權利金的優勢,未來發展值得期望。
▲ AV1已經獲得許多廠商加盟與支持,對普及化有決定行的助益。
影片壓縮的技術不會隨時間停下,當我們有更高的影片解析度、畫質需求,而手上又有更強大的運算效能(如更新的智慧型手機處理器),就是壓縮效率更好的技術登場的時機,所以未來的發展還有許多好戲可以看呢。