在视频直播场景下,主播与用户之间延时越短,更容易进行互动。在此背景下,客户通常希望视频直播的分发延时越短越好,如果需要降低直播延时,可参考如下方式进行性能优化。
优化方式一:GOP设置
- GOP(Group Of Picture)是视频的关键帧的间隔,是视频图像编码器和解码器存取的基本单位。GOP由I帧开始,后面跟随着一组B帧和P帧,直到下一个I帧之前的帧为一个GOP。当用户第一次观看的时候,播放器需要找到I帧才能开始播放,一般情况下直播服务器会发送缓存中最新的I帧给播放器。
- 因此,建议将直播推流端GOP设置为1~2s。缩短GOP的时长,减少播放器加载GOP的耗时来降低直播延时。
优化方式二:选择合适的播放协议
天翼云提供FLV、HLS、RTMP三种播放协议。
- FLV:由Adobe公司推出,将流媒体数据封装成FLV格式,通过HTTP协议传输给客户端,格式简单,只是在大块的视频帧和音视频头部加入一些标记头 信息。支持使用HTTPS加密传输,支持Android移动端和iOS移动端。
- RTMP:由Adobe公司推出,传输的过程中消息会被拆分为更小的消息块(Chunk)单元,再将分割后的消息块通过TCP协议传输。由于其复杂的拆包和组包过程,可能导致数据传输不稳定。
- HLS:由Apple公司推出,基于HTTP的流媒体传输协议。将视频分成多个连续的视频小分片,然后用m3u8索引表进行管理。一般播放器会在缓存3-4个分片后才启动播放,假设一个分片为3s,因此总延时至少约9s~12s。但HLS可以直接在浏览器中播放。
因此,HTTP-FLV和RTMP延时较小,适合低延时播放的场景。HLS延时较大但兼容性好,适合对延时不敏感但需要更多播放终端可以播放的场景。