直播时延优化

举报
yd_221104950 发表于 2020/12/04 23:19:17 2020/12/04
【摘要】 会产生时延的三个地方: (1)推流时,对采集到的音视频数据进行的处理和编码会产生时延; (2)通过流媒体协议进行推流时,会受到网络状态的影响也会产生时延; (3)在拉流端对音视频数据拉取和解码也会产生时延。 以上产生时延的地方涉及到数据处理、编码、传输的问题。可以从以下几方面来优化: 1. 处理数据时延优化 处理数据包括美颜、水印、滤镜、加贴纸效果等,把这些都让G...

会产生时延的三个地方:
(1)推流时,对采集到的音视频数据进行的处理和编码会产生时延;
(2)通过流媒体协议进行推流时,会受到网络状态的影响也会产生时延;
(3)在拉流端对音视频数据拉取和解码也会产生时延。

以上产生时延的地方涉及到数据处理、编码、传输的问题。可以从以下几方面来优化:

1. 处理数据时延优化

处理数据包括美颜、水印、滤镜、加贴纸效果等,把这些都让GPU来处理,可大大减小处理数据的时延。

2. 编码时延优化

  • 把B帧丢掉(视频帧有I、P、B帧),可以减少编码耗时。因为B帧在解码时需要依赖前后视频帧,编解码时会增加时延。把它丢掉,不仅可以减少编码的耗时,还减少带宽的开销和拉流端在解码时的时延。
  • 如果使用了ffmpeg库,要降低probesize(监控帧信息的监测大小)和analyze duration(监测时长)这两个参数的值,它们对编码时延很有影响。
  • 尽量采用VBR可变码率编码,减少不必要的网络带宽开销。固定码率编码CBR虽可以消除网络拉动的影响,但还是建议使用VBR。

3.传输时延优化
可以从传输协议的选择和传输网络两个方面来优化:

  • 传输协议:选择HTTP-FLV或RTMP等来传输数据,它们的传输速度会比较快,可减少时延。
  • 传输网络:(1).在CDN节点中缓存当前推流的GOP(GOP group of pictures 指的就是两个I帧之间的间隔,如GOP为120,那么是720 p60 的话,那就是2s一次I帧),配合播放器端优化视频首次打开视频的时间。(2)后台实时记录每个视频流流向每个环节的秒级帧率和码率,实时监控码率和帧率的波动。(3)通过直连IP方式访问直播地址,可以减少使用域名带来的DNS解析时延。

4.推流端和拉流端的优化
拉流端使用动态Buffer策略,即在播放器内设置一定的缓存空间,以便能在播放过程中缓冲一定的数据。它的大小可以通过在播放器下载首个视频片段(如m3u8文件中的第一个TS分片)的耗时来决定下一个时间片的缓存大小,同时在播放过程中实时监测当前网络,实时调整播放过程中缓存的大小,这样既可以做到极短的首开时间,还可以尽量消除网络抖动造成的影响。

注:

m3u8是由独立行组成的文本文件,行分成三类:

  • 以#EXT开头的表示是tag
  • 仅有#表示是注释
  • uri行表示嵌套的m3u8文件,或者真正的分片流。

原理:将视频或音频流分片,并建立m3u8格式的索引,m3u8可以嵌套(最多支持一层嵌套)。可用于直播或者点播。

谢谢阅读。

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/95761874

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。