隨著直播業(yè)務(wù)的興起,越來(lái)越多的直播平臺(tái)開(kāi)始涌現(xiàn),這火熱的程度好像一個(gè)應(yīng)用不帶上直播業(yè)務(wù)出來(lái)都不好意思跟人打招呼。想要做一個(gè)直播業(yè)務(wù),主要包括三個(gè)部分:采集推流端、流媒體服務(wù)端、播放端。這里不多說(shuō),就主要結(jié)合 iOS 平臺(tái),從觀看端出發(fā),介紹一下對(duì)直播協(xié)議的選擇。
通常在 iOS 平臺(tái)做直播業(yè)務(wù),會(huì)有兩種協(xié)議可供選擇:HLS 和 RMTP。
上面是這兩種協(xié)議的簡(jiǎn)介,那它們?cè)趯?shí)際應(yīng)用中會(huì)有什么差異呢?
先說(shuō)說(shuō) HLS。HLS 的基本原理就是當(dāng)采集推流端將視頻流推送到流媒體服務(wù)器時(shí),服務(wù)器將收到的流信息每緩存一段時(shí)間就封包成一個(gè)新的 ts 文件,同時(shí)服務(wù)器會(huì)建立一個(gè) m3u8 的索引文件來(lái)維護(hù)最新幾個(gè) ts 片段的索引。當(dāng)播放端獲取直播時(shí),它是從 m3u8 索引文件獲取最新的 ts 視頻文件片段來(lái)播放,從而保證用戶在任何時(shí)候連接進(jìn)來(lái)時(shí)都會(huì)看到較新的內(nèi)容,實(shí)現(xiàn)近似直播的體驗(yàn)。相對(duì)于常見(jiàn)的流媒體直播協(xié)議,例如 RTMP 協(xié)議、RTSP 協(xié)議等,HLS 最大的不同在于直播客戶端獲取到的并不是一個(gè)完整的數(shù)據(jù)流,而是連續(xù)的、短時(shí)長(zhǎng)的媒體文件,客戶端不斷的下載并播放這些小文件。這種方式的理論最小延時(shí)為一個(gè) ts 文件的時(shí)長(zhǎng),一般情況為 2-3 個(gè) ts 文件的時(shí)長(zhǎng)。HLS 的分段策略,基本上推薦是 10 秒一個(gè)分片,這就看出了 HLS 的缺點(diǎn):
不過(guò) HLS 也有它的優(yōu)點(diǎn):
相對(duì)于 HLS 來(lái)說(shuō),采用 RTMP 協(xié)議時(shí),從采集推流端到流媒體服務(wù)器再到播放端是一條數(shù)據(jù)流,因此在服務(wù)器不會(huì)有落地文件。這樣 RTMP 相對(duì)來(lái)說(shuō)就有這些優(yōu)點(diǎn):
因此業(yè)界大部分直播業(yè)務(wù)都會(huì)選擇用 RTMP 作為流媒體協(xié)議。通常會(huì)將數(shù)據(jù)流封裝成 FLV 通過(guò) HTTP 提供出去。但是這樣也有一些問(wèn)題需要解決:
聯(lián)系客服