如何降低延时?

本文介绍如何解决查直播延迟长的问题。

造成直播延迟的原因

推流端

  • GOP(Group Of Picture)帧是视频的关键帧,是视频图像编码器和解码器存取的基本单位。直播会将每一帧数据打上时序标签,并进行网络传输。视频的关键帧数量过大会造成直播延迟。

  • 多数第三方推流软件为解决卡顿问题会采用增大编码缓存的方法,而编码缓存过大,则会造成直播延迟。

  • 由于硬件条件限制,无法满足编码端码率、帧率以及编码的高档位设置需求,造成编码延迟影响直播。

服务端

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

播流端

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

如何降低直播延迟

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

  • 推流端配置

    • 将GOP帧设置为1秒~2秒,减少播放器加载GOP帧所用的时间来降低直播延迟。控制台GOP设置,请参见自定义转码;API接口配置,请参见添加自定义转码配置信息

    • 由于编码缓存过大引起的直播延迟,建议您使用阿里云推流SDK降低延迟。

    • 对于推流设备的使用,推流iOS端建议您使用硬编码,其效率高且省电;Android端因机型复杂,CPU类型众多,采用硬编码可能出现兼容性问题,推流Android端建议您使用软编码。

  • 服务端配置

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

    1. 登录视频直播控制台

    2. 在视频直播控制台左侧导航栏,单击推/播流域名管理,进入域名管理页面。

    3. 选择您要配置的播流域名,单击域名配置

    4. 单击直播管理 > 延迟配置

    image

    说明

    将缓存调小后,当网络环境不稳定时,数据无法及时下载,会出现直播卡顿的现象。

  • 选用播流协议

    阿里云提供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服务及具体使用方法,请参见超低延时直播简介