本文介绍如何解决查直播延迟长的问题。
造成直播延迟的原因
推流端
GOP(Group Of Picture)帧是视频的关键帧,是视频图像编码器和解码器存取的基本单位。直播会将每一帧数据打上时序标签,并进行网络传输。视频的关键帧数量过大会造成直播延迟。
多数第三方推流软件为解决卡顿问题会采用增大编码缓存的方法,而编码缓存过大,则会造成直播延迟。
由于硬件条件限制,无法满足编码端码率、帧率以及编码的高档位设置需求,造成编码延迟影响直播。
服务端
在视频播放前,为了保证直播秒开以及降低卡顿,会先缓存部分直播数据,这样能保证数据的流畅性,但缓存数据会造成一定的直播延迟;在视频播放中,由于网络抖动可能导致数据无法传送到客户端,因此会造成2秒~3秒的延迟。
播流端
多数不支持快进的播流端都是在接收缓存收满后才进行解码直播,而这部分接收的缓存会导致直播延迟。
如何降低直播延迟
您可通过以下配置来降低直播延迟:
推流端配置
将GOP帧设置为1秒~2秒,减少播放器加载GOP帧所用的时间来降低直播延迟。控制台GOP设置,请参见自定义转码;API接口配置,请参见添加自定义转码配置信息。
由于编码缓存过大引起的直播延迟,建议您使用阿里云推流SDK降低延迟。
对于推流设备的使用,推流iOS端建议您使用硬编码,其效率高且省电;Android端因机型复杂,CPU类型众多,采用硬编码可能出现兼容性问题,推流Android端建议您使用软编码。
服务端配置
将服务端缓存调小,来降低直播延迟。您可通过控制台进行直播延迟配置,根据不同的播流协议来配置延迟时间,延迟配置越低服务端缓存越小。
登录视频直播控制台。
在视频直播控制台左侧导航栏,单击推/播流域名管理,进入域名管理页面。
选择您要配置的播流域名,单击域名配置。
单击
。
说明将缓存调小后,当网络环境不稳定时,数据无法及时下载,会出现直播卡顿的现象。
选用播流协议
阿里云提供HTTP-FLV 、HLS、RTMP三种播放协议,您可以根据直播场景选择使用。
HTTP-FLV和RTMP延迟较小,适合低延迟播放的场景。HLS延迟较大但兼容性好,适合对延迟不敏感但需要更多播放终端可以播放的场景。
HTTP-FLV和RTMP需要Flash播放器,HLS可以直接在浏览器中播放。
手机浏览器观看直播视频,仅可使用HLS播流协议。
说明如果您的播流端使用的是HLS协议,感觉延迟较高,由于HLS协议的延迟在10秒~30秒左右为正常现象,您可以将HLS协议换为FLV协议即可解决此问题。
HTTP-FLV、HLS、RTMP协议对比如下表所示:
协议名称
协议简介
采用的传输协议
视频封装格式
推荐直播场景
HTTP-FLV
由Adobe公司推出,将流媒体数据封装成FLV格式,通过HTTP协议传输给客户端,延迟约2秒。支持使用HTTPS加密传输,支持Android移动端和iOS移动端。
HTTP
FLV、TAG
降低延迟
HLS
由Apple公司推出,基于HTTP的流媒体传输协议。将流媒体数据切成连续的TS分片,每个分片有5秒以上的时长,分片数量一般为3~4个,所以总延迟约10秒~30秒,但流畅性较好。主要应用于iOS设备,提供音视频直播服务和录制内容等服务。
HTTP
M3U8、TS
跨终端
RTMP
由Adobe公司推出,传输的过程中消息会被拆分为更小的消息块(Chunk)单元,再将分割后的消息块通过TCP协议传输,接收端再反解接收的消息块恢复成流媒体数据将大文件拆分,因过程复杂可能导致不稳定。在iOS端,需要使用第三方解码器才能播放。
HTTP
FLV、TAG
互动式直播
超低延时直播
如果上述方法仍未帮您降低延时,您可以尝试使用超低延时服务RTS(Real-time Streaming)。RTS具备千万级并发场景下的毫秒级延时直播能力,适用于较大的互动直播场景,弥补了传统直播3秒~6秒延时的问题,保障超低延时、低卡顿、秒开流畅的直播观看体验。