七牛云于 6 月底宣布了一個(gè)針對視頻直播的及時(shí)流網(wǎng)絡(luò) LiveNet 和完整的直播云辦理方案,許多開拓者對這個(gè)網(wǎng)絡(luò)息爭決方案的細(xì)節(jié)和利用場景很是感樂趣。
團(tuán)結(jié)七牛及時(shí)流網(wǎng)絡(luò) LiveNet 和直播云辦理方案的實(shí)踐,我們將用七篇文章,更系統(tǒng)化地先容當(dāng)下大熱的視頻直播各環(huán)節(jié)的要害技能,輔佐視頻直播創(chuàng)業(yè)者們更全面、深入地相識視頻直播技能,更好地技能選型。
本系列文章綱要如下:
(一)收羅
(二)處理懲罰
(三)編碼和封裝
(四)推流和傳輸
(五)現(xiàn)代播放器道理
(六)延遲優(yōu)化
(七)SDK 機(jī)能測試模子
在上一期的處理懲罰篇中,我們先容了講授常見視頻處理懲罰成果如美顏、視頻水印、濾鏡、連麥等。 本篇是《解密視頻直播技能》系列之三:編碼和封裝。視頻編碼是本系列一個(gè)重要的部門,假如把整個(gè)流媒體比喻成一個(gè)物流系統(tǒng),那么編解碼就是個(gè)中配貨和裝貨的進(jìn)程,這個(gè)進(jìn)程很是重要,它的速度和壓縮比對物流系統(tǒng)的意義很是大,影響物流系統(tǒng)的整體速度和本錢。同樣,對流媒體傳輸來說,編碼也很是重要,它的編碼機(jī)能、編碼速度和編碼壓縮比會(huì)直接影響整個(gè)流媒體傳輸?shù)挠脩趔w驗(yàn)和傳輸本錢。
--------------------------------------------
視頻編碼的意義
原始視頻數(shù)據(jù)存儲(chǔ)空間大,一個(gè) 1080P 的 7 s 視頻需要 817 MB
原始視頻數(shù)據(jù)傳輸占用帶廣大,10 Mbps 的帶寬傳輸上述 7 s 視頻需要 11 分鐘
而顛末 H.264 編碼壓縮之后,視頻巨細(xì)只有 708 k ,10 Mbps 的帶寬僅僅需要 500 ms ,可以滿意及時(shí)傳輸?shù)男枨螅詮囊曨l收羅傳感器收羅來的原始視頻勢須要顛末視頻編碼。
根基道理
那為什么龐大的原始視頻可以編碼成很小的視頻呢?這個(gè)中的技能是什么呢?焦點(diǎn)思想就是去除冗余信息:
空間冗余:圖像相鄰像素之間有較強(qiáng)的相關(guān)性
時(shí)間冗余:視頻序列的相鄰圖像之間內(nèi)容相似
編碼冗余:差異像素值呈現(xiàn)的概率差異
視覺冗余:人的視覺系統(tǒng)對某些細(xì)節(jié)不敏感
常識冗余:紀(jì)律性的布局可由先驗(yàn)常識和配景常識獲得
視頻本質(zhì)上講是一系列圖片持續(xù)快速的播放,最簡樸的壓縮方法就是對每一幀圖片舉辦壓縮,譬喻較量陳腐的 MJPEG 編碼就是這種編碼方法,這種編碼方法只有幀內(nèi)編碼,操作空間上的取樣預(yù)測來編碼。形象的比喻就是把每幀都作為一張圖片,回收 JPEG 的編碼名目對圖片舉辦壓縮,這種編碼只思量了一張圖片內(nèi)的冗余信息壓縮,如圖 1,綠色的部門就是當(dāng)前待編碼的區(qū)域,灰色就是尚未編碼的區(qū)域,綠色區(qū)域可以按照已經(jīng)編碼的部門舉辦預(yù)測(綠色的左邊,下邊,左下等)。
圖 1
可是幀和幀之間因?yàn)闀r(shí)間的相關(guān)性,后續(xù)開拓出了一些較量高級的編碼器可以回收幀間編碼,簡樸點(diǎn)說就是通過搜索算法選定了幀上的某些區(qū)域,然后通過計(jì)較當(dāng)前幀和前后參考幀的向量差舉辦編碼的一種形式,通過下面兩個(gè)圖 2 持續(xù)幀我們可以看到,滑雪的同學(xué)是向前位移的,但實(shí)際上是雪景在向后位移,P 幀通過參考幀(I 或其他 P 幀)就可以舉辦編碼了,編碼之后的巨細(xì)很是小,壓縮比很是高。
圖 2
大概有同學(xué)對這兩張圖片怎么來的感樂趣,這里用了 FFmpeg 的兩行呼吁來實(shí)現(xiàn),詳細(xì) FFmpeg 的更多內(nèi)容請看后續(xù)章節(jié):
第一行生成帶有移動(dòng)矢量的視頻
第二行把每一幀都輸出成圖片
除了空間冗余和時(shí)間冗余的壓縮,主要尚有編碼壓縮和視覺壓縮,下面是一個(gè)編碼器主要的流程圖:
圖 3
圖 4
圖 3、圖 4 兩個(gè)流程,圖 3 是幀內(nèi)編碼,圖 4 是幀間編碼,從圖上看到的主要區(qū)別就是第一步不溝通,其實(shí)這兩個(gè)流程也是團(tuán)結(jié)在一起的,我們凡是說的 I 幀和 P 幀就是別離回收了幀內(nèi)編碼和幀間編碼。
編碼器的選擇
前面梳理了一下編碼器的道理和根基流程,編碼器經(jīng)驗(yàn)了數(shù)十年的成長,已經(jīng)從開始的只支持幀內(nèi)編碼演進(jìn)到現(xiàn)如今的 H.265 和 VP9 為代表的新一代編碼器,就今朝一些常見的編碼器舉辦闡明,帶各人摸索一下編碼器的世界。
1) H.264 簡介