直播知識點

一、封裝格式

1椭员、因為來源的不同,視頻會有不同的格式津辩,分別用不同的后綴表示拆撼,avi/rmvb/mp4等,這些格式代表的就是封裝格式

2喘沿、封裝格式就是把已經(jīng)壓縮編碼視頻數(shù)據(jù)和音頻數(shù)據(jù)按照一定的格式放到一起闸度,不同的封裝格式之間差距不大,各有優(yōu)劣

3蚜印、封裝格式支持音視頻編碼標(biāo)準(zhǔn)莺禁,有些封裝格式支持的音視頻編碼標(biāo)準(zhǔn)十分廣泛,比如MKV窄赋,而有些封裝格式支持的視音頻編碼標(biāo)準(zhǔn)很少哟冬,屬于落后的封裝格式,比如RMVB忆绰,所以單從封裝格式無法看出某視頻具體使用了什么音視頻編碼標(biāo)準(zhǔn)

二浩峡、視頻播放器播放一個互聯(lián)網(wǎng)上的視頻文件,需要經(jīng)過以下幾個步驟

1错敢、解協(xié)議

   1)就是將流媒體協(xié)議的數(shù)據(jù)翰灾,解析為標(biāo)準(zhǔn)的相應(yīng)的封裝格式的數(shù)據(jù)

   2)音視頻在網(wǎng)絡(luò)上傳播的時候,常常采用各種流媒體協(xié)議,例如HTTP/RTMP/MMS等等,這些協(xié)議在傳輸數(shù)據(jù)的同時纸淮,也會傳輸一些信令數(shù)據(jù)平斩,這些信令數(shù)據(jù)包括對播放的控制(播放,暫停咽块,停止)绘面,或者對網(wǎng)絡(luò)狀態(tài)的描述等

   3)解協(xié)議的過程中會去掉信令數(shù)據(jù)而只保留音頻數(shù)據(jù),例如侈沪,采用RTMP協(xié)議傳輸?shù)臄?shù)據(jù)揭璃,經(jīng)過解協(xié)議操作后,輸出FLV格式的數(shù)據(jù)

2峭竣、解封裝的作用

   將輸入的封裝格式的數(shù)據(jù)塘辅,分離成為音頻流壓縮編碼數(shù)據(jù)和視頻流壓縮編碼數(shù)據(jù)晃虫,例如皆撩,F(xiàn)LV格式的數(shù)據(jù),經(jīng)過解封裝操作后哲银,輸出H.264編碼的視頻碼流和AAC編碼的音頻碼流

3扛吞、解碼

    解碼是整個系統(tǒng)中最重要也是最復(fù)雜的一個環(huán)節(jié),通過解碼荆责,

       壓縮編碼的視頻數(shù)據(jù)輸出成非壓縮的顏色數(shù)據(jù)滥比,例如YUV420P,RGB等等做院,

       壓縮編碼的音頻數(shù)據(jù)輸出稱為非壓縮的音頻抽樣數(shù)據(jù)盲泛,例如PCM數(shù)據(jù)

4、音視頻同步

     根據(jù)解封裝模塊處理過程中獲取到的參數(shù)信息键耕,同步解碼出來的視頻和音頻數(shù)據(jù)寺滚,并將音頻視頻數(shù)據(jù)送至系統(tǒng)的顯卡和聲卡播放出來

2.直播相關(guān)知識

一、在客戶端上要完成直播視頻的采集及RTMP上推屈雄,主要需要以下幾個步驟:

1村视、音視頻的采集

在音頻的采集上,直接使用AVFoundation.framework的AVCaptureSession即可獲得原始的CMSampleBufferRef格式的音視頻數(shù)據(jù)

2酒奶、對視頻進行H264編碼蚁孔,對音頻進行AAC編碼

  使用FFmpeg進行編碼

3、對編碼后的音視頻進行FLV封包

4惋嚎、建立RTMP連接并上推到服務(wù)端

二杠氢、在傳輸直播流媒體過程中的內(nèi)容緩存與傳輸策略優(yōu)化細(xì)節(jié)原理

1、基礎(chǔ)知識:I幀另伍、P幀鼻百、B幀

  1)I幀表示關(guān)鍵幀

     包含完整畫面,解碼時只需要本幀數(shù)據(jù)就可以完成

  2)P幀表示這一幀跟之前的一個關(guān)鍵幀的差別

     解碼時需要用之前緩存的畫面疊加上本幀定義的差別,生成最終畫面愕宋,因此也叫作差別幀

  3)B幀是雙向差別幀

     B幀記錄的是本幀與前后幀的差別玻靡,換言之,要解碼B幀中贝,不僅要取得之前的緩存畫面囤捻,還要解碼之后的畫面,通過前后畫面與本幀數(shù)據(jù)的疊加取得最終的畫面

     B幀壓縮率高邻寿,但是編解碼時會比較耗費CPU,而且在直播中可能會增加直播延時蝎土,因此在移動端上一般不適用B幀

2、關(guān)鍵幀緩存策略

  1)一個典型的視頻幀序列為IBBPBBPBBP....

  2) 對于直播而言绣否,為了減少直播的延時誊涯,通常在編碼時不使用B幀,P幀B幀對于I幀都有直接或者間接的依賴關(guān)系蒜撮,所以播放器要解碼一個視頻幀序列暴构,必須首先解碼出I幀,其后續(xù)的B幀和P幀才能進行解碼

  3)服務(wù)端如何進行關(guān)鍵幀的緩存段磨,對直播的延時有非常大的影響取逾,比較好的策略是服務(wù)器端自動判斷關(guān)鍵幀的間隔,按業(yè)務(wù)需求緩存幀序列苹支,保證在緩存中存儲至少兩個或以上的關(guān)鍵幀砾隅,以應(yīng)對低延時、放卡頓债蜜、只能丟包等問題

3晴埂、延遲與卡頓的折中

   1、直播的延時與卡頓是分析直播業(yè)務(wù)質(zhì)量的兩個重要指標(biāo)寻定,互動直播的場景對延遲非常敏感儒洛,新聞類體育類直播則更加關(guān)注播放的流暢度

   2、延時與卡頓從理論上來說特姐,是一對矛盾的關(guān)系

     - 需要更低的延時晶丘,則表明服務(wù)器端和播放段的緩存區(qū)都必須更短,來自網(wǎng)絡(luò)的異常抖動容易引起卡頓

     - 需要更流暢的直播體驗唐含,則表明服務(wù)端和播放段都可以有較長的緩沖區(qū)浅浮,以應(yīng)對網(wǎng)絡(luò)的抖動,提供更流暢的直播體驗

   3捷枯、對于網(wǎng)絡(luò)條件非常好的用戶滚秩,這兩項是可以同時保證的,這里主要針對網(wǎng)絡(luò)條件不是那么好的用戶淮捆,如何解決延時與卡頓的問題

   4郁油、兩種技術(shù)來平衡和優(yōu)化這兩個指標(biāo)

     1)服務(wù)端提供靈活的配置策略本股,服務(wù)端對所有連接的網(wǎng)絡(luò)情況進行智能檢測,

         當(dāng)網(wǎng)絡(luò)狀況良好時桐腌,在服務(wù)端保證關(guān)鍵幀的情況下拄显,服務(wù)端會縮小該鏈接的緩沖隊列的大小,降低延遲

         當(dāng)網(wǎng)絡(luò)環(huán)境差時案站,特別是檢測到抖動較為明顯時躬审,服務(wù)端對該鏈接增加緩沖隊列長度,優(yōu)先保證播放的流暢性

     2)丟包策略

        對于一個網(wǎng)絡(luò)鏈接很好蟆盐,延時也比較小的連接承边,丟包策略永遠(yuǎn)沒有用武之地.

        一般的丟幀策略,就是直接丟棄一個完整的視頻幀序列石挂,這種策略看似簡單博助,但對用戶播放的影響體驗非常大。而應(yīng)該是后臺采用逐步丟幀的策略痹愚,每個視頻幀序列富岳,丟最后的一到兩幀,使得用戶的感知最小里伯,平滑的逐步縮小延時的效果城瞎。

3.RTAM協(xié)議

一渤闷、基本概念

1疾瓮、了解RTMP協(xié)議之前,首先需要了解一下TCP/IP協(xié)議飒箭,尤其了解一下應(yīng)用層的信息

 http://www.reibang.com/p/38c86ea9db46

2狼电、RTMP協(xié)議是Adobe公司為Flash播放器和服務(wù)器之間音、視頻及數(shù)據(jù)傳輸開發(fā)的實時消息傳送協(xié)議弦蹂。協(xié)議中肩碟,視頻必須是H264編碼,音頻必須是AAC或MP3編碼凸椿,且多以flv格式封包削祈。

4、RTMP傳輸數(shù)據(jù)原理

 1)發(fā)送端首先把媒體數(shù)據(jù)封裝成消息脑漫,然后把消息分割成消息塊髓抑,最后將分割后的消息塊,通過TCP協(xié)議發(fā)送出去

 2)接收端在通過TCP協(xié)議收到數(shù)據(jù)后优幸,首先把消息塊重新組合成消息吨拍,然后通過將消息解封裝就可以恢復(fù)出媒體數(shù)據(jù)

二、RTMP協(xié)議中的相關(guān)概念

RTMP協(xié)議是TCP/IP五層體系結(jié)構(gòu)中應(yīng)用層的協(xié)議网杆,RTMP協(xié)議中基本的數(shù)據(jù)單元稱為消息羹饰,當(dāng)使用RTMP協(xié)議傳輸消息時伊滋,消息會被拆分成更小的單元,稱為消息塊

1队秩、消息

 1)是RTMP協(xié)議中基本的數(shù)據(jù)單元

 2)消息分為兩大部分

    消息首部(Message Header)

      標(biāo)志消息類型的Message Type ID

      標(biāo)志消息長度的Payload Length

      標(biāo)識時間戳的Timestamp

      標(biāo)識消息所屬媒體流的Stream ID

    消息負(fù)載(Message Body)

       傳輸?shù)男畔?
 3)不同種類的消息包含不同的Message Type ID笑旺,RTMP協(xié)議中一共規(guī)定了十多種消息類型,分別發(fā)揮著不同的作用

   1-7

     用于協(xié)議控制馍资,這些消息一般是RTMP協(xié)議自身管理要使用的消息燥撞,用戶一般情況下無需操作其中的數(shù)據(jù)

   8-9

     分別用于傳輸音頻視頻數(shù)據(jù)

   15-20

     用于發(fā)送AMF編碼的命令,負(fù)責(zé)用戶與服務(wù)器之間的交互迷帜,比如播放物舒,暫停等等

2、消息塊

  1戏锹、在網(wǎng)絡(luò)上傳輸數(shù)據(jù)時冠胯,消息需要拆分成較小的數(shù)據(jù)塊,才適合在相應(yīng)的網(wǎng)絡(luò)環(huán)境上傳輸

  2锦针、在消息被分割成幾個消息塊的過程中荠察,消息負(fù)載部分(Message Body)被分割成大小固定的數(shù)據(jù)塊(默認(rèn)是128字節(jié),最后一個數(shù)據(jù)塊可以小于該固定長度)奈搜,并在其首部加上消息塊首部(Chunk Header)悉盆,就組成了相應(yīng)的消息塊。

三馋吗、RTMP流媒體播放過程

RTMP協(xié)議規(guī)定焕盟,播放一個流媒體有兩個前提步驟,

1宏粤、第一步脚翘,建立一個網(wǎng)絡(luò)連接

  服務(wù)端應(yīng)用程序和客戶端之間基礎(chǔ)的連通關(guān)系

2、第二步绍哎,建立一個網(wǎng)絡(luò)流

  網(wǎng)絡(luò)流代表了發(fā)送多媒體數(shù)據(jù)的通道来农,服務(wù)端和客戶端之間只能建立一個網(wǎng)絡(luò)連接,但是基于該連接可以創(chuàng)建很多網(wǎng)絡(luò)流

http://blog.chinaunix.net/uid-17102734-id-3986995.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末崇堰,一起剝皮案震驚了整個濱河市沃于,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌海诲,老刑警劉巖繁莹,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饿肺,居然都是意外死亡蒋困,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門敬辣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雪标,“玉大人零院,你說我怎么就攤上這事〈迮伲” “怎么了告抄?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嵌牺。 經(jīng)常有香客問我打洼,道長,這世上最難降的妖魔是什么逆粹? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任募疮,我火速辦了婚禮,結(jié)果婚禮上僻弹,老公的妹妹穿的比我還像新娘阿浓。我一直安慰自己,他們只是感情好蹋绽,可當(dāng)我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布芭毙。 她就那樣靜靜地躺著,像睡著了一般卸耘。 火紅的嫁衣襯著肌膚如雪退敦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天蚣抗,我揣著相機與錄音侈百,去河邊找鬼。 笑死忠聚,一個胖子當(dāng)著我的面吹牛设哗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播两蟀,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼震缭!你這毒婦竟也來了赂毯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤拣宰,失蹤者是張志新(化名)和其女友劉穎党涕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巡社,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡膛堤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了晌该。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肥荔。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡绿渣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出燕耿,到底是詐尸還是另有隱情中符,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布誉帅,位于F島的核電站淀散,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚜锨。R本人自食惡果不足惜档插,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亚再。 院中可真熱鬧阀捅,春花似錦、人聲如沸针余。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽圆雁。三九已至忍级,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伪朽,已是汗流浹背轴咱。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烈涮,地道東北人朴肺。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像坚洽,于是被迫代替她去往敵國和親戈稿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,860評論 2 361

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