直播在爆发性的发展过后迎来了稳定的一年,在这个发展过程中很多人也开始从不了解直播行业到现在对直播行业产生了浓厚的兴趣。随着感兴趣的人越来越多,制作直播平台也在直播行业中占了比较大的比重,那么其中究竟有什么奥秘?
首先是直播优化层面,难点是提高首播时间、服务质量即Qos,如何在丢包率20%的情况下还能保障稳定、流畅的直播体验,需要考虑几点问题。
1.为加快首播时间,收流服务器主动推送GOP,所谓GOP,意思是画面组,一个GOP就是一组连续的画面至边缘节点,边缘节点缓存 GOP,播放端则可以快速加载,减少回源延迟。
2.GOP丢帧,为解决延时,为什么会有延时,网络抖动、网络拥塞导致的数据发送不出去,丢完之后所有的时间戳都要修改,切记,要不客户端就会卡一个 GOP的时间,是由于 PTS(Presentation Time Stamp,PTS主要用于度量解码后的视频帧什么时候被显示出来) 和 DTS 的原因,或者播放器修正 DTS 和 PTS 也行(推流端丢GOD更复杂,丢 p 帧之前的 i 帧会花屏)
3.纯音频丢帧,要解决音视频不同步的问题,要让视频的 delta增量到你丢掉音频的delta之后,再发音频,要不就会音视频不同步
4.源站主备切换和断线重连。根据TCP拥塞窗口做智能调度,当拥塞窗口过大说明节点服务质量不佳,需要切换节点和故障排查
5.增加上行、下行带宽探测接口,当带宽不满足时降低视频质量,即降低码率定时获取最优的推流、拉流链路IP,尽可能保证提供服务
6.监控必须要,监控各个节点的Qos状态,来做整个平台的资源配置优化和调度
7.如果产品从推流端、CDN、播放器都是自家的,保障 Qos 优势非常大
8.当直播量非常大时,要加入集群管理和调度,保障 Qos
9.播放端通过增加延时来减少网络抖动,通过快播来减少延时
其次是技术方面,直播软件开发要有成熟的技术。如果是IOS的直播软件开发,相对简单一点,因为IOS提供现成的 Video ToolBox框架,可以对摄像头和流媒体数据结构进行处理,但Video ToolBox框架只兼容8.0以上版本,8.0以下就需要用x264的库软编了。并且github上有现成的开源实现,推流、美颜、水印、弹幕、点赞动画、滤镜、播放都可以迅速展现。
最后是用户体验方面,流畅、不卡顿、不花屏、断线重连、丢包策略、首画加载速度、丰富的礼物系统,为了提高用户体验,可以在后台加载其他页面数据,但要在用户体验和内存优化方面找到平衡点。
关于制作直播平台这只是其中很小的一小部分,要想了解更多开发方面的信息建议找一家专业的做这方面的公司咨询一下。