轉(zhuǎn)自:原文鏈接:https://blog.csdn.net/m0_60259116/article/details/124729523
本文聚集于RTSP、RTMP肠套、HLS這3種主流的流媒體協(xié)議介紹舰涌,從協(xié)議起源、協(xié)議特點(diǎn)你稚、優(yōu)點(diǎn)瓷耙、缺點(diǎn)朱躺、應(yīng)用場景等多維度進(jìn)行解析,希望能給大家?guī)硎斋@哺徊。
一室琢、 TCP 與UDP 協(xié)議介紹
UDP/TCP本質(zhì)上是一種網(wǎng)絡(luò)傳輸協(xié)議,負(fù)責(zé)落追、并規(guī)范了信息的傳遞盈滴。
- TCP 是面向有連接的協(xié)議,優(yōu)點(diǎn)是傳輸可靠穩(wěn)定,缺點(diǎn)是因?yàn)樾枰S護(hù)長連接,相對來說會消耗資源,同時,建立連接過程中也稍稍麻煩
2、UDP 是面向無連接協(xié)議,因無須長連接,故消耗資源比TCP 少,同時連接簡單
二轿钠、RTSP巢钓、RTMP、HLS 協(xié)議介紹
2.1 RTSP 介紹
- RTSP疗垛,是目前三大流媒體協(xié)議之一症汹,英文全稱為:Real Time Streaming Protocol,即實(shí)時流傳輸協(xié)議贷腕,它是由Real Networks 和 Netscape2家公司共同創(chuàng)立背镇。它本身并不傳輸數(shù)據(jù),傳輸數(shù)據(jù)的動作可以讓UDP/TCP協(xié)議完成泽裳,而且RTSP可以選擇基于RTP協(xié)議傳輸瞒斩。
- RTSP對流媒體提供了諸如暫停,快進(jìn)等控制涮总,它不僅提供了對于視頻流的控制還定義了流格式胸囱,如TS、 mp4 格式瀑梗。通常應(yīng)用于安防視頻監(jiān)控等場景烹笔,如公安調(diào)查監(jiān)控進(jìn)行視頻的查看、回放抛丽、快進(jìn)谤职、后退等操作,十分友好亿鲜。
- RTSP流媒體協(xié)議還有哪些特點(diǎn)呢柬帕?
最大的特點(diǎn)除了控制視頻操作外還具有低延時的特點(diǎn),通辰泼牛可實(shí)現(xiàn)毫秒級的延時陷寝,但是也存在一些弊端,如該視頻流技術(shù)實(shí)現(xiàn)復(fù)雜其馏,而且對瀏覽器很挑剔凤跑,且flash插件播不了,這也極大的限制了它的發(fā)展叛复。
2.2 RTMP 介紹
- RTMP仔引,英文全稱為:Real Time Messaging Protocol扔仓,即實(shí)時消息傳輸協(xié)議,由Adobe公司創(chuàng)立咖耘。RTMP主要基于TCP協(xié)議傳輸翘簇,主要傳輸 flv, f4v 格式流儿倒,最大的特點(diǎn)是裝個插件可以在各大瀏覽器進(jìn)行播放版保,播放門檻相對不高,可在手機(jī)上得到充分的應(yīng)用夫否、推廣彻犁,因此比較受歡迎,目前也是視頻云服務(wù)的主推流協(xié)議凰慈。此外RTMP時延也比較低汞幢,目前常用于手機(jī)直播、語音通話等場景微谓。
- 那么這種RTMP流協(xié)議是這么傳輸數(shù)據(jù)的呢森篷?
這種視頻流協(xié)議傳輸?shù)臄?shù)據(jù)主要包含2部分,第一豺型,基本單元為Message(消息)仲智,第二,最小單元是Chunk(消息塊)触创,發(fā)送端會把需要傳輸?shù)拿襟w數(shù)據(jù)封裝成消息坎藐,然后把消息拆分成消息塊为牍,每一個消息具有特定的id號哼绑,后面將根據(jù)這個id號,將一個個零散的Chunk(消息塊)又重新拼接成消息(有點(diǎn)小蝌蚪找媽媽的感覺碉咆,拆散又合體)抖韩。
2.3 HLS 介紹
- HLS,英文全稱為:HTTP Live Streaming疫铜,由蘋果公司提出茂浮,它是基于Http的流媒體網(wǎng)絡(luò)傳輸協(xié)議,主要傳輸TS格式流壳咕,最大的特點(diǎn)是安卓席揽、蘋果都能兼容,通用性強(qiáng)谓厘,而且碼流切換流暢幌羞,滿足不同網(wǎng)絡(luò)、不同畫質(zhì)的用戶播放需要竟稳,但是因?yàn)樵摲N視頻流協(xié)議也存在較為致命的缺陷属桦,那就是網(wǎng)絡(luò)延時太高熊痴。
- 本質(zhì)上HLS視頻流傳輸是將整個視頻流分成一個個小切片,可理解為切土豆片聂宾,這些小片都是基于HTTP文件來下載——先下載果善,后觀看。
- 用戶觀看視頻實(shí)際上是下載這些小的視頻切片系谐,每次只下載一些巾陕,蘋果官方建議是請求到3個片之后才開始播放,若是直播蔚鸥,時延將超10秒惜论,所以比較適合于點(diǎn)播。因此HLS視頻的切片一般建議10s止喷,時間間隔太短就切容易造成碎片化太嚴(yán)重不方便數(shù)據(jù)存儲和處理馆类,太長容易造成時延加重。
三 弹谁、RTSP乾巧、RTMP、HLS對比總結(jié)
- 從網(wǎng)絡(luò)上接收視頻時首先要解協(xié)議(RTSP/RTMP/HTTP)预愤,然后是解格式(MKV沟于,RMVB),之后才是將視頻(H264)和音頻(AAC)格式數(shù)據(jù)分別解碼為圖像(RGB/YUV)和聲音(PCM)植康,再根據(jù)時間戳同步播放旷太。
- RTSP+RTP主要用于IPTV,原因是傳輸數(shù)據(jù)使用的是UDP销睁,在網(wǎng)絡(luò)環(huán)境比較穩(wěn)定的情況下供璧,傳輸效率是比較高的;
- RTMP主要用于互聯(lián)網(wǎng)音視頻傳輸冻记,它使用的是TCP傳輸睡毒,因?yàn)榛ヂ?lián)網(wǎng)環(huán)境相對較差,采用RTMP保證了視頻的傳輸質(zhì)量冗栗,但是其傳輸延遲相對較高演顾,傳輸效率相對較低。
- 使用RTMP技術(shù)的流媒體系統(tǒng)有一個非常明顯的特點(diǎn):使用 Flash Player 作為播放器客戶端隅居,而Flash Player 現(xiàn)在已經(jīng)安裝在了全世界將近99%的PC上钠至,因此一般情況下收看RTMP流媒體系統(tǒng)的視音頻是不需要安裝插件的。用戶只需要打開網(wǎng)頁胎源,就可以直接收看流媒體棉钧,十分方便。直播服務(wù)普遍采用了RTMP作為流媒體協(xié)議乒融,F(xiàn)LV作為封裝格式掰盘,H.264作為視頻編碼格式摄悯,AAC作為音頻編碼格式。FLV是RTMP使用的封裝格式愧捕,H.264是當(dāng)今實(shí)際應(yīng)用中編碼效率最高的視頻編碼標(biāo)準(zhǔn)奢驯,AAC則是當(dāng)今實(shí)際應(yīng)用中編碼效率最高的音頻編碼標(biāo)準(zhǔn)。
- librtmp是RTMP協(xié)議的實(shí)現(xiàn)次绘,可以使用librtmp來實(shí)現(xiàn)協(xié)議的解析和數(shù)據(jù)的收發(fā)瘪阁。直播服務(wù)器可以基于nginx+rtmp實(shí)現(xiàn);直播客戶端方面采用librtmp負(fù)責(zé)推流邮偎,F(xiàn)Fmpeg負(fù)責(zé)編碼管跺;收看客戶端采用VLC即可,因?yàn)閂LC本身既可以解析RTMP流禾进,又可以解析編碼后的視頻數(shù)據(jù)豁跑。