要想一个人开发在线直播平台,绝对一个技术全能型的大神,因为在线直播平台开发中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通信等技术,每一个技术都需要有一定的经验。
但想做在线直播平台开发其实也不难,因为已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架,就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程。
在线直播平台开发的原理就是把主播录制的视频,推送到服务器,再由服务器分发给观众观看。
首先是直播视频采集端,由主播通过摄像头手机等采集设备,采集视音频流,编码后采用RTMP协议推流到直播流服务器。这里采用H.264编码对视频流进行编码,使用AAC对音频流进行编码,采用这两种编码的原因是hls协议要求使用这两种编码。
接下来直播服务器会对从采集端推送的流进行一定的处理。比如,hls协议会将视频流切片成一个个的TS视频文件缓存在服务器中,同时生成一个m3u8文件记录了视频流中的包含的TS文件。
下面来了解一下在线直播平台开发需要用到的流媒体:
流媒体开发:网络层(socket或st)负责传输,协议层(rtmp或hls)负责网络打包,封装层(flv、ts)负责编解码数据的封装,编码层(h.264和aac)负责图像,音频压缩。
帧:每帧代表一幅静止的图像
GOP:(Group of Pictures)画面组,一个GOP就是一组连续的画面,每个画面都是一帧,一个GOP就是很多帧的集合。
码率:图片进行压缩后每秒显示的数据量。
帧率:每秒显示的图片数。影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。
分辨率:(矩形)图片的长度和宽度,即图片的尺寸
压缩前的每秒数据量:帧率X分辨率(单位应该是若干个字节)
压缩比:压缩前的每秒数据量/码率 (对于同一个视频源并采用同一种视频编码算法,则:压缩比越高,画面质量越差。)
前处理,现在手机直播APP美颜功能已经是标配了,美颜算法需要用到GPU编程,需要懂图像处理算法。
传输,CDN服务商为视频直播APP定制了专门的带宽和服务器,方便于彼此之间传输,发送和接收端的网络连接抖动缓冲。手机直播过程中不想要卡顿,必然要加大缓冲,会导致延迟高,延迟高影响互动性,要做权衡。
渲染,这个难点不在于绘制,而在于手机视频APP在直播实现音画同步。此外音频比如降噪,音频编码器的选择,各种蓝牙耳机,各种播放模式的适配等,如果主播想和观众在直播平台app连线聊天,回声消除问题也是亟待解决的。
以上是在线直播平台开发的一些知识点,总之,在线直播平台如何开发这是一个复杂的问题,大多数人会找服务商进行搭建部署,如果是自己搭建网上也有很多参考教程,可以自己学习参考一下。
领取专属 10元无门槛券
私享最新 技术干货