在直播應(yīng)用中,RTMP 和 HLS 是兩種較為成熟且廣泛應(yīng)用的流媒體協(xié)議,基本上可以覆蓋所有客戶端。RTMP 是互聯(lián)網(wǎng) TCP/IP 五層體系結(jié)構(gòu)中應(yīng)用層的協(xié)議,主要優(yōu)勢就是實時性高,基本可將直播延時控制在3秒以內(nèi),因此廣泛應(yīng)用于低延時直播。
HLS是由 Apple 公司實現(xiàn)的基于 HTTP 的流媒體傳輸協(xié)議,擁有性能高、完美支持 iOS等優(yōu)勢。相比于 RTMP 協(xié)議,HLS 無需在移動端安裝 APP,同時兼容HTML5,因此在移動直播的傳播和體驗上都擁有巨大的優(yōu)勢。不過HLS 的實時性較差,業(yè)界的平均直播延時達(dá)在10s ~35s。
在讓許多用戶最頭痛的 HLS 延時問題上,又拍云做了針對性的技術(shù)優(yōu)化,實現(xiàn)了 HLS 的超低延時,將 HLS 延時穩(wěn)定控制在了 4 秒左右。
HLS 高延時原因分析
HLS 理論上延時=1個切片的時長+ 0-1個td(td是EXT-X-TARGETDURATION,可簡單理解為播放器取片的間隔時間) + 0-n個啟動切片(蘋果官方建議是請求到3個片之后才開始播放) + 播放器最開始請求的片的網(wǎng)絡(luò)延時(網(wǎng)絡(luò)連接耗時)。
從延時組成公式可以看出,HLS 的延時主要是以下四部分組成:
服務(wù)器端的編碼器和流分割器生成 TS 文件的時常,HLS 協(xié)議應(yīng)用于直播視頻傳輸時,是將媒體文件切割成了對應(yīng)于媒體分段的 TS 文件。
播放器取片的間隔時間,在客戶端開始下載之前,必須等待服務(wù)器端的編碼器和流分割器至少生成一個TS 文件。
客戶端下載切片的時間及啟動播放所需的切片個數(shù),通常下載完兩個媒體文件后才能保證不同分段音視頻間的無縫連接。
客戶端最開始解碼并開始播放的時間。
HLS的延時優(yōu)化主要是針對前三個部分,第四個