低延迟直播技术
直播延迟的来源
直播延迟是指从视频源采集到观众看到画面之间的时间差。延迟主要来自以下几个环节:
- 采集延迟:摄像头和采集设备的处理时间,通常很短(毫秒级)。
- 编码延迟:视频编码器处理一帧所需的时间,与编码复杂度和帧大小有关。
- 传输延迟:视频数据从编码器传输到服务器,再从服务器传输到观众的时间。
- 分片延迟:HLS需要积累足够数据才能生成一个完整的TS分片。
- 缓冲延迟:播放器需要缓冲几个分片才能开始播放,以应对网络波动。
传统HLS延迟分析
传统HLS直播的延迟通常在10-30秒之间。假设分片时长为6秒,播放器缓冲2个分片,那么仅分片和缓冲就带来12秒的延迟。加上编码和传输延迟,总延迟很容易达到15-30秒。
对于大多数直播场景,如电商直播、教育直播,这个延迟是可以接受的。但对于需要实时互动的场景,如游戏直播、视频会议,10-30秒的延迟是不可接受的。
低延迟HLS(LL-HLS)
Apple在2019年发布了低延迟HLS(Low-Latency HLS,LL-HLS)规范,将端到端延迟降低到2-5秒。LL-HLS通过以下技术实现低延迟:
- 部分分片(Partial Segments):将完整的TS分片进一步细分为更小的部分(称为HLS Partial Segment),播放器可以在分片完成前就开始播放这些部分。
- 预加载提示(Preload Hints):服务器通过#EXT-X-PRELOAD-HINT标签告知播放器下一个分片或部分分片的URL,播放器可以提前发起请求,减少等待时间。
- 阻塞播放列表重载(Blocking Playlist Reload):播放器请求播放列表时,服务器可以阻塞响应直到有新内容可用,减少了无效的轮询请求。
- 阻塞标签(CAN-BLOCK-RELOAD):在播放列表中指定CAN-BLOCK-RELOAD=YES,告知服务器支持阻塞重载。
其他低延迟方案
除了LL-HLS,还有其他低延迟方案:
- WebRTC:基于UDP的实时通信协议,延迟可低至500ms-1秒,适合小规模实时互动。
- RTMP:传统的推流协议,延迟1-3秒,但需要Flash支持(已淘汰)。
- SRT:Secure Reliable Transport,延迟1-2秒,适合专业广播场景。
- DASH低延迟:类似LL-HLS,通过分块传输实现低延迟。