iOS 音視頻編解碼----H264-I(關鍵)幀捺檬,B/P(參考)幀(二)

  • 先回顧一下視頻里面到底是什么

視頻
  • 內容元素

    1.圖像(image)
    2.音頻(Audio)
    3.元素信息(Meta-data)

  • 編碼格式

    1.Video:H264
    2.Audio:AAC(后面文章講)
    3.容器封裝:MP4/MOV/FLV/RM/RMVB/AVI

  • H264

    當我們需要對發(fā)送的視頻文件進行編碼時,只要是H264文件状知,AVFoundation都提供視頻編解碼器支持秽五,這個標準被廣泛應用于消費者視頻攝像頭捕捉到的資源并成為網(wǎng)頁流媒體視頻最主要的格式。H264規(guī)范是MPEG4定義的一部分饥悴,H264遵循早期的MPEG-1/MPEG-2標準坦喘,但是在以更低比特率得到 更高圖片質量方面有了進步。

  • 編碼的本質


    編碼的本質示意圖
  • 為什么要編碼西设?

舉個例子: (具體大小我沒數(shù)過瓣铣,只做講解參考)
你的老公,Helen贷揽,將于明天晚上6點零5份在重慶的江北機場接你
----------------------23 * 2 + 10 = 56個字符--------------------------
你的老公將于明天晚上6點零5分在江北機場接你
----------------------20 * 2 + 2 = 42個字符----------------------------
Helen將于明天晚上6點在機場接你
----------------------10 * 2 + 2 = 26個字符----------------------------

相信大家看了這個例子之后棠笑,心里應該大概明白編碼的本質:只要不接收方不會產(chǎn)生誤解,就可以產(chǎn)生數(shù)據(jù)的承載量禽绪,編碼視頻的本質也是如此蓖救,編碼的本質就是減少數(shù)據(jù)的冗余

  • 在引入I(關鍵)幀洪规,B/P(參考)幀之前,我們先來了解一下人眼和視頻攝像頭的對幀的識別

    我們人眼看實物的時候循捺,一般的一秒鐘只要是連續(xù)的16幀以上斩例,我們就會認為事物是動的,對于攝像頭來說从橘,一秒鐘所采集的圖片遠遠高于了16幀念赶,可以達到幾十幀,對于一些高質量的攝像頭洋满,一秒鐘可以達到60幀晶乔,對于一般的事物來說珍坊,你一秒鐘能改變多少個做動作牺勾?所以,當攝像頭在一秒鐘內采集視頻的時候阵漏,前后兩幀的圖片數(shù)據(jù)里有大量的相同數(shù)據(jù)驻民,對于這些數(shù)據(jù)我們該怎么處理了?當然前后兩幀也有不同的數(shù)據(jù)履怯,對于這些相同或者不同的數(shù)據(jù)的處理過程回还,就是編碼


  • I幀(I-frames,也叫關鍵幀)

    • 我們知道在視頻的傳輸過程中叹洲,它是分片段傳輸?shù)哪叮@個片段的第一幀,也就是第一張圖片运提,就是I幀蝗柔,也就是傳說中的關鍵幀
    • I幀:也就是關鍵幀,幀內壓縮(也就是壓縮獨立視頻幀民泵,被稱為幀內壓縮)癣丧,幀內壓縮通過消除包含在每個獨立視頻幀內的色彩以及結構中的冗余信息來進行壓縮,因此可在不降低圖片適量的情況下盡可能的縮小尺寸栈妆,這類似于JEPG壓縮的原理胁编,幀內壓縮也可以稱為有損壓縮算法,但通常用于對原因圖片的一部分進行處理鳞尔,以生成極高質量的照片嬉橙,通過這一過程的創(chuàng)建的幀稱為I-frames;將第一幀完整的保存下來.如果沒有這個關鍵幀后面解碼數(shù)據(jù),是完成不了的.所以I幀特別關鍵.
  • P幀(P-frames寥假,又稱為預測幀)

    • P幀:向前參考幀(在I幀(關鍵幀)后市框,P幀參考關鍵幀,保存下一幀和前一幀的不同數(shù)據(jù)).壓縮時只參考前一個幀.屬于幀間壓縮技術.
    • 幀間壓縮技術:很多幀被組合在一起作為一組圖片(簡稱GOP)昧旨,對于GOP所存在的時間維度的冗余可以被消除拾给,如果想象視頻文件中的典型場景祥得,就會有一些特定的運動元素的概念,比如行駛中的汽車或者街道上行走的路人蒋得,場景的背景環(huán)信通道是固定的级及,或者在一定的時間內,有些元素的改變很小或者不變额衙,這些數(shù)據(jù)就稱為時間上的冗余饮焦,這些數(shù)據(jù)就可以通過幀間壓縮的方式進行消除,也就是幀間壓縮窍侧,視頻的第一幀會被作為關鍵幀完整保存下來.而后面的幀會向前依賴.也就是第二幀依賴于第一個幀.后面所有的幀只存儲于前一幀的差異.這樣就能將數(shù)據(jù)大大的減少.從而達到一個高壓縮率的效果.這就是P幀县踢,保存前后兩幀不通的數(shù)據(jù)
  • B幀(B-frames,又稱為雙向幀)

    • B幀伟件,又叫雙向幀硼啤,它是基于使用前后兩幀進行編碼后得到的幀,幾乎不需要存儲空間斧账,但是解壓過程會消耗較長的時間谴返,因為它依賴周圍其他的幀
    • B幀的特點:B幀使得視頻的壓縮率更高.存儲的數(shù)據(jù)量更小.如果B幀的數(shù)量越多,你的壓縮率就越高.這是B幀的優(yōu)點,但是B幀最大的缺點是,如果是實時互動的直播,那時與B幀就要參考后面的幀才能解碼,那在網(wǎng)絡中就要等待后面的幀傳輸過來.這就與網(wǎng)絡有關了.如果網(wǎng)絡狀態(tài)很好的話,解碼會比較快,如果網(wǎng)絡不好時解碼會稍微慢一些.丟包時還需要重傳.對實時互動的直播,一般不會使用B幀.如果在泛娛樂的直播中,可以接受一定度的延時,需要比較高的壓縮比就可以使用B幀.如果我們在實時互動的直播,我們需要提高時效性,這時就不能使用B幀了.
  • GOP一組幀的理解

    • 如果在一秒鐘內,有30幀.這30幀可以畫成一組.如果攝像機或者鏡頭它一分鐘之內它都沒有發(fā)生大的變化.那也可以把這一分鐘內所有的幀畫做一組.

    • 什么叫一組幀?
      就是一個I幀到下一個I幀.這一組的數(shù)據(jù).包括B幀/P幀.我們稱為GOP


      圖片來源于網(wǎng)絡
  • 視頻花屏/卡頓原因

    • 我們平常在觀看視頻的時候,出現(xiàn)視頻的花屏或者卡頓咧织,第一反應就是我們的網(wǎng)絡出現(xiàn)了問題嗓袱,其實我們的網(wǎng)絡沒有問題,是我們在解碼的時候I幀习绢,B/P幀出現(xiàn)了丟失
    • 如果GOP分組中的P幀丟失就會造成解碼端的圖像發(fā)生錯誤.
    • 為了避免花屏問題的發(fā)生,一般如果發(fā)現(xiàn)P幀或者I幀丟失.就不顯示本GOP內的所有幀.只到下一個I幀來后重新刷新圖像.
    • 當這時因為沒有刷新屏幕.丟包的這一組幀全部扔掉了.圖像就會卡在哪里不動.這就是卡頓的原因.

所以總結起來,花屏是因為你丟了P幀或者I幀.導致解碼錯誤. 而卡頓是因為為了怕花屏,將整組錯誤的GOP數(shù)據(jù)扔掉了.直達下一組正確的GOP再重新刷屏.而這中間的時間差,就是我們所感受的卡頓.

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末渠抹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闪萄,更是在濱河造成了極大的恐慌梧却,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桃煎,死亡現(xiàn)場離奇詭異篮幢,居然都是意外死亡,警方通過查閱死者的電腦和手機为迈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門三椿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人葫辐,你說我怎么就攤上這事搜锰。” “怎么了耿战?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵蛋叼,是天一觀的道長。 經(jīng)常有香客問我,道長狈涮,這世上最難降的妖魔是什么狐胎? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮歌馍,結果婚禮上握巢,老公的妹妹穿的比我還像新娘。我一直安慰自己松却,他們只是感情好暴浦,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晓锻,像睡著了一般歌焦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上砚哆,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天独撇,我揣著相機與錄音,去河邊找鬼窟社。 笑死券勺,一個胖子當著我的面吹牛绪钥,可吹牛的內容都是我干的灿里。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼程腹,長吁一口氣:“原來是場噩夢啊……” “哼匣吊!你這毒婦竟也來了?” 一聲冷哼從身側響起寸潦,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤色鸳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后见转,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體命雀,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年斩箫,在試婚紗的時候發(fā)現(xiàn)自己被綠了吏砂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡乘客,死狀恐怖狐血,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情易核,我是刑警寧澤匈织,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響缀匕,放射性物質發(fā)生泄漏纳决。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一乡小、第九天 我趴在偏房一處隱蔽的房頂上張望岳链。 院中可真熱鬧,春花似錦劲件、人聲如沸掸哑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苗分。三九已至,卻和暖如春牵辣,著一層夾襖步出監(jiān)牢的瞬間摔癣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工纬向, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留择浊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓逾条,卻偏偏與公主長得像琢岩,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子师脂,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359