直播多人连麦技术简介

前言

随着直播行业的发展,平台玩法愈来愈多。其中秀场连麦直播玩法人气较高,一方面改变了主播与观众对立的体验,另外一方面拉近了主播与观众的距离,对于拉动主播收入平台营收起到了十分重要的做用。在此衍生出来的如PK,付费问答,语音连麦等玩法成为各大直播平台的标配。网络

本篇文章将分享直播移动端直播连麦的技术实现架构,仅为抛砖引玉,为各位在技术选型时提供必定的思路。欢迎交流。架构

技术架构

首先从技术架构的角度来讲,直播连麦的实现方案大致能够分为三种。这三种方案都是前辈大佬们实践总结出来的经验。在此感谢。性能

传统直播形式如图所示,是一个主播推流,广播给直播间全部的观众。而全部的观众进入直播间时,去拉去当前直播间主播的流。这里的特征是,一个直播间对应一个主播,而且仅有一路推拉流。优化

连麦的直播形式如图所示,是两个主播(另外一个主播多是观众)推流,广播给直播间全部观众。而全部的观众进入直播间,并不必定是拉取一个流,一个直播间也并不必定对应的是一个主播,这些区别会在下文展开。这里的特征是两个或以上主播。 3d

1. 基于RTMP协议优化方案cdn

此方案是在原有直播基础上衍生出来的实现方案。主播A和主播B之间经过原有的推拉流路径去拉取对方的流内容。也就是说,主播A在推流同时,拉取主播B的流,主播B推流的同时拉取主播A的流。对于两个主播来讲互为对方的观众。此时对于直播间内的其余观众而言,是分别拉取主播A和主播B的流,并展现出来。视频

能够看出,主播A和主播B之间并没有直接链接,而是经过拉取对方流来实现连麦。此方案优势是技术实现相对简单,服务端和客户端可在原有的直播基础上开发,兼容性好。可是缺点也是明显的:理想状况RTMP下的直播延迟大概须要3秒,主播AB之间的互动可能超过6秒,这在实际连麦体验中是至关差的,另外观众须要同时拉取两路流,对于网络要求,流量消耗,性能消耗,时间对齐都是不小的问题。有人提出优化CDN链接方式,优化主播间的节点,增长BGP,在必定程度上能够下降延迟。blog

在方案1的基础上,咱们能够总结出连麦的技术关键点:连麦的主播之间如何保证较低的延迟,提升实时性;主播之间的画面如何进行对齐,合成再统一广播给观众。 在此之上咱们须要准备的是两套系统:多人视频交互系统和标准CDN直播系统。开发

2. 基于P2P协议方案直播

此方案的实现方式是,主播A和主播B之间经过P2P协议进行音视频链接,正常状况下可以保证较低的延迟,保证主播A和主播B之间的互动。主播A在本身的流内容基础上加入主播B的流内容,统一推向服务端。此时直播间内仅有一路流,而且其余观众也只须要拉取这一路流内容。

此方案的优势是显而易见的,主播AB之间的延迟下降,交互体验好,观众保持原有逻辑不变,拉取直播间固定流地址。 可是缺点是:主播A在连麦过程当中须要承担两路推流一路拉流的压力,即拉取主播B的流内容,将本身的流内容推给主播B,将主播A和主播B的流内容推给服务端;主播A的网速压力和性能压力将会巨大,同时主播AB之间一对一的链接也致使扩展性较差,没法知足2人以上的业务场景需求。

3. 基于多人视频通话系统方案

此方案的实现方式是将主播A和主播B的视频交互交由第三方处理,目前比较成熟的技术有视频会议系统和Google开源的WebRTC系统。在此架构下,主播A与主播B的流合成处理上传都是由这个交互系统完成。此方案对于方案2来讲减轻了主播端的压力,而且采用UDP协议传输方式下降延迟。同时也兼容多人链接交互。 此方案缺点是对服务端开发量大,要求高。

总结

目前主流实现方案可能是基于方案3实现。同时有人提出SD-RTN的实现方案,在我看来此方案是方案3的优化升级版本,采用此方案确实可以下降开发量,但同时也须要付出运营成本,收费与开源选择哪个仍是要看具体的业务场景具体例子具体分析。

多人连麦技术还有许多须要改善的地方。随着技术的发展,将来会出现更优的实现方式,咱们拭目以待。