直播时延优化
【摘要】 会产生时延的三个地方: (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)