欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~小程序
本文做者,rexchang(常青),腾讯视频云终端技术总监,2008 年毕业加入腾讯,一直从事客户端研发相关工做,前后参与过 PC QQ、手机QQ、QQ物联等产品项目,目前在腾讯视频云团队负责音视频终端解决方案的优化和落地工做,帮助客户在可控的研发成本投入之下,得到业内一流的音视频解决方案,目前咱们的产品线包括:互动直播、点播、短视频、实时视频通话,图像处理,AI等等。服务器
最近腾讯云移动直播团队一直在“游手好闲”的打造小程序音视频解决方案,咱们一直以来的主营业务之一——秀场直播,在过去几个月的时间里则有点“不思进取”。不过随着近期人力的补充,以及微信版本的逐步稳定,咱们在直播方案里的步伐也会进一步加快,盼你们可以继续保持对咱们的承认。微信
今天要介绍的就是主播连麦PK方案,经过这篇文章,咱们将一块儿来了解什么是主播连麦PK?以及怎么快速实现主播间的连麦PK?网络
连麦PK就是正在直播中的两个主播,经过相互协商或者后台匹配的方式进入PK状态。一旦进入PK状态,本来独自直播的两个主播,就能够相互视频通话。与此同时,观众端能看到的画面也一分为二,从原来的一个主播变成左右两个主播。这种直播模式能够增长直播间的活跃气氛,为平台带来更多的互动性。并发
咱们先从最初的需求入手,看看最简单的实现方案是什么。从前面一张图咱们就能够看出,要想实现连麦PK,最简答的办法就是两个主播各自把两路画面混在一块儿,以下图所示:
性能
主播 A 把本身手机摄像头的画面 local(A) 和来自网络上的主播 B 的画面 remote(B) 混合在一块儿,再次进行编码和压缩并推送到云端。这样一来,本来主播 A 的观众就能够看到画面中多出了主播 B 的画面。与此同时,若是主播 B 也进行相似的操做,就能够把本身摄像头的画面 local(B) 和 来自于网路的主播 A 的画面 remote(A) 混合在一块儿。这样,主播 B 的观众也就能同时看到 A 和 B 的画面了。优化
可是这种方法有个小问题 —— 主播的手机要作的事情太多:ui
为了解决性能问题,咱们须要作的是给主播减负。编码
那要怎么减负呢?是否是能够把工做一和工做二,这两项工做去掉?3d
不行不行,这两项工做是用来作视频通话的,若是减掉了,那主播的 PK 就无从谈起。
工做三和工做四是否是能够减掉?
其实也是减不掉的,不过咱们能够把它搬到云端,在服务器上完成画面的拼接和计算,而不是在终端完成这些工做。
如上图:当主播 A 和主播 B 开始 PK 后,两边的观众就再也不继续从原来的线路上拉流观看了,而是重新的实时音视频云端拉流观看(上图中橙色箭头所示的部分)。这样一来,咱们就能够把画面的混合和再次编码的任务放在云端进行。
可是这种方案也不是最完美的,由于从普通直播进入到 PK 状态的过程当中,观众端的画面会因为线路切换的缘由,出现一段时间的卡顿。
腾讯云的连麦PK方案则很好的解决了线路切换问题:
因为腾讯云自己既有支撑斗鱼、虎牙的常规直播解决方案,又有多年的QQ视频通话技术积累,因此腾讯的视频云自己就是一个混合云,自己既能够实现常规的直播CDN分发,又能支持高质量低延时的实时音视频线路。所以,咱们的方案很是清晰简单:直接在原来的直播线路上叠加一路PK画面:
这样一来,本来在观看主播 A 和 主播 B 的观众,不会遭遇任何的画面二次加载和卡顿等待,只是会看到本来一个画面一分为二,天然而然的进入到 PK 状态。
腾讯云采用了两套音视频通道实现主播连麦PK功能,一套是标准直播采用的 CDN 线路,带宽成本低廉且没有并发限制。主播间 PK 所依赖的视频通话,则采用私有的 UDP 传输协议,走专门为下降通信时延而准备的专线线路。
若是您但愿使用腾讯云的直播PK功能,能够参考咱们的接入文档 LiveRoom(PK)。须要特别说明的是,这套方案还支持观众与主播的连麦,而且终端和后台代码均是开源的,支持自行部署,可以让您拥有很是充分的定制空间。
问答
小程序能够实现哪些音视频解决方案?
相关阅读
杨春文:小程序在直播产品中的技术应用
如何实现直播中手绘礼物?
除了直播,VR+体育还有哪些打开方式?
此文已由做者受权腾讯云+社区发布,原文连接:https://cloud.tencent.com/developer/article/1139584?fromSource=waitui
欢迎你们前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~