一个完整的直播产品,不仅要有一个完整直播APP功能,还要有一个强大的服务器,小伙伴们可能会感到困惑,在网络视频直播系统中服务器真的很重要吗?这里告诉大家,不仅很重要,而且还关系到我们看到的画面是否是直播的原画面。
首先了解一下直播原理,把主播正在录制的视频,推送到服务器,在由用户从服务器中下载画面观看。
在采集视频、音频时经常用到的框架是AVFoundation,这是用来播放和创建实时的视听媒体的框架,采集完成后,视频由服务器进行预处理,利用OpenGL ES对视频逐帧进行各种加工,从而实现视频的不同效果,这就是我们常用的美颜。
视频预处理完成后,服务器要对视频进行压缩编码,视频压缩编码的标准为:对视频进行压缩/编码或者视频解码的技术,主要作用是将视频像素压缩成视频码流,降低视频的数据量,不然视频的体积会过于庞大,可能看一场直播下来,几百G流量就没了。
视频压缩方式通常使用H.264,它可以根据需要产生适合网络情况传输的视频流,还拥有更高的压缩比和更好的视频画质。需要注意的是,H.264的压缩算法比较复杂,运行时需要更多的处理器和内存资源,因此对系统的要求比较高。
网络视频直播系统服务器使用的音频编码多是mp3和AAC,压缩音频用。
视频码率也是考验网络视频直播系统服务器能力的重要一点,因为用户所处的网络环境不一样,使用的有可能是WiFi、4G、3G甚至2G,这需要服务器开设多条线路,根据网络不通设置相应码率,比如蓝光4M、超清、高清、流畅等。
视音频通过服务器处理完成后,由用户拉流进行观看,拉流过程中,如果是对即时性要求较高、互动性较强的直播,服务器会采用RTMP或者RTSP,这两个直播协议每收到数据就会进行转发,内容延迟低。如果是需要回放的视频或者跨平台播放的直播,服务器已采用HLS,HLS对比RTMP优点在于它是自适应码率流播,网络好时用高码率播放,网络差时用低码率,可以自动在两者间进行切换;缺点在于延迟大。
在服务器对视频处理好的情况下,剩下的就是用户端对视频的解码和播放了,在看到画面前,所有的处理都需要服务器来完成,处理好视频的同时,还要面对平台庞大的人群流量压力,服务器在网络视频直播系统中的作用,不言而喻。