[直播技術(shù)] ?Raymone原創(chuàng)
在談?wù)撝辈サ臅r(shí)候,我們經(jīng)常提到RTMP、M3U8、CDN等一系列的概念,到底是些什么鬼哦?目前我們的直播也做得風(fēng)生水起,成為了非常重要的業(yè)務(wù)。當(dāng)同別人聊起直播的時(shí)候,掌握一些直播的基礎(chǔ)知識(shí),會(huì)幫助你秒(裝)變(X)專(成)家(功)。
整個(gè)直播過(guò)程主要涉及到采集、處理、編碼、封裝、推流、傳輸、解碼等一系列過(guò)程,本次就重點(diǎn)說(shuō)推流和傳輸?shù)膯?wèn)題。
先說(shuō)推流。我們常提到的RTMP是Real Time Messaging Protocol(實(shí)時(shí)消息傳輸協(xié)議)的首字母縮寫,是一種推送協(xié)議,同類的推送協(xié)議還有WebRTC,基于UDP的私有協(xié)議等。其中的RTMP是目前主流的流媒體傳輸協(xié)議,廣泛用于直播領(lǐng)域,可以說(shuō)市面上絕大多數(shù)的直播產(chǎn)品都采用了這個(gè)協(xié)議,當(dāng)然我們也不例外。
以上提到的三種協(xié)議有跟其他很多同類技術(shù)一樣,都有各自的優(yōu)缺點(diǎn)。我們的直播使用的RTMP協(xié)議,有一個(gè)重要的有點(diǎn)就是主流的CDN廠商都支持這個(gè)協(xié)議,簡(jiǎn)單理解就是這樣我們的直播在世界上不同的地方觀看就“更快”。但是他的缺點(diǎn)也比較明顯,比如不支持瀏覽器推送。比如我們想做一個(gè)H5的活動(dòng)頁(yè)面,有個(gè)一推流的功能,這個(gè)咋個(gè)辦呢?這個(gè)時(shí)間WebRTC就有優(yōu)勢(shì)了,它是基于W3C標(biāo)準(zhǔn),主流瀏覽器支持度都比較高。
下面說(shuō)下傳輸。常用的傳輸協(xié)議RTMP,HLS ,HTTP-FLV(有的廠商叫HDL),下面的表幫助大家理解:

從地址的前綴可以看出,HLS和HTTP-FLV都是基于HTTP的協(xié)議。RTMP是基于TCP。
HLS即Http Live Streaming,是由蘋果提出基于HTTP的流媒體傳輸協(xié)議。它有一個(gè)非常大的優(yōu)點(diǎn):HTML5可以直接打開播放;這個(gè)意味著可以把一個(gè)直播鏈接通過(guò)微信等轉(zhuǎn)發(fā)分享,不需要安裝任何獨(dú)立的APP,有瀏覽器即可,很通用所以流行度很高。但是它有一個(gè)很大的弱點(diǎn)就是延遲高。目前已經(jīng)有人提出了HLS+(流式HLS)技術(shù),能夠解決HLS延遲高的問(wèn)題,至于實(shí)際效果如果,我們也在研究中。
HTTP-FLV是一種將直播流模擬成FLV文件,通過(guò)HTTP協(xié)議進(jìn)行下載的模式來(lái)實(shí)現(xiàn)流媒體傳輸?shù)膮f(xié)議。
RTMP即Real Time Messaging Protocol,是 Adobe Systems 公司為 Flash 播放器和服務(wù)器之間音頻、視頻和數(shù)據(jù)傳輸開發(fā)的開放協(xié)議。協(xié)議基于 TCP,是一個(gè)協(xié)議族,包括 RTMP 基本協(xié)議及 RTMPT/RTMPS/RTMPE 等多種變種。
其實(shí)編碼與封裝也是一個(gè)比較有意思的問(wèn)題,會(huì)直接影響整個(gè)流媒體傳輸?shù)挠脩趔w驗(yàn)和傳輸成本,之后也機(jī)會(huì)再跟大家分享。