當(dāng)前位置:首頁 > 芯聞號 > 充電吧
[導(dǎo)讀]視頻編碼的意義原始視頻數(shù)據(jù)存儲空間大,一個 1080P 的 7 s 視頻需要 817 MB原始視頻數(shù)據(jù)傳輸占用帶寬大,10 Mbps 的帶寬傳輸上述 7 s 視頻需要 11 分鐘而經(jīng)過 H.264 編


視頻編碼的意義

原始視頻數(shù)據(jù)存儲空間大,一個 1080P 的 7 s 視頻需要 817 MB

原始視頻數(shù)據(jù)傳輸占用帶寬大,10 Mbps 的帶寬傳輸上述 7 s 視頻需要 11 分鐘

而經(jīng)過 H.264 編碼壓縮之后,視頻大小只有 708 k ,10 Mbps?的帶寬僅僅需要 500 ms ,可以滿足實時傳輸?shù)男枨螅詮囊曨l采集傳感器采集來的原始視頻勢必要經(jīng)過視頻編碼。


基本原理

那為什么巨大的原始視頻可以編碼成很小的視頻呢?這其中的技術(shù)是什么呢?核心思想就是去除冗余信息:


空間冗余:圖像相鄰像素之間有較強的相關(guān)性

時間冗余:視頻序列的相鄰圖像之間內(nèi)容相似

編碼冗余:不同像素值出現(xiàn)的概率不同

視覺冗余:人的視覺系統(tǒng)對某些細(xì)節(jié)不敏感

知識冗余:規(guī)律性的結(jié)構(gòu)可由先驗知識和背景知識得到


視頻本質(zhì)上講是一系列圖片連續(xù)快速的播放,最簡單的壓縮方式就是對每一幀圖片進行壓縮,例如比較古老的 MJPEG 編碼就是這種編碼方式,這種編碼方式只有幀內(nèi)編碼,利用空間上的取樣預(yù)測來編碼。形象的比喻就是把每幀都作為一張圖片,采用 JPEG 的編碼格式對圖片進行壓縮,這種編碼只考慮了一張圖片內(nèi)的冗余信息壓縮,如圖 1,綠色的部分就是當(dāng)前待編碼的區(qū)域,灰色就是尚未編碼的區(qū)域,綠色區(qū)域可以根據(jù)已經(jīng)編碼的部分進行預(yù)測(綠色的左邊,下邊,左下等)。


但是幀和幀之間因為時間的相關(guān)性,后續(xù)開發(fā)出了一些比較高級的編碼器可以采用幀間編碼,簡單點說就是通過搜索算法選定了幀上的某些區(qū)域,然后通過計算當(dāng)前幀和前后參考幀的向量差進行編碼的一種形式,通過下面兩個圖 2 連續(xù)幀我們可以看到,滑雪的同學(xué)是向前位移的,但實際上是雪景在向后位移,P 幀通過參考幀(I 或其他 P 幀)就可以進行編碼了,編碼之后的大小非常小,壓縮比非常高。



可能有同學(xué)對這兩張圖片怎么來的感興趣,這里用了 FFmpeg 的兩行命令來實現(xiàn),具體 FFmpeg 的更多內(nèi)容請看后續(xù)章節(jié):

第一行生成帶有移動矢量的視頻

第二行把每一幀都輸出成圖片

ffmpeg??-flags2?+export_mvs?-i?tutu.mp4?-vf?codecview=mv=pf+bf+bb?tutudebug2.mp4

ffmpeg?-i?tutudebug2.mp4?'tutunormal-%03d.bmp'

除了空間冗余和時間冗余的壓縮,主要還有編碼壓縮和視覺壓縮,下面是一個編碼器主要的流程圖:


圖 3、圖 4 兩個流程,圖 3 是幀內(nèi)編碼,圖 4 是幀間編碼,從圖上看到的主要區(qū)別就是第一步不相同,其實這兩個流程也是結(jié)合在一起的,我們通常說的 I 幀和 P 幀就是分別采用了幀內(nèi)編碼和幀間編碼。


編碼器的選擇

前面梳理了一下編碼器的原理和基本流程,編碼器經(jīng)歷了數(shù)十年的發(fā)展,已經(jīng)從開始的只支持幀內(nèi)編碼演進到現(xiàn)如今的 H.265 和 VP9 為代表的新一代編碼器,就目前一些常見的編碼器進行分析,帶大家探索一下編碼器的世界。


1) H.264 簡介


H.264/AVC 項目意圖創(chuàng)建一種視頻標(biāo)準(zhǔn)。與舊標(biāo)準(zhǔn)相比,它能夠在更低帶寬下提供優(yōu)質(zhì)視頻(換言之,只有 MPEG-2,H.263 或 MPEG-4 第 2 部分的一半帶寬或更少),也不增加太多設(shè)計復(fù)雜度使得無法實現(xiàn)或?qū)崿F(xiàn)成本過高。另一目的是提供足夠的靈活性以在各種應(yīng)用、網(wǎng)絡(luò)及系統(tǒng)中使用,包括高、低帶寬,高、低視頻分辨率,廣播,DVD 存儲,RTP/IP 網(wǎng)絡(luò),以及 ITU-T 多媒體電話系統(tǒng)。


H.264/AVC 包含了一系列新的特征,使得它比起以前的編解碼器不但能夠更有效的進行編碼,還能在各種網(wǎng)絡(luò)環(huán)境下的應(yīng)用中使用。這樣的技術(shù)基礎(chǔ)讓 H.264 成為包括 YouTube 在內(nèi)的在線視頻公司采用它作為主要的編解碼器,但是使用它并不是一件很輕松的事情,理論上講使用 H.264 需要交納不菲的專利費用。


專利許可


和 MPEG-2 第一部分、第二部分,MPEG-4 第二部分一樣,使用 H.264/AVC 的產(chǎn)品制造商和服務(wù)提供商需要向他們的產(chǎn)品所使用的專利的持有者支付專利許可費用。這些專利許可的主要來源是一家稱為 MPEG-LA LLC 的私有組織,該組織和 MPEG 標(biāo)準(zhǔn)化組織沒有任何關(guān)系,但是該組織也管理著 MPEG-2 第一部分系統(tǒng)、第二部分視頻、MPEG-4 第二部分視頻和其它一些技術(shù)的專利許可。


其他的專利許可則需要向另一家稱為 VIA Licensing 的私有組織申請,這家公司另外也管理偏向音頻壓縮的標(biāo)準(zhǔn)如 MPEG-2 AAC 及 MPEG-4 Audio 的專利許可。


H.264 的開源實現(xiàn):OpenH264、x264


OpenH264 是思科實現(xiàn)的開源 H.264 編碼,雖然 H.264 需要交納不菲的專利費用,但是專利費有一個年度上限,思科把 OpenH264 實現(xiàn)的年度專利費交滿后,OpenH264 事實上就可以免費自由的使用了。

x264 是一個采用 GPL 授權(quán)的視頻編碼自由軟件。x264 的主要功能在于進行 H.264/MPEG-4 AVC 的視頻編碼,而不是作為解碼器(decoder)之用。

除去費用問題比較來看:

OpenH264 CPU 的占用相對 x264低很多

OpenH264 只支持 baseline profile,x264 支持更多 profile

2) HEVC/H.265 簡介


高效率視頻編碼(High Efficiency Video Coding,簡稱 HEVC)是一種視頻壓縮標(biāo)準(zhǔn),被視為是 ITU-T H.264/MPEG-4 AVC 標(biāo)準(zhǔn)的繼任者。2004 年開始由 ISO/IEC Moving Picture Experts Group(MPEG)和 ITU-T Video Coding Experts Group(VCEG)作為 ISO/IEC 23008-2 MPEG-H Part 2 或稱作 ITU-T H.265 開始制定。第一版的 HEVC/H.265 視頻壓縮標(biāo)準(zhǔn)在 2013 年 4 月 13 日被接受為國際電信聯(lián)盟(ITU-T)的正式標(biāo)準(zhǔn)。HEVC 被認(rèn)為不僅提升視頻質(zhì)量,同時也能達到 H.264/MPEG-4 AVC 兩倍之壓縮率(等同于同樣畫面質(zhì)量下比特率減少了 50%),可支持 4K 分辨率甚至到超高清電視(UHDTV),最高分辨率可達到 8192×4320(8K 分辨率)。


專利許可


HEVC Advance 要求所有包括蘋果、YouTube、Netflix、Facebook、亞馬遜等使用 H.265 技術(shù)的內(nèi)容制造商上繳內(nèi)容收入的 0.5%作為技術(shù)使用費,而整個流媒體市場每年達到約 1000 億美元的規(guī)模,且不斷增長中,征收 0.5%絕對是一筆龐大的費用。而且他們還沒有放過設(shè)備制造商,其中電視廠商需要支付每臺 1.5 美元、移動設(shè)備廠商每臺 0.8 美元的專利費。他們甚至沒有放過藍(lán)光設(shè)備播放器、游戲機、錄像機這樣的廠商,這些廠商必須支付每臺 1.1 美元的費用。最無法令人接受的是,HEVC Advance 的專利使用權(quán)追溯到了廠商的「」”,意思是之前已經(jīng)發(fā)售的產(chǎn)品依然要追繳費用。


H.265 的開源實現(xiàn):libde265、x265


libde265?HEVC 由 struktur 公司以開源許可證 GNU LesserGeneral Public License (LGPL) 提供,觀眾可以較慢的網(wǎng)速下欣賞到最高品質(zhì)的影像。跟以前基于H.264標(biāo)準(zhǔn)的解碼器相比,libde265 HEVC 解碼器可以將您的全高清內(nèi)容帶給多達兩倍的受眾,或者,減少 50%流媒體播放所需要的帶寬。高清或者 4K/8K 超高清流媒體播放,低延遲/低帶寬視頻會議,以及完整的移動設(shè)備覆蓋。具有「擁塞感知」視頻編碼的穩(wěn)定性,十分適合應(yīng)用在 3/4G 和 LTE 網(wǎng)絡(luò)。


x265?是由 MulticoreWare 開發(fā),并開源。采用 GPL 協(xié)議,但是資助這個項目的幾個公司組成了聯(lián)盟可以在非 GPL 協(xié)議下使用這個軟件。


3) VP8 簡介


VP8 是一個開放的視頻壓縮格式,最早由 On2 Technologies 開發(fā),隨后由 Google 發(fā)布。同時 Google 也發(fā)布了 VP8 編碼的實做庫:libvpx,以 BSD 授權(quán)條款的方式發(fā)行,隨后也附加了專利使用權(quán)。而在經(jīng)過一些爭論之后,最終 VP8 的授權(quán)確認(rèn)為一個開放源代碼授權(quán)。


目前支持 VP8 的網(wǎng)頁瀏覽器有 Opera、Firefox 和 Chrome。


專利許可


2013 年三月,Google 與 MPEG LA 及 11 個專利持有者達成協(xié)議,讓 Google 獲取 VP8 以及其之前的 VPx 等編碼所可能侵犯的專利授權(quán),同時 Google 也可以無償再次授權(quán)相關(guān)專利給 VP8 的用戶,此協(xié)議同時適用于下一代 VPx 編碼。至此 MPEG LA 放棄成立 VP8 專利集中授權(quán)聯(lián)盟,VP8 的用戶將可確定無償使用此編碼而無須擔(dān)心可能的專利侵權(quán)授權(quán)金的問題。


VP8 的開源實現(xiàn):libvpx


libvpx?是 VP8 的唯一開源實現(xiàn),由 On2 Technologies 開發(fā),Google 收購后將其開放源碼,License 非常寬松可以自由使用。


4) VP9 簡介


VP9 的開發(fā)從 2011 年第三季開始,目標(biāo)是在同畫質(zhì)下,比 VP8 編碼減少 50% 的文件大小,另一個目標(biāo)則是要在編碼效率上超越 HEVC 編碼。


2012 年 12 月 13 日,Chromium 瀏覽器加入了 VP9 編碼的支持。Chrome 瀏覽器則是在 2013 年 2 月 21 日開始支持 VP9 編碼的視頻播放。


Google 宣布會在 2013 年 6 月 17 日完成 VP9 編碼的制定工作,屆時 Chrome 瀏覽器將會把 VP9 編碼默認(rèn)引導(dǎo)。2014 年 3 月 18 日,Mozilla 在 Firefox 瀏覽器中加入了 VP9 的支持。


2015 年 4 月 3 日,谷歌發(fā)布了libvpx1.4.0 增加了對 10 位和 12 位的比特深度支持、4:2:2 和 4:4:4 色度抽樣,并 VP9 多核心編/解碼。


專利許可


VP9 是一個開放格式、無權(quán)利金的視頻編碼格式。


VP9 的開源實現(xiàn):ibvpx


libvpx?是 VP9 的唯一開源實現(xiàn),由 Google 開發(fā)維護,里面有部分代碼是 VP8 和 VP9 公用的,其余分別是 VP8 和 VP9 的編解碼實現(xiàn)。


VP9 和 H.264 和 HEVC 比較



HEVC 和 H.264 在不同分辨率下的比較


跟 H.264/MPEG-4 相比,HEVC 的平均比特率減低值為:



可見碼率下降了 60% 以上。

HEVC (H.265) 對 VP9 和 H.264 在碼率節(jié)省上有較大的優(yōu)勢,在相同 PSNR 下分別節(jié)省了 48.3% 和 75.8%。

H.264 在編碼時間上有巨大優(yōu)勢,對比 VP9 和 HEVC(H.265) ,HEVC 是 VP9 的 6 倍,VP9 是 H.264 的將近 40 倍

5) FFmpeg


談到視頻編碼相關(guān)內(nèi)容就不得不提一個偉大的軟件包 - FFmpeg。


FFmpeg 是一個自由軟件,可以運行音頻和視頻多種格式的錄影、轉(zhuǎn)換、流功能,包含了 libavcodec -這是一個用于多個項目中音頻和視頻的解碼器庫,以及 libavformat -一個音頻與視頻格式轉(zhuǎn)換庫。


FFmpeg 這個單詞中的 FF 指的是 Fast Forward。有些新手寫信給?FFmpeg?的項目負(fù)責(zé)人,詢問 FF 是不是代表 Fast Free 或者 Fast Fourier 等意思,F(xiàn)Fmpeg??的項目負(fù)責(zé)人回信說:「Just for the record, the original meaning of FF in FFmpeg is Fast Forward.」


這個項目最初是由 Fabrice Bellard 發(fā)起的,而現(xiàn)在是由 Michael Niedermayer 在進行維護。許多 FFmpeg 的開發(fā)者同時也是 MPlayer 項目的成員,F(xiàn)Fmpeg 在 MPlayer 項目中是被設(shè)計為服務(wù)器版本進行開發(fā)。


FFmpeg 下載地址是 :?https://ffmpeg.org/download.html

可以瀏覽器輸入下載,目前支持 Linux ,Mac OS,Windows 三個主流的平臺,也可以自己編譯到 Android 或者 iOS 平臺。

如果是 Mac OS ,可以通過 brew 安裝

?brew install ffmpeg --with-libvpx --with-libvorbis --with-ffplay

我們可以用 FFmpeg 來做哪些有用有好玩的事情呢?通過一系列小實驗來帶大家領(lǐng)略 FFmpeg 的神奇和強大。


FFmpeg 錄屏


通過一個小例子看一下怎么在 Mac OS 下面使用 FFmpeg 進行錄屏:


輸入:

ffmpeg?-f?avfoundation?-list_devices?true?-i?""

輸出:

[AVFoundation?input?device?@?0x7fbec0c10940]?AVFoundation?video?devices:
[AVFoundation?input?device?@?0x7fbec0c10940]?[0]?FaceTime?HD?Camera
[AVFoundation?input?device?@?0x7fbec0c10940]?[1]?Capture?screen?0
[AVFoundation?input?device?@?0x7fbec0c10940]?[2]?Capture?screen?1
[AVFoundation?input?device?@?0x7fbec0c10940]?AVFoundation?audio?devices:
[AVFoundation?input?device?@?0x7fbec0c10940]?[0]?Built-in?Microphone

給出了當(dāng)前設(shè)備支持的所有輸入設(shè)備的列表和編號,我本地有兩塊顯示器,所以 1 和 2 都是我屏幕,可以選擇一塊進行錄屏。

查看當(dāng)前的 H.264 編解碼器:

輸入:

ffmpeg?-codecs?|?grep?264

輸出:

?DEV.LS?h264?????????????????H.264?/?AVC?/?MPEG-4?AVC?/?MPEG-4?part?10?(decoders:?h264?h264_vda?)?(encoders:?libx264?libx264rgb?)

查看當(dāng)前的 VP8 編解碼器:

輸入:

ffmpeg?-codecs?|?grep?vp8

輸出:

??DEV.L.?vp8??????????????????On2?VP8?(decoders:?vp8?libvpx?)?(encoders:?libvpx?)

可以選擇用 VP8 或者 H264 做編碼器

ffmpeg?-r?30?-f?avfoundation?-i?1?-vcodec?vp8?-quality?realtime?screen2.webm
#?-quality?realtime?用來優(yōu)化編碼器,如果不加在我的?Air?上幀率只能達到?2

or

ffmpeg?-r?30?-f?avfoundation?-i?1?-vcodec?h264?screen.mp4

然后用 ffplay 播放就可以了

ffplay?screen.mp4

or

ffplay?screen2.webp


FFmpeg 視頻轉(zhuǎn)換成 gif


有一個特別有用的需求,在網(wǎng)上發(fā)現(xiàn)了一個特別有趣的視頻想把它轉(zhuǎn)換成一個動態(tài)表情,作為一個 IT 從業(yè)者,我第一個想到的不是下載一個轉(zhuǎn)碼器,也不是去找一個在線轉(zhuǎn)換網(wǎng)站,直接利用手邊的工具 FFmpeg,瞬間就完成了轉(zhuǎn)碼:

ffmpeg?-ss?10?-t?10??-i?tutu.mp4??-s?80x60??tutu.gif
##?-ss?指從?10s?開始轉(zhuǎn)碼,-t?指轉(zhuǎn)換?10s?的視頻?-s


FFmpeg 錄制屏幕并直播


可以繼續(xù)擴展例子1,直播當(dāng)前屏幕的內(nèi)容,向大家介紹一下怎么通過幾行命令搭建一個測試用的直播服務(wù):

Step 1:首先安裝 docker: 訪問?https://www.docker.com/products/docker?,按操作系統(tǒng)下載安裝。

<p style="clear:both;min-height:1em;color:rgb(62,62,62);font-family:'Helvetica Neue', Helvetica, 'Hiragino Sans GB', 'Microsoft YaHei', Arial, s

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉