直播连麦功能之打通经脉


直播连麦功能之打通经脉


既然做了直播,和观众互动有的时候就很必要了

那又小伙伴可能会觉得群消息聊天能够完成互动的功能,但是群消息会随着直播房间的人数增多而变多,主播查看到有效消息的可能性就会降低,所以「连麦功能」可能会随着业务需求而添加进来。

那么本篇文章就来说下,集成完直播功能后,如何再集成连麦功能。

本篇旨在打通经脉,纯思想级别的,但是如果你现在项目着急,想粘贴复制一下就能完事,那本篇文章就不太适合了。建议直接看「小直播」官方demo。

好了,还是按照昨天的方式,一步一步的看吧~

查看腾讯云官方文档

查看官网连麦文档

同样,为什么推荐看官方的连麦文档,是因为只有熟悉了官方的这些指南,我们再编写逻辑的时候才能有据可依,否则就是瞎头苍蝇到处乱撞。

直播连麦功能之打通经脉


连麦的整个流程

整体的内部流程就是:

<code>1、把发起直播的人称为`大主播`,把想要连麦的人称为`小主播`
对应到上面的图里面,用户A 则为`大主播`,用户B 为`小主播`
2、`大主播`首先进行推流,推出的流「云加速」处理后成为 `RTMP_ACC`格式的流
这种流速度更快,延迟更低,`小主播`拉取`RTMP_ACC`的流,并且开始推流。
3、`小主播`推出的流「云加速」处理成为`RTMP_ACC`格式的流,连麦成立后
`大主播`拉取`小主播`推出来的流,这样双方都能看到彼此的流
4、`大主播`推出的流与`小主播`推出的流进行混流之后,经过处理,呈现给观众端
FLV/HLS 格式速度更快,观众端观看的延迟性更低
/<code>

搞清楚这个流程之后,就可以开始做连麦的功能了。

开始上手

在上手之前,需要先购买连麦的服务,否则不能使用。

官方解释:由于连麦功能会使用到高速专线来降低音视频传输延迟,这部分功能需要额外购买套餐包才能开通,否则移动直播的各端 SDK 只能使用云直播的普通服务(推流和拉流),并不能开启连麦功能。所以,只有等公司决定了,才能搞,否则就只能理论走一走了。

官方的Step10. 观众与主播连麦中,把具体的细节都描述出来了,这里截下图:

直播连麦功能之打通经脉

连麦操作流程



我们要做的就是此项,需要注意的是
MLVBLiveRoom 在设计上最多支持10人同时连麦,但出于兼容低端 Android 终端和实际体验效果的考虑,建议将同时连麦人数控制在6人以下。

拆分细节


腾讯云中提供了一个 MLVBLiveRoom 用来处理各种情况,「小直播」的 demo 中提供了MLVBLiveRoom 接口的实现类: MLVBLiveRoomImpl ,我们使用这个实现类来完成下面的九项操作

第一、小主播发起连麦请求(图中的第一步)

而我们可以利用 MLVBLiveRoom.requestJoinAnchor() 方法向主播端发起请求

第二、主播端接受小主播的连麦请求(图中的第二、三步)

观众发过来连麦请求,会触发 onRequestJoinAnchor() 回调的通知,通过调用MLVBLiveRoom.responseJoinAnchor() 方法来确定接受连麦请求

第三、小主播端收到主播的确定信息,开启本地预览模式,并且开始推流(图中的第四、五、六步)

IMLVBLiveRoomListener.RequestJoinAnchorCallback() 中会有主播是否同意连麦的结果,如果主播同意,调用 startLocalPreview() 开启本地摄像头,并调用 joinAnchor() 开始推流

第四、主播收到小主播的流,并展示(图中第七、八、九步)

小主播进入连麦状态,并且开始推流,那么大主播会收到 IMLVBLiveRoomListener.onAnchorEnter()的回调,通过 startRemoteView() 就能看到小主播的画面

需要注意的是:

大主播端可以同时接入 <10 个的连麦,但是由于手机性能要求,最大最好不要超过 6 个连麦者

所以当大主播这边的连麦人太多的话,kickoutJoinAnchor() 可以踢掉一连麦的小主播,小主播这边则可以通过 quitJoinAnchor() 自己退出连麦状态。


好,上边基本上就把连麦中的步骤给列了一下。但是实际开发中客户端同学可能还是一脸懵逼。因为连麦的开发是和后端同学一起协同的。

下面列一下后端同学需要处理的事项


直播连麦功能之打通经脉


下面再分别简述下

<code>* 直播开始后,主播的推流地址
* 直播开始后,观众端拉去主播流地址
* 小主播申请连麦成功后,因为需要推流,故需要小主播的推流地址
* 小主播推流成功后,大主播需要看到小主播的流,故需要拉取小主播的流地址,这个流是加速流,避免延迟
* 小主播推流成功后,为避免延迟,小主播也要将之前的播放流切换成为大主播流的加速流
* 大主播、小主播连麦成功后,观众端要看到两者合并的流,这个流就是混流地址,并且需要处理成为FLV/HLS 格式的流
/<code>

这六个流是需要后端处理的,客户端同学不要自己搞啊~


总结

结合着后端同学提供的六个流和上方的 四大步骤(9个小步骤),基本上就能将连麦功能开发出来了,具体的细节这篇文章就不再介绍了,腾讯云提供的「小直播」的 demo 中已经将直播相关的代码写的很清楚了

小直播github地址

但是如果仍然有问题,那么可以私信我。


分享到:


相關文章: