在流媒體傳輸中,首屏時間(即用戶從開始請求視頻流到視頻開始播放的時間)是衡量用戶體驗的重要指標之一。HLS(HTTP Live Streaming)作為蘋果公司提出的基于HTTP的流媒體傳輸協議,廣泛應用于直播和視頻點播服務中。然而,HLS的傳統配置往往導致較高的延遲,影響用戶體驗。本文將探討如何通過技術優化來縮短HLS的首屏時間。
HLS傳輸協議與延遲
HLS的核心思想是將媒體文件切割成一系列小的TS(Transport Stream)文件,并通過HTTP協議傳輸這些文件。每個TS文件對應一個媒體分段,客戶端通過下載這些分段文件并依次播放來實現流媒體播放。然而,這種機制導致了天然的延遲,因為客戶端必須等待至少一個TS文件生成并被傳輸到客戶端才能開始播放。
蘋果最初推薦的HLS視頻片段時長是10秒(現在推薦6秒),并建議在倒數第三個視頻片段開始播放。按照這種配置,HLS的延遲將達到30秒左右。為了縮短這個延遲,一種簡單的方法是減少每個視頻片段的時長,例如將片段時長縮短到3秒,這樣可以將延遲降低到10秒左右。然而,即使如此,延遲仍然較高。
現有的低延遲解決方案
為了降低HLS的延遲,社區和蘋果公司分別提出了多種解決方案。
- LHLS(Low-Latency HLS):
- LHLS是一種社區驅動的HLS低延遲方案,最早由Periscope團隊在2017年提出。
- 該方案將一個視頻片段進一步細分成多個小的Chunk,無需等待整個視頻片段生成,每生成一個Chunk就會被下載到播放器緩存。
- 使用HTTP/1.1的Chunked transfer encoding功能,播放器保持與服務器的連接,服務器生成一個Chunk就立即傳遞給播放器。
- 這種方案可以將延遲降低到3秒左右,但存在ABR(自適應碼率切換)困難的問題,因為長連接使得客戶端難以估算當前網絡帶寬。
- LLHLS(Low-Latency HLS,蘋果官方方案):
- 蘋果在2019年WWDC上介紹了官方的低延遲HLS解決方案。
- 該方案重新設計了一套低延遲機制,并未直接借鑒社區的低延遲方案。
- LLHLS通過優化切片生成、傳輸和播放的各個環節,實現了更低的延遲。
又拍云HLS+技術優化
又拍云在HLS延遲問題上做了針對性的技術優化,推出了HLS+技術,也稱為流式HLS技術。這項技術通過以下方式顯著降低了HLS的延遲:
- 流式處理:將標準的HLS進行流式處理,大幅度降低延遲,并提高HTML5端直播的兼容性。
- 動態生成M3U8列表和小切片文件:為每個播放請求生成獨立的M3U8列表,并動態快速地生成僅針對這個播放請求的小切片文件。
- Variant HLS+HTTP 302:采用Variant HLS+HTTP 302的方式標識客戶端的行為,能夠標記每個客戶端的HLS請求,并為每個請求建立起連接。
- 優化啟動切片和播放器取片間隔:通過優化啟動切片數量和播放器取片的間隔時間,進一步減少延遲。
通過這些優化措施,又拍云成功將HLS的延遲穩定控制在了4秒左右,顯著提升了用戶體驗。
實踐中的注意事項
在實際應用中,縮短HLS首屏時間需要注意以下幾點:
- 網絡狀況:確保網絡帶寬充足且穩定,避免因網絡延遲導致首屏時間增加。
- 客戶端性能:客戶端的性能也會影響首屏時間,需要確保客戶端設備能夠及時處理和播放視頻流。
- 服務器配置:合理配置服務器端的編碼器和流分割器,生成合適大小的TS文件,以減少傳輸延遲。
結論
HLS作為主流的流媒體傳輸協議,在直播和視頻點播服務中發揮著重要作用。然而,傳統的HLS配置往往導致較高的延遲,影響用戶體驗。通過采用LHLS、LLHLS等低延遲解決方案以及又拍云的HLS+技術優化,可以顯著縮短HLS的首屏時間,提升用戶體驗。在實際應用中,需要注意網絡狀況、客戶端性能和服務器配置等因素,以確保優化效果的最大化。