聊聊影片中的編解碼器,你所不知道的h264、h265、vp8、vp9和av1編解碼庫

你知道FFmpeg嗎?了解過h264/h265/vp8/vp9編解碼庫嗎?

我們日常生活中使用最廣泛的五種影片編碼:H264(AVC)、H265(HEVC)、vp8、vp9、av1都分別是什麼?由哪些組織/公司實現的?編解碼庫的授權協議都是什麼?他們又分別有什麼優點?
今天就讓部落客帶領諸位小夥伴們一起來簡單了解一下,影片中的這幾種常用的編解碼器。

H264(AVC)

最常用的影片編碼。

H.264在1997年ITU的影片編碼專家組提出時被稱為H.26L,在ITU與ISO合作研究後被稱為MPEG4 Part10或H.264。

雖然上述兩個組織提出了H264編碼規範,但是並沒有具體實現。

openh264

所以我們日常使用的影片編碼大多由思科(cisco)開源的openh264編解碼庫:
//www.openh264.org/。

x264

目前性能最好最完善的h264編解碼庫。

由大名鼎鼎的VLC播放器的維護機構,法國videolan開源組織維護的libx264編解碼庫://www.videolan.org/developers/x264.html。

videolan開源組織的前身是法國巴黎中央理工學院的一個學生項目。


這也是為什麼音影片開發工程師默認會使用VLC播放器來測試音影片的原因,不僅僅是因為VLC強大,還因為VLC播放器就是事實上的h264/h265音影片編碼的標準實現,如果VLC都播放不了你的影片,那肯定是你的影片有問題。

H265(HEVC)

x265

業界最好的h265(hevc)編解碼庫。
同樣由大名鼎鼎的VLC播放器的維護組織法國videolan組織開源的libx265編解碼庫:
//www.videolan.org/developers/x265.html

使用x264,x265編碼的小夥伴們需要注意這兩款編解碼庫使用GPL v2授權協議,商業軟體使用需要遵守GPL v2協議。

ffmpeg內置openhevc編解碼庫

由FFmpeg維護的H265(HEVC)的編解碼庫,能用。
//openhevc.github.io/openHEVC/

kvazaar

FFmpeg項目引用的另一款開源的H265(HEVC)解碼庫,注意kvazaar解碼庫只提供H265解碼,並不提供編碼。
//github.com/ultravideo/kvazaar

VP8

VP8是google定義並開源的影片編解碼標準和編解碼庫實現。

Google 收購了On2 Technologies,之後Google開放了其擁有的VP8影片編碼技術源程式碼並免費提供給所有開發者使用,發布
WebM 開放網路媒體項目

VP8號稱比H264編碼性能更好,實際上沒那麼誇張,差不多相當於ffmpeg內置默認的openh264編解碼庫。VP8的壓縮實現與H264有點區別就是VP8沒有B幀,而H264有B幀。

VP8的優點是開源,沒有H264/H265的專利版權風險,可以隨便用,除了IE9以下版本的瀏覽器外,現代瀏覽器都支援VP8影片編碼,當然也支援webm影片格式。

libvpx

libvpx是WebM項目的子庫,可以同時支援VP8和VP9影片編碼:
//www.linuxfromscratch.org/blfs/view/svn/multimedia/libvpx.html

webP圖片格式的影像編碼就是使用的VP8編碼進行壓縮的。
WebM影片的影片編碼也是採用VP8/VP9編碼。

VP9

VP9也是google開源的用與比拼H265(HEVC)的編解碼器,可以看出google真的很努力的在開源,這種開源的影片編碼應該多一些,百花齊放才能促進音影片技術升級。
兼容性方面,除了IE9以下版本的瀏覽器外,現代瀏覽器都支援VP9影片編碼,當然也支援webm影片格式。

libvpx

libvpx上面講過了,稍微提一下。是WebM項目的子庫,可以同時支援VP8和VP9影片編碼:
//www.linuxfromscratch.org/blfs/view/svn/multimedia/libvpx.html

AV1

重磅壓軸,google最新推出的針對VP9編碼有多項優化後的新的編解碼器:AV1。

AV1是Google VP10、Mozilla Daala以及Cisco Thor三款開源編碼項目共同研發成果。AV1打破了之前編碼標準中傳統的二維運動矢量模型的限制,第一次引入了仿射變換運動模型,不僅可以描述平移運動,同時可以更好的表述如旋轉、縮放等更加複雜的運動,有效的提升了影片編碼效率

在實際測試中,AV1比H265(HEVC)壓縮率提升約27%,可以說是力壓H265。是目前為止,世界上壓縮性能最好的影片編解碼器。再借用遊戲界的話術來講,那AV1就是「次世代」編解碼器。

得益於AV1的開源和相比於H265更節省頻寬的緣故,目前AV1有超過h265編碼的趨勢,更多影片平台和直播平台選擇使用AV1編碼,而不是H265。

目前使用AV1編碼的主流流媒體平台有這幾家:「奈飛、YouTube、BBC、愛奇藝」

儘管業界已經喊了4K喊了十多年,但是實際上4K普及率依然並不高,這些年主流的還是H264編碼,尤其是在直播領域,h265編碼基本上沒什麼應用。4K的普及不僅需要影片編解碼技術的升級,還需要用戶頻寬和其他硬體配置的升級換代。在頻寬費用如此高昂的時代,各大影片平台和直播平台廠商升級意願都不高,但是因為有了AV1編碼,各大影片平台和直播平台廠商能夠使用AV1編碼帶來更少的頻寬消耗,相信AV1編解碼器的未來會更好。

這裡只介紹FFmpeg內置的兩個av1編解碼器:dav1d和 librav1e。

dav1d

由FFmpeg和法國videolan開源組織共同維護的dav1d編解碼庫://www.videolan.org/projects/dav1d.html。

跟其他videolan維護項目不同的是,dav1d編解碼庫不受專利版許可權制。

librav1e

號稱最快的av1解碼器。實際上dav1d和librav1e編解碼器性能差不多,差別不大。
//github.com/xiph/rav1e

如果覺得部落客寫得還不錯,歡迎「關注、點贊、收藏」一鍵三連。

Tags: