直播热潮尚未褪去,而直播系统开发究竟是如何实现的?那么,一套完整的直播系统开发的流程是怎么样的?
1、音视频采集
采集是播放环节中的第一环,iOS 系统因为软硬件种类不多,硬件适配性较好,所以比较简单。Android 则不同,市面上硬件机型非常多,难以做到一个库适配所有硬件。2、音视频处理
美颜系统是现在直播系统中所必需的一项。不光是美颜,很多其它的视频处理如模糊效果、水印等也都是在这个环节做。目前 iOS 端比较知名的是 GPUImage 这个库,提供了丰富的预处理效果,还可以基于这个库自己写算法实现更丰富端效果。Android 也有 GPUImage 这个库的移植,叫做 android-gpuimage。
3、音视频编码
编码主要难点有两个:
处理硬件兼容性问题。
在高 fps、低 bitrate 和音质画质之间找到平衡。
iOS 端硬件兼容性较好,可以直接采用硬编。而 Android 的硬编的支持则难得多,需要支持各种硬件机型,一般是使用软编。
4、推流和传输
传输涉及到很多端:
从主播端到服务端;从收流服务端到边缘节点;以及再从边缘节点到观众端。
推流端和分发端理论上需要支持的并发用户数应该都是亿级的,不过毕竟产生内容的推流端在少数,和消费内容端播放端不是一个量级,但是他们对推流稳定性和速度的要求比播放端高很多,这涉及到所有播放端能否看到直播,以及直播端质量如何。
5、实时音视频转码
为了让主播推上来的流适配各个平台端各种不同协议,需要在服务端做一些流处理工作,比如转码成不同格式支持不同协议如 RTMP、HLS 和 FLV,一路转多路流来适配各种不同的网络状况和不同分辨率的终端设备。
6、解码和渲染
解码和渲染,也即音视频的播放,目前 iOS 端的播放兼容性较好,在延迟可接受的情况下使用 HLS 协议是更好的选择。Android 的硬件解码和编码一样也存在兼容性问题。
7、直播场景化解决方案
场景化指的是对不同垂直直播特点而提供的特有功能组成的针对性解决方案。
以上就是对整个直播系统开发流程的介绍,看似简单的一套直播系统开发,其实是需要很完善的技术的支持,直播系统开发技术的出现实现了直播,直播的发展必将带动直播系统开发技术的发展。