可能大部分人認為,只要擁有一套優質的在線直播源碼,就可以順利進行開發和搭建等步驟了。但實際上,整個直播過程主要涉及到采集、處理、編碼、封裝、推流、傳輸、解碼等一系列過程,本次就重點說推流和傳輸的問題。
推流對于直播鏈路的影響是非常大的。下面一起來看下開發時需要了解的幾個
推送協議。
1.RTMP
即實時消息傳輸協議,該協議基于TCP是一個協議族。其中包括RTMP基本協議及RTMPT/RTMPS/RTMPE等多種變種。RTMP是一種設計用來進行實時數據通信的網絡協議,主要用來在Flash/AIR平臺和支持RTMP協議的流媒體/交互服務器之間進行音視頻和數據通信。支持該協議的軟件包括AdobeMediaServer/UltrantMediaServer/red5等。RTMP是目前主流的流媒體傳輸協議,廣泛用于直播領域。
RTMP協議基本特點:
基于TCP協議的應用層協議
默認通信端口1935
RTMPURL格式:
rtmp://ip:[port]/appName/streamName
2、WebRTC
WebRTC名稱源自網頁即時通信,是一個支持網頁瀏覽器進行實時語音對話或視頻對話的API。它于2011年6月1日開源并在Google、Mozilla、Opera支持下被納入萬維網聯盟的W3C推薦標準。目前主要應用于視頻會議和連麥中。
3、基于UDP的私有協議
有些直播應用會使用UDP作為底層協議開發自己的私有協議,因為UDP在弱網環境下的優勢通過一些定制化的調優可以達到比較好的弱網優化效果,但同樣因為是私有協議也勢必有現實問題。
以上常用推送協議中,RTMP是目前主流的流媒體傳輸協議,廣泛用于直播領域,可以說市面上絕大多數的直播產品都采用了這個協議。