小程序 + 腾讯云移动直播SDK
小程序
主要是推流标签和拉流标签;没什么好说的,看微信文档就行;
live-pusher //推流
live-player // 拉流 播放
腾讯云移动直播SDK
关于腾讯 M L V B 直播
var A = ’ webim_wx.js ’
var B = ’ mlvbliveroomcore.js ’
var C = ’ mlvbliveroomview.js ’
var D = ’ webim_handler.js ’
var E = ’ mlvb-live-room自定义标签’
必须项:
-
调用 A 中的 login方法进行 IM登录 —》 IM通信
-
调用 B 中的 login 方法登录房间服务(参数为: 腾讯云的sdkAppID,userSig, 后台账号userID) —》 MLVB直播
-
调用 B 中的 getRoomList 方法 查看直播房间列表,获取直播房间信息
-
通过不同标签来确定是创建房间还是进入房间,跳转路由为 MLVB 页面中,找到自定义mlvb组件,调用组件中的start方法进入直播间
-
调用start方法后,进入 C 中自动调用 该js文件中的 start方法,通过前面标签来判断是主播还是观众
主播开播:
-
在 C 中的start方法中确定为主播后 调用 B 中的 getPushURL方法 获取 推流地址,成功后把推流地址赋值给标签,之后将 C 中的监听事件方法 传给 B 中的 同等方法名 进行调用,找到live-pusher标签,调用标签方法中的 start 开始进行 推流
-
开始推流后,触发标签上的 bindstatechange 事件,实时获取推流情况,推流成功后 调用 create 方法调用 B 中的 createRoom 方法 来创建房间
-
创建房间成功后进入 D 中的 createBigGroup方法,在由该方法调用 A 中的 createGroup 方法创建 IM群
-
IM群创建成功后回到 B 中执行成功的回调 joinAnchor 方法加入推流,边推流边由innerMergerAnchors方法进入房间,进入房间后开启心跳即通知其他主播,由 E 中的RoomEvent监听事件 返回 创建房间成功
说人话: 获取推流地址 -》 创建房间 -》 创建群 -》 进入房间进入群
观众收看:
-
在 C 中的start方法中确定为观众后 执行 enter 方法,然后调用 B 中的 enterRoom 方法中的 proto_enterRoom 进房方法
-
在进房方法中,调用 D 中的 applyJoinBigGroup方法 在调用 A 中的 applyJoinBigGroup 进入大群
-
进群成功后,回到 proto_enterRoom 中 调用 getAnchors 获取房间信息,将房间信息返回给 C 中的 enter方法 由 playMixedUrl 方法赋值给标签
-
最后触发标签的 bindstatechange 事件,获取拉流情况, 由 E 中的RoomEvent监听事件 返回 进房通知
说人话: 进群(由进房方法触发进群操作) -》 进房 -》 获取房间信息 -》 赋值给标签进行拉流播放
连麦:
-
由观众端触发 requestJoinAnchor 请求连麦方法, 触发 D 方法中的 sendC2CCustomMsg 消息事件,收到消息后,向主播端发送连麦请求,由主播端控制同意还是拒绝连麦请求
-
主播同意后触发 C中的 respondJoinAnchor方法 在由 D 方法中的 sendC2CCustomMsg 消息事件,发送同意连麦消息,观众收到同意连麦消息后开始连麦
-
连麦过程: 停止观众的播放流 -》 获取推流地址 -》 开始推流 -》 推流成功 -》 加入推流(混流) -》 连麦成功
说人话: 观众请求连麦 -》 发送连麦消息 -》 主播同意 -》 主播发送同意连麦消息 -》 观众收到同意连麦消息,开始连麦 -》 连麦成功
// 主播拒接连麦也同样会发送拒接消息的 -》 观众收到拒绝消息 -》 连麦失败
// 中间的方法调用则忽略了,明白执行流程即可,从流程上寻找问题
发送文本消息:
-
主播或观众触发 sendTextMsg 方法,带上文本信息 + 发送人信息由 D 方法中的 sendCustomMsg 消息事件,向腾讯后台发送请求
-
在请求返回的成功信息中(查看RspMsgList是否为空,存在即执行收到消息回调),触发消息回调的方法中执行 D 方法中的 onBigGroupMsgNotify 处理消息
-
处理消息成功后 由 A 方法中的 receiveMsg 接受消息处理,然后触发消息通知,通知 E 标签收到消息事件,推送给全体群成员
说人话: 发送文本消息并请求 -》 请求成功的信息触发消息事件 -》 处理消息并推送消息
// 请求成功的消息之所以可以触发到消息事件,是一定要在创建直播房间的时候触发长轮询(长连接)事件
小程序中长这个样子:
MsgManager.resetBigGroupLongPollingInfo();
MsgManager.setBigGroupLongPollingOn(true); //开启长轮询
MsgManager.setBigGroupLongPollingKey(resp.LongPollingKey); //更新大群长轮询key (key值是创建直播房间成功后返回的)
MsgManager.setBigGroupLongPollingMsgMap(options.GroupId, 0); //收到的群消息置0
MsgManager.bigGroupLongPolling(); //开启长轮询
// 一定要开启哦 ! 要不然是不会触发消息事件的;
最后, 以上步骤都是慢慢摸索出来的,可能有些方法没有记录上去;加粗部分都是简略步骤,根据步骤来查看问题所在。
// 一个月薪2500的狗头,只能记录+分享它的狗生了…