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