國內(nèi)常見的直播協(xié)議有幾個:RTMP、HLS、HTTP-FLV
RTMP,全稱 Real Time Messaging Protocol,即實時消息傳送協(xié)議。Adobe 公司為 Flash 播放器和服務(wù)器之間音視頻數(shù)據(jù)傳輸開發(fā)的私有協(xié)議。
RTMP 是專為流媒體開發(fā)的協(xié)議,對底層的優(yōu)化比其它協(xié)議更加優(yōu)秀,同時它 Adobe Flash 支持好,基本上所有的編碼器(攝像頭之類)都支持 RTMP 輸出。現(xiàn)在 PC 市場巨大,PC 主要是 Windows,Windows 的瀏覽器基本上都支持 Flash。另外RTMP適合長時間播放,曾經(jīng)有過測試,聯(lián)系 100 萬秒,即 10 天多連續(xù)播放沒有出現(xiàn)問題。最后 RTMP 的延遲相對較低,一般延時在 1-3s 之間,一般的視頻會議,互動式直播,完全是夠用的。
當(dāng)然 RTMP 并沒有盡善盡美,它也有不足的地方。一方面是它是基于 TCP 傳輸,非公共端口,可能會被防火墻阻攔;另一方面,也是比較坑的一方面是 RTMP 為 Adobe 私有協(xié)議,很多設(shè)備無法播放,特別是在 iOS 端,需要使用第三方解碼器才能播放。
HTTP FLV則是將RTMP封裝在HTTP協(xié)議之上的,可以更好的穿透防火墻等。
這兩個協(xié)議實際上傳輸數(shù)據(jù)是一樣的,數(shù)據(jù)都是flv文件的tag。http_flv是一個無限大的http流的文件,相比rtmp就只能直播,而rtmp還可以推流和更多的操作。但是http有個好處,就是是以80http通信的,穿透性強(qiáng),而且rtmp是非開放協(xié)議。
這兩個協(xié)議是如今直播平臺主選的直播方式,主要原因就是延時極低。
將測試:RTMP延遲1s左右,HTTPFLV延遲1-2s左右,可用于對延遲要求比較苛刻的場景,但要注意兼容性,文章最后會說明HTTPFLV兼容性

HLS (HTTP Live Streaming) 則是蘋果公司基于 HTTP 的流媒體傳輸協(xié)議。主要應(yīng)用于 iOS 設(shè)備,包含(iPhone, iPad, iPod touch) 以及 Mac OSX 提供音視頻直播服務(wù)和錄制內(nèi)容(點播)等服務(wù)。
相對于常見的流媒體協(xié)議,HLS 最大的不同在于它并不是一下請求完整的數(shù)據(jù)流。它會在服務(wù)器端將流媒體數(shù)據(jù)切割成連續(xù)的時長較短的 ts 小文件,并通過 M3U8 索引文件按序訪問 ts 文件??蛻舳酥灰煌5陌葱虿シ艔姆?wù)器獲取到的文件,從而實現(xiàn)播放音視頻。
HLS 的優(yōu)勢:
Apple 的全系列產(chǎn)品支持:由于 HLS 是蘋果提出的,所以在 Apple 的全系列產(chǎn)品包括 iPhone、 iPad、safari 都不需要安裝任何插件就可以原生支持播放 HLS, 現(xiàn)在 Android 也加入了對 HLS 的支持。
穿透防火墻?;?HTTP/80 傳輸,有效避免防火墻攔截
性能高。通過 HTTP 傳輸, 支持網(wǎng)絡(luò)分發(fā),CDN 支持良好,且自帶多碼率自適應(yīng),Apple 在提出 HLS 時,就已經(jīng)考慮了碼流自適應(yīng)的問題。
HLS 的劣勢:
實時性差,延遲高。HLS 的延遲基本在 10s+ 以上
文件碎片。特性的雙刃劍,ts 切片較小,會造成海量小文件,對存儲和緩存都有一定的挑戰(zhàn)
HTM5的支持