iOS設備音視頻編碼(一)

一姿现、為什么要進行視頻編碼

未經(jīng)壓縮的視頻的數(shù)據(jù)量巨大诬滩,錄制一分鐘視頻, 需要多大的空間來保存了?

1> 為了不讓用戶感受到卡頓效果, 1秒鐘之內(nèi)至少需要16幀畫面(正常開發(fā)通常會采集30幀)鹃栽,也就是編碼設置的fps參數(shù)

2> 假如該視頻是一個1280*720分辨率的視頻(正常情況下會比這個大很多)

結(jié)果:128072016*60≈843.75M

一分鐘的視頻843M,如果保證播放不卡頓秆剪,則需要15M/S 的下載速度秆麸,如果使用蜂窩網(wǎng)絡...

結(jié)論:1.如此大的傳輸數(shù)據(jù)量瘫寝,現(xiàn)行帶寬壓力巨大蜒蕾,流量資費大,且存儲數(shù)據(jù)量也極大焕阿,所以導致編碼技術的產(chǎn)生

?????????? 2.視頻采集完成后咪啡,需要先編碼,再傳輸捣鲸,在解碼瑟匆,再播放(重現(xiàn))


二、為什么視頻可以壓縮編碼栽惶?

采集到的視頻源存在冗余信息愁溜,冗余信息分為以下三類:

1.空間冗余:圖像相鄰像素之間有較強的相關性

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

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

4.其他冗余

空間冗余

空間冗余是指在同一張圖像中,有很多像素點表示的信息是完全一樣的外厂,如果對每一個像素進行單獨的存儲冕象,必然會非常浪費空間,也完全沒有必要汁蝶,此處部分存儲的顏色色值相同渐扮,僅僅對應空間位置不同。


時間冗余

時間冗余是指多張圖像之間掖棉,有非常多的相關性墓律,由于一些小運動造成了細小差別。

我們可以看到兩張圖片相隔很近幔亥,彼此之間很多元素相同耻讽,如果對相同部分多次存儲,則形成了冗余

如圖:


視覺冗余

1.人類視覺系統(tǒng)HVS

2.對高頻信息不敏感

3.對高對比度更敏感

4.對亮度信息比色度信息更敏感

5.對運動的信息更敏感

數(shù)字視頻系統(tǒng)的設計應該考慮HVS的特點:

1.丟棄高頻信息帕棉,只編碼低頻信息

2.提高邊緣信息的主觀質(zhì)量

3.降低色度的解析度

對感興趣區(qū)域(Region of Interesting针肥,ROI)進行特殊處理

如圖:


經(jīng)過一系列的去處冗余信息饼记,可以大大的降低視頻的數(shù)據(jù)量,更利于視頻的保存慰枕、傳輸具则,去除冗余信息的過程,我們就稱之為壓縮編碼

三具帮、壓縮編碼的標準

1.? 標準化組織:

ITU:International Telecommunications Union

VECG:Video Coding Experts Group(國際電傳視訊聯(lián)盟)

ISO:International Standards Organization

MPEG:Motion Picture Experts Group(國際標準組織機構(gòu))

2.?? H.26X系列(由ITU[國際電傳視訊聯(lián)盟]主導)

H.261:主要在老的視頻會議和視頻電話產(chǎn)品中使用

H.263:主要用在視頻會議博肋、視頻電話和網(wǎng)絡視頻上

H.264:H.264/MPEG-4第十部分,或稱AVC(Advanced Video Coding匕坯,高級視頻編碼)束昵,是一種視頻壓縮標準拔稳,一種被廣泛使用的高精度視頻的錄制葛峻、壓縮和發(fā)布格式。

H.265:高效率視頻編碼(High Efficiency Video

Coding巴比,簡稱HEVC)是一種視頻壓縮標準术奖,H.264/MPEG-4

AVC的繼任者∏峤剩可支持4K分辨率甚至到超高畫質(zhì)電視采记,最高分辨率可達到8192×4320(8K分辨率),這是目前發(fā)展的趨勢政勃,尚未有大眾化編碼軟件出現(xiàn)

3.MPEG系列(由ISO[國際標準組織機構(gòu)]下屬的MPEG[運動圖象專家組]開發(fā))

MPEG-1第二部分:MPEG-1第二部分主要使用在VCD上唧龄,有些在線視頻也使用這種格式

MPEG-2第二部分(MPEG-2第二部分等同于H.262,使用在DVD奸远、SVCD和大多數(shù)數(shù)字視頻廣播系統(tǒng)中

MPEG-4第二部分(MPEG-4第二部分標準可以使用在網(wǎng)絡傳輸既棺、廣播和媒體存儲上)。

其他系列:

AMV · AVS · Bink · RealVideo · Theora · VC-1 · VP3 · VP6 · VP7 · VP8 · VP9 · WMV


四懒叛、目前應用最廣泛的H.264(AVC)

H264是新一代的編碼標準丸冕,以高壓縮高質(zhì)量和支持多種網(wǎng)絡的流媒體傳輸著稱

個人理解:

在相鄰幾幅圖像畫面中,一般有差別的像素只有10%以內(nèi)的點,亮度差值變化不超過2%薛窥,而色度差值的變化只有1%以內(nèi)胖烛,所以對于一段變化不大圖像畫面,我們可以先編碼出一個完整的圖像幀A诅迷,隨后的B幀就不編碼全部圖像佩番,只寫入與A幀的差別,這樣B幀的大小就只有完整幀的1/10或更邪丈肌趟畏!B幀之后的C幀如果變化不大,我們可以繼續(xù)以參考B的方式編碼C幀屑那,這樣循環(huán)下去拱镐。這段圖像我們稱為一個序列:序列就是有相同特點的一段數(shù)據(jù)艘款,當某個圖像與之前的圖像變化很大,無法參考前面的幀來生成沃琅,那我們就結(jié)束上一個序列哗咆,開始下一段序列,也就是對這個圖像生成一個完整幀A1益眉,隨后的圖像就參考A1生成晌柬,只寫入與A1的差別內(nèi)容。

在H264協(xié)議里定義了三種幀

I幀:完整編碼的幀叫I幀

P幀:參考之前的I幀生成的只包含差異部分編碼的幀叫P幀

B幀:參考前后的幀編碼的幀叫B幀

H264采用的核心算法是幀內(nèi)壓縮和幀間壓縮

幀內(nèi)壓縮是生成I幀的算法

幀間壓縮是生成B幀和P幀的算法

H264的壓縮方法:

分組:把幾幀圖像分為一組(GOP郭脂,也就是一個序列),為防止運動變化,幀數(shù)不宜取多

定義幀:將每組內(nèi)各幀圖像定義為三種類型,即I幀年碘、B幀和P幀;

預測幀:以I幀做為基礎幀,以I幀預測P幀,再由I幀和P幀預測B幀;

數(shù)據(jù)傳輸:最后將I幀數(shù)據(jù)與預測的差值信息進行存儲和傳輸。

序列(GOP)

在H264中圖像以序列為單位進行組織展鸡,一個序列是一段圖像編碼后的數(shù)據(jù)流屿衅。

一個序列的第一個圖像叫做 IDR 圖像(立即刷新圖像),IDR 圖像都是 I 幀圖像莹弊。

H.264 引入 IDR 圖像是為了解碼的重同步涤久,當解碼器解碼到 IDR 圖像時,立即將參考幀隊列清空忍弛,將已解碼的數(shù)據(jù)全部輸出或拋棄响迂,重新查找參數(shù)集,開始一個新的序列细疚。

這樣蔗彤,如果前一個序列出現(xiàn)重大錯誤,在這里可以獲得重新同步的機會疯兼。

IDR圖像之后的圖像永遠不會使用IDR之前的圖像的數(shù)據(jù)來解碼然遏,這樣可以避免前一個IDR圖像錯誤而導致整個視頻無法播放。

一個序列就是一段內(nèi)容差異不太大的圖像編碼后生成的一串數(shù)據(jù)流

當運動變化比較少時镇防,一個序列可以很長啦鸣,因為運動變化少就代表圖像畫面的內(nèi)容變動很小,所以就可以編一個I幀来氧,然后一直P幀诫给、B幀了。

當運動變化多時啦扬,可能一個序列就比較短了中狂,比如就包含一個I幀和3、4個P幀扑毡。

在視頻編碼序列中胃榕,GOP即Group of picture(圖像組),指兩個I幀之間的距離

I幀瞄摊、P幀勋又、B幀的預測方向


ss

I幀苦掘、P幀、B幀實際順序&編碼后順序


五楔壤、H264分層設計

分層設計

H264算法在概念上分為兩層:

1.視頻編碼層(VCL:Video Coding Layer)負責高效的視頻內(nèi)容表示鹤啡,

2.網(wǎng)絡提取層(NAL:Network Abstraction Layer)負責以網(wǎng)絡所要求的恰當?shù)姆绞綄?shù)據(jù)進行打包和傳送

這樣,高效編碼和網(wǎng)絡友好性分別由VCL和NAL分別完成蹲嚣,而之前我們學習的編碼方式递瑰,都是屬于VCL層,VCL層可看做H264編碼算法中去除冗余數(shù)據(jù)的過程,更詳細的介紹請參考鏈接

NAL設計目的:

根據(jù)不同的網(wǎng)絡把數(shù)據(jù)打包成相應的格式隙畜,將VCL產(chǎn)生的比特字符串適配到各種各樣的網(wǎng)絡和多元環(huán)境中抖部。

NAL的封裝方式:

NAL是將每一幀數(shù)據(jù)寫入到一個NAL單元中,進行傳輸或存儲的

NALU分為NAL頭和NAL體

NALU頭通常為00 00 00 01议惰,作為一個新的NALU的起始標識

NALU體封裝著VCL編碼后的信息或者其他信息

封裝過程:

I幀慎颗、P幀、B幀都是被封裝成一個或者多個NALU進行傳輸或者存儲的

I幀開始之前也有非VCL的NAL單元换淆,用于保存其他信息哗总,比如:PPS几颜、SPS

PPS(Picture Parameter Sets):圖像參數(shù)集

SPS(Sequence Parameter Set):序列參數(shù)集

在實際的H264數(shù)據(jù)幀中倍试,往往幀前面帶有00 00 00 01 或 00 00 01分隔符,一般來說編碼器編出的首幀數(shù)據(jù)為PPS與SPS蛋哭,接著為I幀县习,后續(xù)是B幀、P幀等數(shù)據(jù)



六谆趾、編碼方式

編碼的方式有兩種:

硬編碼:使用非CPU進行編碼躁愿,如顯卡GPU、專用的DSP沪蓬、FPGA彤钟、ASIC芯片等

軟編碼:使用CPU進行編碼,軟編碼通常使用:ffmpeg+x264

ffmpeg:是一套開源的跷叉、用于對音視頻進行編碼&解碼&轉(zhuǎn)化計算機程序

x264:x264是一種免費的逸雹、開源的、具有更優(yōu)秀算法的H.264/MPEG-4 AVC視頻壓縮編碼方式

對比:

軟編碼:實現(xiàn)直接云挟、簡單梆砸,參數(shù)調(diào)整方便,升級易园欣,但CPU負載重帖世,性能較硬編碼低

硬編碼:性能高,對CPU沒有壓力沸枯,但是對其他硬件要求較高(如GPU等)

iOS中編碼方式:

在iOS8之前日矫,蘋果并沒有開放硬編碼的接口赂弓,所以只能采用ffpeng+x624進行軟編碼

在iOS8之后,蘋果開放了接口哪轿,并且封裝了VideoToolBox&AudioToolbox兩個框架拣展,分別用于對視頻&音頻進行硬編碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缔逛,隨后出現(xiàn)的幾起案子备埃,更是在濱河造成了極大的恐慌,老刑警劉巖褐奴,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件按脚,死亡現(xiàn)場離奇詭異,居然都是意外死亡敦冬,警方通過查閱死者的電腦和手機辅搬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脖旱,“玉大人堪遂,你說我怎么就攤上這事∶惹欤” “怎么了溶褪?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長践险。 經(jīng)常有香客問我猿妈,道長,這世上最難降的妖魔是什么巍虫? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任彭则,我火速辦了婚禮,結(jié)果婚禮上占遥,老公的妹妹穿的比我還像新娘俯抖。我一直安慰自己,他們只是感情好瓦胎,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布芬萍。 她就那樣靜靜地躺著,像睡著了一般凛捏。 火紅的嫁衣襯著肌膚如雪担忧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天坯癣,我揣著相機與錄音瓶盛,去河邊找鬼。 笑死,一個胖子當著我的面吹牛惩猫,可吹牛的內(nèi)容都是我干的芝硬。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼轧房,長吁一口氣:“原來是場噩夢啊……” “哼拌阴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奶镶,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤迟赃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后厂镇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纤壁,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年捺信,在試婚紗的時候發(fā)現(xiàn)自己被綠了酌媒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡迄靠,死狀恐怖秒咨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掌挚,我是刑警寧澤雨席,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站疫诽,受9級特大地震影響舅世,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奇徒,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缨硝。 院中可真熱鬧摩钙,春花似錦、人聲如沸查辩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宜岛。三九已至长踊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萍倡,已是汗流浹背身弊。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阱佛。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓帖汞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親凑术。 傳聞我的和親對象是個殘疾皇子翩蘸,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 為什么進行壓縮編碼? 視頻是由一幀幀的圖像組成(見實例)比如一張Gif圖片其實就可以被分解成若干張單獨的圖片1.g...
    Tate_code閱讀 971評論 0 3
  • 視頻編碼介紹 為什么進行壓縮編碼? 視頻是由一幀幀的圖像組成(見實例)比如一張Gif圖片其實就可以被分解成若干張單...
    coderwhy閱讀 2,293評論 3 15
  • 在目前,無論在各個行只要和視頻相關的淮逊,我們都可以看見H264相關的身影催首,H264作為目前使用最廣泛的視頻壓縮標準,...
    DramaScript閱讀 21,550評論 7 56
  • 視頻壓縮編碼的目標1)保證壓縮比例2)保證恢復的質(zhì)量3)易實現(xiàn)泄鹏,低成本翅帜,可靠性 壓縮的出發(fā)點(可行性)1)時間相關...
    rogerwu1228閱讀 4,130評論 0 11
  • 老實講,這本小說并沒有引起我很大的共鳴命满,即使有涝滴,也是斷斷續(xù)續(xù)的幾個句子,剝離了小說的環(huán)境才讓我有那么一點點的感觸胶台。...
    Anastasia_流云閱讀 283評論 0 1