搭建一个视频直播服务器,这你要了解直播系统有哪几块组成,视频直播的过程一般可以分为采集、前处理、编码、传输、解码、渲染这几个环节,经过这几个环节之后,我们就可以通过PC端或者移动端进行视频直播的观看。
采集:采集指的是图像和声音的采集,是直播系统中的第一环节,获取视频源。iOS 系统因为软硬件种类不多,硬件适配性较好,所以比较简单。Android 则不同,市面上硬件机型非常多,难以做到一个库适配所有硬件。PC 端的采集也跟各种摄像头驱动有关。
前处理:指的是用于图像美化,风格化,图像处理等方面,也就是常说的美颜。而美颜算法需要用到GPU编程,这个阶段的难点不在于美颜效果,而在于GPU占用和美颜效果之间的平衡。
目前市面上的GPU性能都不错,但是功耗是个很大的问题,GPU占用太高会导致手机发烫,而手机发烫会导致摄像头采集掉帧,采集掉帧画面就会出现问题。iPhone6尤其明显,因为iPhone6的CPU和前置摄像头很近。
编码:在编码方面,有两种编码方式,硬编码(硬件)与软编码(软件)。如果说你要实现720P的高清效果,那么就需要采用硬编码,如果对清晰度没有要求那么可以使用软编码(不过目前直播都看高清的了)。
但是对于硬编码的话,在Android上存在兼容性问题,源于不同厂商的芯片差异巨大,难以构建统一的库来兼容全平台。在编码方面的核心是平衡分辨率、码率、帧率、GOP(Group of Pictures)使得体积与画质达到最优,也就是要在分辨率,帧率,码率,GOP等参数设计上找到最佳平衡点。
传输:数据经过推流端采集和预处理,编码之后推流到服务端。推流作为视频源的传输,在稳定性速度上都比拉流高得多,实现推拉流的技术线没有雄厚的人才与资金是不现实的。
解码,渲染:拉流获取音视频数据后,需要通过解码器解码,渲染才能在播放器上播放。解码和渲染,也即音视频的播放,目前 iOS 端的播放兼容性较好,在延迟可接受的情况下使用 HLS 协议是最好的选择。在播放端,保证音画同步的同时,保证稳定流畅的直播流量,需要服务端与播放端做调度优化。
以上就是搭建一个简单的直播系统所要做的工作,工作量十分的大,而且很多技术难题都不是一个人能解决的。就拿是网络的搭建来说,就像上面说的没有雄厚的资金是不现实的。一般来说都要找一个CDN服务商进行合作,CDN服务商都有自己专用的分发网络,这样才能保证直播效果不会卡,不会花屏,首屏打开快,一点就要看到,延时小。
CDN服务商的选择可以参考几点:
1、节点数;
2、分布的合理性;
3、核心节点的数据吞吐量;
4、合理的回源机制;
5、防黑的能力。
如果只是搭建一个50左右的在线课堂,自己搭建的话不仅要从处理各种技术问题,网络的搭建也是一个问题。所以建议选择找第三方云视频服务商来进行合作,一是技术比较成熟,拿来就可以用省去了开发的时间成本,二是一般服务商都有自己的CDN,不用再担心数据传输、分发的问题。如果有需要的话可以联系我们。