全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
视频直播

副麦退出连麦

更新时间:2017-09-06 11:46:48

  1. 副麦B向APP Server发送结束连麦的通知,然后结束连麦(即停止推流、停止播放主播和副麦A的播放地址,开始播放混流地址)。

    (客户端代码:LifecycledPlayerMgr.java文件中)

    1. mInviteServiceBI.leaveCall(mUID, mLiveRoomID, new ServiceBI.Callback()
  2. APP Server调用AliLive的混流接口,B退出混流画面。

    (APP Server端代码:service\videocall.js文件中,调用OpenAPI接口RemoveMultipleStreamMixService)

    1. static removeToMix(mainRoomId, roomId, uid, name) {
    2. console.log(`退出连麦:mainRoomId=${mainRoomId} roomId=${roomId}`);
    3. return new Promise((resolve, reject) => {
    4. //退出连麦
    5. cdn.removeToMix(mainRoomId, roomId).then(() => {
    6. VideoCall.remove(mainRoomId, uid + "|" + roomId);
    7. VideoCall.removeMainBy(roomId, mainRoomId);
    8. live.setProperty(roomId, 'mixedStatus', 2); //离开连麦
    9. let msg = dqUtil.createMqttMsg({
    10. mainRoomId: mainRoomId,
    11. roomId: roomId,
    12. playUrl: address.getShortRtmpPlayUrl(roomId),
    13. uid: uid,
    14. name: name
    15. }, 19);
    16. //退出连麦通知
    17. mns.publish(mainRoomId, msg, 5);
    18. resolve("");
    19. }, (err) => {
    20. reject(err);
    21. })
    22. });
    23. }
  3. APP Server发送副麦B退出直播的消息给主播及A、B、C。

    (APP Server端代码:service\videocall.js文件中)

    1. //退出连麦通知
    2. mns.publish(mainRoomId, msg, 5);
  4. 主播与B停止连麦(即结束播放B的播放地址)。

    (客户端代码:PublisherSDKHelper.java文件中,调用SDK接口removeChats)

    1. mChatHost.removeChats(urls);
    2. mChattingUrls.removeAll(urls);
    3. if (mChattingUrls.size() == 0) {
    4. mStatus ^= STATUS_CHATTING;
    5. }
  5. 副麦A与B停止连麦(即结束播放B的播放地址)。

    (客户端代码:PlayerSDKHelper.java文件中,调用SDK接口offlineChat)

    1. public void abortChat() {
    2. if (mChatParter != null && isChatting) {
    3. Log.d(TAG, "Call mChatParter.offlineChat()");
    4. mCallback.onEvent(IPlayerMgr.TYPE_PARTER_OPT_START, null);
    5. mChatParter.offlineChat();
    6. isChatting = false;
    7. hasOnlineChats = false;
    8. }
    9. }
本文导读目录