可能大部分人認(rèn)為,只要擁有一套優(yōu)質(zhì)的在線直播源碼,就可以順利進(jìn)行開發(fā)和搭建等步驟了。但實際上,整個直播過程主要涉及到采集、處理、編碼、封裝、推流、傳輸、解碼等一系列過程,本次就重點說推流和傳輸?shù)膯栴}。
推流對于直播鏈路的影響是非常大的。下面一起來看下開發(fā)時需要了解的幾個推送協(xié)議。
1.RTMP
即實時消息傳輸協(xié)議,該協(xié)議基于 TCP是一個協(xié)議族。其中包括 RTMP 基本協(xié)議及 RTMPT/RTMPS/RTMPE 等多種變種。RTMP 是一種設(shè)計用來進(jìn)行實時數(shù)據(jù)通信的網(wǎng)絡(luò)協(xié)議,主要用來在 Flash/AIR 平臺和支持 RTMP 協(xié)議的流媒體/交互服務(wù)器之間進(jìn)行音視頻和數(shù)據(jù)通信。支持該協(xié)議的軟件包括 Adobe Media Server/Ultrant Media Server/red5 等。RTMP 是目前主流的流媒體傳輸協(xié)議,廣泛用于直播領(lǐng)域。
RTMP協(xié)議基本特點:
基于TCP協(xié)議的應(yīng)用層協(xié)議
默認(rèn)通信端口1935
RTMP URL格式:
rtmp://ip:[port]/appName/streamName
2、Web RTC
Web RTC名稱源自網(wǎng)頁即時通信,是一個支持網(wǎng)頁瀏覽器進(jìn)行實時語音對話或視頻對話的API。它于2011年6月1日開源并在Google、Mozilla、Opera支持下被納入萬維網(wǎng)聯(lián)盟的W3C推薦標(biāo)準(zhǔn)。目前主要應(yīng)用于視頻會議和連麥中。
3、基于 UDP 的私有協(xié)議
有些直播應(yīng)用會使用 UDP 做為底層協(xié)議開發(fā)自己的私有協(xié)議,因為 UDP 在弱網(wǎng)環(huán)境下的優(yōu)勢通過一些定制化的調(diào)優(yōu)可以達(dá)到比較好的弱網(wǎng)優(yōu)化效果,但同樣因為是私有協(xié)議也勢必有現(xiàn)實問題。
以上常用推送協(xié)議中,RTMP是目前主流的流媒體傳輸協(xié)議,廣泛用于直播領(lǐng)域,可以說市面上絕大多數(shù)的直播產(chǎn)品都采用了這個協(xié)議。下面再來看一下傳輸協(xié)議有哪些。
常用的傳輸協(xié)議RTMP,HLS ,HTTP-FLV,HLS和HTTP-FLV都是基于HTTP的協(xié)議,RTMP是基于TCP。
HLS即Http Live Streaming,是由蘋果提出基于HTTP的流媒體傳輸協(xié)議。它有一個非常大的優(yōu)點就是HTML5可以直接打開播放;這個意味著可以把一個直播鏈接通過微信等轉(zhuǎn)發(fā)分享,不需要安裝任何獨立的APP,有瀏覽器即可,很通用所以流行度很高。但是它有一個很大的弱點就是延遲高。
HTTP-FLV是一種將直播流模擬成FLV文件,通過HTTP協(xié)議進(jìn)行下載的模式來實現(xiàn)流媒體傳輸?shù)膮f(xié)議。
RTMP即Real Time Messaging Protocol,是 Adobe Systems 公司為 Flash 播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸開發(fā)的開放協(xié)議。協(xié)議基于 TCP,是一個協(xié)議族,包括 RTMP 基本協(xié)議及 RTMPT/RTMPS/RTMPE 等多種變種。