做导航网站犯法吗,个人网站做经营性,软件科技开发公司,江苏省建设局报考网站直播系统就是把活动现场的音频或视频信号经数字压缩后#xff0c;传送到直播多媒体服务器(CDN)上#xff0c;在互联网上供广大网友或授权特定人群收听或收看。而随着技术的日益更新#xff0c;人民对于直播的互动性#xff0c;实时性要求更高了#xff0c;传统的直播少则几…直播系统就是把活动现场的音频或视频信号经数字压缩后传送到直播多媒体服务器(CDN)上在互联网上供广大网友或授权特定人群收听或收看。而随着技术的日益更新人民对于直播的互动性实时性要求更高了传统的直播少则几十秒多则几分钟的时延很难满足现在的很多直播场景。今天我们就从播放器端来聊一下anyRTC是如何在端侧做到更低时延的播放效果的。
一播放器工作原理 播放器的模块大致分为解封装数据包队列解码帧队列渲染等几大模块然后组成一套播放逻辑基本上所有的播放器的功能实现也都大同小异。
1.解封装即Demuxer我们通常使用FFMpeg来做。
2.数据包队列这里是延时优化的重点区域因为此队列中可能会缓存大量的数据我们可以通过音视频包的PTS或者Duration来计算出队列中的总时长从而进行播放器的时延优化。
3.解码通常在端侧使用软件或硬件解码二者的效率差异更多的是在Cpu的消耗主要影响的是机器的发热播放的流畅性。
4.帧队列是解码之后的图像或音频数据等待渲染。
5.渲染是将图像或音频数据丢入系统由系统进行对应的输出。
二如何降低时延
在播放端对于延时影响最大的是数据包队列。只要网络有抖动或者卡顿播放器端的累积延迟会逐步加大。
很多的技术文章说直播优化延迟的都是丢帧策略最直接的清缓存数据队列虽然这个方法可以短时间内降低延迟但是强行跳帧直播内容强行被跳过严重影响体验如果丢Gop里面的B帧非参考帧或者序列里面最后几个P帧等或者丢部分音频数据包视频帧时间戳同步音频来达到数据的加速消耗等。但是实际效果均对用户体验产生一定影响。
所以一个好的追帧策略对于低延时播放非常的重要对于播放器来说越多的缓存就意味着更低的卡顿率如果缓存一直保持的低位卡顿率则会明显提高。如何平衡低时延和卡顿率之间的关系是我们需要重点考量的。以下是我们提出的是一个追帧简易模型以一个参数进行举例 1.当缓冲区时长大于5s时进行1.1倍加速。
2.当缓冲区时长大于2s时进行1.05倍加速。
3.当缓冲区时长小于等于1s时正常速度播放。
4.对卡顿进行统计如果一定时间内比如3分钟内卡顿了5次进行线路切换。
三总结
经过anyRTC大量的测试和线上真实环境运行可以验证基于追帧模型的播放器可以在卡顿率和低时延上找到一个相对平衡点有效的提升了用户的体验。