直播系统开发中,音视频的混流是什么原理实现的

2018-11-05 17:01:17 admin 0

移动流量的廉价化,4g,4g+技术的成熟,为移动端的直播提供了基础条件,直播逐渐成为一件普遍千家万户的一件事情。但是由于无线网络的不稳定性,和手机硬件资源的制约,往往会发生一些影响用户体验的事情,互联网时代,用户是王道,每一个失败的产品体验细节都可能导致用户的流失,所以我们要针对流量和程序资源进行一些优化,这里我们要提到一门叫混流的视频处理技术。

s1.jpg

在开始讨论这个问题之前,我们先了解下音视频的基本构成原理。我们天天常看的电视剧,电影,直播等,从音视频采集到音视频播放,本质上对于音视频的处理都是独立的。从技术角度来解释就是,音视频在前期会独立的进行采集,再进行进行编码,打包封装成市面上常用的视频格式(如MP4,FLV等),最后播放器拿到资源后进行相应的格式解码,然后再分发到不同的硬件处理。早期的音视频流是分开的,这就是为什么家里会有AV线的由来。直播的时候会利用传输协议会将采集处理后的资源拆分成无数个固定数据包,推送到流媒体地址,观看端然后去进行相应的拉取。在直播的时候,音视频源上的处理和消费从某种意义上来说可以说是实时的,对各方面的性能和技术处理要求是比较高的,而且在多路音视频流的播放上,非常容易出现混乱的情况,所以混流对于某些业务场景下,是非常适合的技术选择。

混流实际上是将多个数据流合并成单一的数据流的一个过程。同样的,也是独立的分成音频混流和视频混流。移动端的播放端在享受单一视频流的便捷的背后,需要服务端对于混流进行大量的难点处理。混流的难点有以下几点:

1. 多个主播在推流的时候,时钟不是统一的;

2. 网络延时和不稳定以及传输过程中出现丢包;

3. 服务端需要消耗大量的计算资源同时对多个影视频进行编解码,影音同步;

一般我们会对视频进行缓冲来抵消网络抖动的影响。但是在网络状态差的时候,而且本身计算需要消耗一定的时间,延迟时间可能对用户造成一些比较差的体验,所以设计的时候,需要针对不同的网络情况进行一些非常细致的处理。经过一系列处理之后,才能在客户端实时观看音视频同步连贯的直播。

目前在直播系统开发中,主播连麦PK的功能是比较常见的,两路主播的音频,视频进行连麦对混流的要求就更高了,直播系统,在视频直播多人连麦的时候,会同时对多人视频和主播视频进行复杂的混流处理,在保证话音同步的同时形成一条统一的音视频源。极大的降低了流量压力,减轻压力就等于节约带宽,节约了带宽费用,并避免了因为同时接受多个音视频源而造成系统资源的消耗。市面上的直播系统有很多,系统背后的开发技术,团队实力同样重要。