直播系统源码的难点是提高首播时间、服务质量即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帧会花屏)。
直播系统源码业务仍在高速增长,用户数量快速的上涨对服务质量有更高的要求,流媒体大数据平台是各项视频业务的一个基础平台,需要提供完善且稳定的数据收集,数据处理,数据监控,数据分析等服务。