本文主要介绍造成视频直播延时的原因及降低延时的解决方法。

造成直播延时的原因

推流端
  • GOP(Group Of Picture)帧是视频的关键帧,是视频图像编码器和解码器存取的基本单位。直播会将每一帧数据打上时序标签,并进行网络传输。视频的关键帧数量过大会造成直播延时。
  • 多数第三方推流软件为解决卡顿问题会采用增大编码缓存的方法,而编码缓存过大,则会造成直播延时。
  • 由于硬件条件限制,无法满足编码端码率、帧率以及编码的高档位设置需求,造成编码延迟影响直播。

服务端

在视频播放前,为了保证直播秒开以及降低卡顿,会先缓存部分直播数据,这样能保证数据的流畅性,但缓存数据会造成一定的直播延时;在视频播放中,由于网络抖动可能导致数据无法传送到客户端,因此会造成2秒~3秒的延时。

播流端

多数不支持快进的播流端都是在接收缓存收满后才进行解码直播,而这部分接收的缓存会导致直播延时。

如何降低直播延时

您可通过以下配置来降低直播延时:

  • 推流端配置
    • 将GOP帧设置为1秒~2秒,减少播放器加载GOP帧所用的时间来降低直播延时。控制台GOP设置,请参见自定义转码;API接口配置,请参见添加直播流自定义转码配置
    • 由于编码缓存过大引起的直播延时,建议您使用阿里云推流SDK降低延时。
    • 对于推流设备的使用,推流iOS端建议您使用硬编码,其效率高且省电;Android端因机型复杂,CPU类型众多,采用硬编码可能出现兼容性问题,推流Android端建议您使用软编码。
  • 服务端配置

    将服务端缓存调小,来降低直播延时。您可通过控制台进行直播延时配置,根据不同的播流协议来配置延时时间,延时配置越低服务端缓存越小。如下图所示:

    1
    说明 将缓存调小后,当网络环境不稳定时,数据无法及时下载,会出现直播卡顿的现象。
  • 选用播流协议
    阿里云提供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秒延时的问题,保障低延时、低卡顿、秒开流畅的极致直播观看体验。

  • 低时延直播费用

    低时延直播费用与标准直播费用不同。具体计费规则,请参见阿里云产品定价页

  • 开通低延时直播服务

    如何开通RTS服务及具体使用方法,请参见使用指南