开发者社区 问答 正文

如何降低直播延时?

按正常情况,RTMP 推流 + FLV 播放的正常延迟在 2-3s 左右,如果太长则是有问题的。如果您发现直播延迟时间特别长,可按照如下思路来排查:


以下方法仅适用于 RTMP 与 FLV
阿里云提供 FLV、HLS、RTMP 三种播放协议,不少用户采用 HLS 的播放协议。HLS 是苹果研发的协议,对浏览器兼容较好,并且跨终端的支持。是很多用户的首选。但是 HLS 本身机制的问题,是基于大颗粒的 TS 分片的流媒体协议,每个分片都有 5s 以上的时长,分片数量一般为 3-4 个,所以总延迟在 20-30s 左右。很多用户通过设置 TS 切片的时间来减少延时,虽然能有效的减少一些延时,但基于协议本身的特性也无法像 rtmp 与 flv 协议一样将延迟降低到很低。


GOP 帧设置
GOP 帧是视频的关键帧,是一组连续的画面,由一张 I 帧和数张 B / P 帧组成,是视频图像编码器和解)码器存取的基本单位,它的排列顺序将会一直重复到影像结束。直播会将每一帧数据打上时序标签后进行在网络上进行传输,减少 GOP 帧的数量,减少播放器加载 GOP 帧所用的时间。一般情况下设置为 1-2s。


服务器缓存设置
一般情况服务器会先缓存一部分直播数据,在将数据通过网络传输至终端。这样能保证数据传输的流畅性,有缓存数据也就会造成一定的直播延时,对直播要求较高的场景就会要求将缓存调小已达到较小的延迟。
当然,相对应的缓存越小,当网络环境不好是,数据无法及时的下载,就会出现卡顿的现象。


确认使用的播放协议
不少用户播放协议采用 HLS(m3u8),并感觉延迟较大,这是正常的。苹果主推的 HLS 是基于 TS 分片文件的流媒体协议,每个分片都有 5s 以上的时长,分片数量一般为 3-4 个,所以总延迟基本都在在 20-30s。
换用 FLV 作为播放协议即可解决这个问题。但是要注意,如果您要在手机浏览器上观看直播视频,只有 HLS (m3u8) 这一种播放协议可以选择,其它的直播协议在苹果的 Safari 浏览器上都是不支持的。

展开
收起
EdgePlus 2017-11-29 14:50:06 23294 分享 版权
阿里云 AI 助理回答

针对您提到的直播延迟问题,确实涉及到多个技术环节和配置优化。根据您的描述,这里有几个具体的建议来帮助减少直播延迟:

  1. 调整播放协议

    • 如果当前使用的是HLS协议且对低延迟有较高要求,可以考虑切换到RTMP或FLV协议。这两种协议相比HLS能提供更低的延迟体验,通常在2-3秒左右。但请注意,这一改变可能会影响不同平台和设备的兼容性,尤其是iOS设备主要支持HLS。
  2. 优化GOP设置

    • GOP(Group of Pictures)长度直接影响到解码器寻找关键帧的速度,进而影响到初始加载时间和切换流时的延迟。缩短GOP长度至1-2秒可以显著降低延迟,因为这样客户端可以更快地找到下一个关键帧开始播放。不过,过短的GOP可能会增加编码复杂度和带宽消耗。
  3. 服务器缓存策略调整

    • 与内容分发网络(CDN)或流媒体服务器提供商确认是否可以调整缓存策略,减小缓冲区大小以降低延迟。虽然这会提升实时性,但也可能导致在网络不稳定时出现卡顿,需要权衡利弊。
  4. 检查网络状况

    • 确保推流端到服务器以及服务器到播放端的网络连接质量良好。高延迟有时是由于网络传输中的拥塞或丢包导致的。
  5. 利用阿里云产品特性

    • 阿里云的视频服务如阿里云直播服务提供了多种工具和配置选项来优化直播体验,包括但不限于自适应码率、智能路由等,这些都能有效改善延迟问题。
    • 对于必须使用HLS协议的情况,可以尝试使用阿里云的低延迟HLS功能,它通过减少TS切片的时长来尽量降低HLS的延迟,尽管无法达到RTMP或FLV的水平,但仍可获得比标准HLS更优的延迟表现。

综上所述,通过上述方法结合实际情况进行调整,可以有效解决直播延迟的问题。如果是在阿里云平台上操作,建议详细查看阿里云直播产品的官方文档和最佳实践指南,以便获取最直接的技术支持和配置指导。您也可以通过ECS一键诊断全面排查并修复ECS问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答