前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >直播系统源码如何乘风破浪,更好地完成系统优化?

直播系统源码如何乘风破浪,更好地完成系统优化?

原创
作者头像
布谷安妮
修改2020-07-10 09:51:01
5910
修改2020-07-10 09:51:01
举报
文章被收录于专栏:布谷科技布谷科技

直播系统源码的难点是提高首播时间、服务质量即Qos(Quality of Service,服务质量),如何在丢包率20%的情况下还能保障稳定、流畅的直播体验,直播系统源码需要考虑以下方案:

一、推流端优化处理

在推流端,数据的源头是摄像头采集到的画面和麦克风采集到的声音,不同的机型和系统,摄像头和麦克风的能力完全不同,所以我们首先对摄像头的分辨率、帧率、机型等关键信息进行收集;

二、视频前优化处理

接下来是视频前处理的过程,比如去噪、美颜、特效等,这些都是非常耗 CPU 和内存资源的操作,所以这个环节对 CPU 和内存的占用做了详细的上报;前处理之后会进行视频编码,视频编码的质量影响整个视频的观看体验,对视频编码器,主要是上报了视频编码的客观质量和编码器的输出帧率;音频数据的采集编码过程和视频类似;

编码完成之后的数据会进行协议封装,然后进入码率自适应模块,码率自适应模块的功能主要是调整输出码率以适应用户的网络带宽,在用户网络变差的时候,自适应模块会主动丢弃一些数据以降低对网络的压力,推流端的卡顿也主要是发生在这里,所以在这里对自适应模块的输出码率,丢帧数量,卡顿次数都做了详尽的统计;数据最后到达到 CDN 服务商的源站,CDN 服务商分配的源站节点是否合理,是否和用户在同一地域,同一运营商,都直接影响到用户的连接质量,所以源站节点的地理位置和运营商信息,也是对质量评价非常重要的信息。

三、拉流端开播的过程

拉流端开播的过程,如前面所述,主要是连接 CDN 节点拉取数据,数据的解码、渲染这几个步骤。CDN 的边缘节点一般都会缓存一部分数据,便于拉流端在任何时刻开始拉流都能拉到数据。为了让用户尽可能的播放流畅,CDN 会尽量的向用户多发一些数据,有时候甚至超过播放端拉流的缓冲区,超过的这部分数据会造成的显著问题是,如果照单全收并且按照正常的速度播,会导致直播延时增大,互动效果变差。业界公认的互动直播延时标准是小于 5 秒钟,超过 5 秒评论礼物互动效果就会变差。因此我们需要在保证延迟的前提下,尽量缩短首屏,提高流畅度。

四、加快直播视频系统源码平台播放速度

直播系统源码当中的收流服务器主动推送GOP,所谓GOP,意思是画面组,一个GOP就是一组连续的画面至边缘节点,边缘节点缓存 GOP,播放端则可以快速加载,减少回源延迟。

五、减少在线直播系统GOP丢帧

为解决直播系统源码视频延时,为什么会有延时、网络抖动、网络拥塞导致的数据发送不出去,丢完之后所有的时间戳都要修改,切记,要不在线视频直播移动端就会卡一个 GOP的时间,是由于 PTS和 DTS 的原因,或者播放器修正 DTS 和 PTS 也行(推流端丢GOD更复杂,丢 p 帧之前的i帧会花屏)。

直播系统源码业务仍在高速增长,用户数量快速的上涨对服务质量有更高的要求,流媒体大数据平台是各项视频业务的一个基础平台,需要提供完善且稳定的数据收集,数据处理,数据监控,数据分析等服务。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档