直播时延优化

网友投稿 920 2022-10-08

直播时延优化

直播时延优化

会产生时延的三个地方: (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可以嵌套(最多支持一层嵌套)。可用于直播或者点播。

谢谢阅读。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HiApp 微信小程序版(hiapplink)
下一篇:音视频架构的三部分之CDN(二)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~