直播概述小記——直播協(xié)議

項目中直播模塊開發(fā)小記验辞,自己負責其中的web端直播播放以及即時通信虏两。遂將直播相關(guān)的技術(shù)點以及開發(fā)過程中遇到的問題記錄下來,進行積累碟绑。

本文主要討論直播協(xié)議俺猿。直播業(yè)務(wù)主要分為三塊,采集端推流格仲、流媒體服務(wù)以及播放端押袍。在項目中,采集端凯肋,我們使用開源的OBS谊惭;流媒體服務(wù),公司是依托騰訊云的云直播服務(wù)侮东;播放端圈盔,web端使用的是同樣是騰訊云提供的播放器,客戶端應(yīng)該也是依托騰訊云提供的播放器SDK悄雅。

直播協(xié)議

直播協(xié)議即流媒體協(xié)議驱敲,主要由RTMP、RTSP宽闲、HLS众眨、HTTP-FLV。這邊我們將主要介紹常用的RTMP以及HLS容诬。

RTMP

RTMP(Real Time Messaging Protocol)娩梨,實時消息傳輸協(xié)議;是最初由Macromedia為通過互聯(lián)網(wǎng)在Flash播放器與一個服務(wù)器之間傳輸流媒體音頻览徒、視頻和數(shù)據(jù)而開發(fā)的一個專有協(xié)議狈定,后Macromedia被Adobe收購。

  • 優(yōu)勢

    • 延時小习蓬,實時性高
      • 基于 TCP 長連接纽什,不需要多次建連措嵌;
      • 從采集推流端到流媒體服務(wù)器再到播放端是一條數(shù)據(jù)流,因此在服務(wù)器不會有落地文件芦缰;RTMP的延時在3s之內(nèi)铅匹,對于實時性要求高的直播,RTMP協(xié)議是很好的選擇饺藤。
    • 編碼兼容性高

基本上所有的編碼器(攝像頭之類)都支持RTMP輸出;windows系統(tǒng)的PC端的瀏覽器節(jié)本上都支持flash流礁。

  • 支持加密
    RTMPE和RTMPS為加密協(xié)議
  • 劣勢

    • 播放端兼容性差
      • 蘋果系的播放端都是無法直接播放的涕俗,需要依賴第三放解碼器,由此會帶來發(fā)熱神帅、耗電等問題再姑。
      • 移動端瀏覽器很少支持flash,所以flv格式文件的播放收到了很大的限制找御。針對這個問題元镀,B站在2016年開源了flv.js,一個實現(xiàn)了在HTML5 視頻中播放FLV格式視頻的Javascript庫霎桅;其實現(xiàn)原理是將flv文件流轉(zhuǎn)碼復(fù)用成ISO BMFF(MP4 碎片)片段栖疑,然后通過Media Source Extensions將MP4片段喂進瀏覽器。MSE頁有同樣存在一定的瀏覽器兼容性問題滔驶,但是支持度還是可以遇革。相信之后瀏覽器的迭代,對于MSE的支持會越來越好揭糕。
        caniuse網(wǎng)站給出的MSE兼容統(tǒng)計

HLS

HLS(HTTP Live Streaming)萝快,是蘋果公司實現(xiàn)的基于 HTTP 的流媒體傳輸協(xié)議,可支持流媒體的直播和點播著角,主要應(yīng)用在 iOS 系統(tǒng)揪漩,為 iOS 設(shè)備(如 iPhone、iPad)提供音視頻直播和點播方案吏口。

  • 優(yōu)勢

    • 性能高
    HTTP的性能沒得說奄容,協(xié)議簡單;沒有直播的實時性要求锨侯,HTTP協(xié)議是最好選擇嫩海。
    • 穿墻

互聯(lián)網(wǎng)不可能不開放HTTP協(xié)議,否則就不叫互聯(lián)網(wǎng)囚痴。所以任何端口封掉叁怪,也不會導致HTTP流看不了。(不過RTMP也能穿墻深滚,用RTMPT協(xié)議)奕谭。
+ ##### 兼容性
+ 蘋果開發(fā)的協(xié)議涣觉,所以在PC或者移動端的safari瀏覽器中,肯定是絕對支持血柳;
+ 其他瀏覽器中支持也并不好官册。從下圖中可以看出,時長占額較大的兩大瀏覽器廠商Chrome和FireFox對蘋果出的協(xié)議并不買賬难捌。所以強大的MSE又出場了膝宁,現(xiàn)在有開源的hls.js對m3u8格式的視頻進行轉(zhuǎn)碼在pc端播放。

caniuse網(wǎng)站給出的HLS兼容統(tǒng)計

  • 劣勢

    • 延時較大
    HLS的延遲在10秒以上根吁,其跟HLS協(xié)議的實現(xiàn)方式有關(guān)员淫;
    HLS 的基本原理就是當采集推流端將視頻流推送到流媒體服務(wù)器時,服務(wù)器將收到的流信息每緩存一段時間就封包成一個新的 ts 文件击敌,同時服務(wù)器會建立一個 m3u8 的索引文件來維護最新幾個 ts 片段的索引介返。當播放端獲取直播時,它是從 m3u8 索引文件獲取最新的 ts 視頻文件片段來播放沃斤,從而保證用戶在任何時候連接進來時都會看到較新的內(nèi)容圣蝎,實現(xiàn)近似直播的體驗。相對于常見的流媒體直播協(xié)議衡瓶,例如 RTMP 協(xié)議徘公、RTSP 協(xié)議等,HLS 最大的不同在于直播客戶端獲取到的并不是一個完整的數(shù)據(jù)流鞍陨,而是連續(xù)的步淹、短時長的媒體文件,客戶端不斷的下載并播放這些小文件诚撵。這種方式的理論最小延時為一個 ts 文件的時長缭裆,一般情況為 2-3 個 ts 文件的時長。HLS 的分段策略寿烟,基本上推薦是 10 秒一個分片澈驼。

直播協(xié)議對比

rtmp、http筛武、hls以及rtsp協(xié)議對比(侵刪)

rtmp缝其、hls以及http-flv協(xié)議對比(摘自參考文章3)

總結(jié)

綜上看出,rtmp和hls這兩種主流的直播協(xié)議徘六,當前是各有利弊内边;所以想要在各種場景下實現(xiàn)比較好的直播效果,就需要具體問題具體分析待锈。
比如在PC漠其,我們可以可以使用rtmp協(xié)議,由于當前瀏覽器對flash仍然后較好支持,PC端就可以充分發(fā)揮rtmp延時小和屎,實時性高的優(yōu)勢拴驮;
而在移動端,hls協(xié)議的兼容性要更勝一籌柴信,我們便可以使用該協(xié)議套啤;
同時,我們還可以使用基于MSE對各種視頻文件進行處理随常,得到兼容性更好的視頻格式潜沦;
當然,使用第三方較為健壯的播放器也是個不錯的選擇绪氛;對于直播播放的討論止潮,會在該系列另一篇文章中進行討論。

參考

1钞楼、直播協(xié)議的選擇:RTMP vs. HLS
2、關(guān)于直播視頻格式和瀏覽器兼容性歷史的來龍去脈
3袄琳、理解RTMP询件、HttpFlv和HLS的正確姿勢
4、RTMP HLS HTTP 直播協(xié)議一次看個夠

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唆樊,一起剝皮案震驚了整個濱河市宛琅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌逗旁,老刑警劉巖嘿辟,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異片效,居然都是意外死亡红伦,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進店門淀衣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昙读,“玉大人,你說我怎么就攤上這事膨桥÷耄” “怎么了?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵只嚣,是天一觀的道長沮稚。 經(jīng)常有香客問我,道長册舞,這世上最難降的妖魔是什么蕴掏? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上囚似,老公的妹妹穿的比我還像新娘剩拢。我一直安慰自己,他們只是感情好饶唤,可當我...
    茶點故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布徐伐。 她就那樣靜靜地躺著,像睡著了一般募狂。 火紅的嫁衣襯著肌膚如雪办素。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天祸穷,我揣著相機與錄音性穿,去河邊找鬼。 笑死雷滚,一個胖子當著我的面吹牛需曾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祈远,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呆万,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了车份?” 一聲冷哼從身側(cè)響起谋减,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扫沼,沒想到半個月后出爹,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡缎除,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年严就,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片器罐。...
    茶點故事閱讀 39,754評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡盈蛮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出技矮,到底是詐尸還是另有隱情抖誉,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布衰倦,位于F島的核電站袒炉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏樊零。R本人自食惡果不足惜我磁,卻給世界環(huán)境...
    茶點故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一孽文、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夺艰,春花似錦芋哭、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至存谎,卻和暖如春拔疚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背既荚。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工稚失, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恰聘。 一個月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓句各,卻偏偏與公主長得像,于是被迫代替她去往敵國和親晴叨。 傳聞我的和親對象是個殘疾皇子诫钓,可洞房花燭夜當晚...
    茶點故事閱讀 44,654評論 2 354

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