如何降低音视频延时_转
转自:https://help.aliyun.com/document_detail/57041.html?spm=a2c4g.11186623.6.744.34f1200fHRgVXc
造成直播延时的原因
推流端
- 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秒延时的问题,保障低延时、低卡顿、秒开流畅的极致直播观看体验。