差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:applet:multiuserconference [2020/02/14 02:42]
zhangdong [接口说明]
— (当前版本)
行 1: 行 1:
-====== 集成文档 ====== 
-**多人音视频SDK**基于微信小程序live-pusher、live-player组件, 
- ​小程序实时音视频目前只支持多人音视频会议,尚不支持1对1的通话,如果有1对1的需求也可以用多人会议的场景去实现,相当于会议中只有两个人。音视频SDK依赖IM SDK,所以集成前要先集成IM,把IM SDK放在全局变量wx下,let WebIM = wx.WebIM = require('​sdk/​connection'​),可以参考[[https://​github.com/​easemob/​webim-weixin-xcx|demo]]中src/​comps/​chat/​multiEmedia的集成。 
  
-==== 下载 ==== 
- 
-下载**emedia_for_miniProgram.js**。 
-  * 通过github [[https://​github.com/​easemob/​webim-weixin-xcx|仓库地址]] 
-  * 通过官网下载[[http://​www.easemob.com/​download/​im|下载地址]] 
- 
-音视频SDK在src/​emedia/​emedia_for_miniProgram.js 
- 
-==== 集成 ==== 
-直接引用js: 拷贝文件 emedia_for_miniProgram 到小程序工程文件夹,使用 require 将 SDK 集成到项目中即可: 
-<code javascript>​ 
-var emedia = require("​../​emedia/​emedia_for_miniProgram.js"​);​ 
-</​code>​ 
-==== 集成步骤 ==== 
-=== 发起会议 === 
-== 1.调用 createConference,在回调中可以得到confr对象;创建者默认为管理员 == 
-<code javascript>​ 
-emedia.mgr.createConference(confrType,​ password).then(function(confr){ 
-    //confr 即为创建的会议 
-    //将ID password 发送给其他人 
-}) 
-</​code>​ 
-== 2.加入会议 == 
-<code javascript>​ 
-emedia.mgr.joinConferenceWithTicket(confrId,​ ticket, ext).then(function(confr){ 
-    //confr 即为创建的会议 
-}) 
-</​code>​ 
-== 3.发布本地视频流 == 
-<code javascript>​ 
-emedia.mgr.pubStream(rtcId).then(function(res){ 
-  // 将返回的res.data.rtmp 赋值给live-pusher的src就可以推流了 
-}) 
-</​code>​ 
-== 4.sdk调用emedia.mgr.onMemberJoin(member,​ stream) 告知进入的人 == 
-== 5.sdk调用emedia.mgr.onStreamAdded(member,​ stream) 告知进入的人发布的流情况,在这个回调里拿到视频流去调subStream订阅流 == 
-== 6.可根据需要进行订阅emedia.mgr.subStream(streamId) == 
-== 7.onMemberExited:​当有人离开会议,onRoleChanged自己在会议中角色改变;onStreamRemoved某人取消流发布;onConferenceExit会议退出 == 
- 
-=== 其他人进入会议 === 
-== 1.调用 joinConference,再回调中可以得到confr对象;创建者默认为管理员 == 
-<code javascript>​ 
-emedia.mgr.joinConference(confrId,​ password, ext).then(function(confr){ 
-    //confr 加入会议 
-}) 
-</​code>​ 
-== 2.sdk调用emedia.mgr.onMemberJoin(member,​ stream) 告知进入的人 == 
-== 3.sdk调用emedia.mgr.onStreamAdded(member,​ stream) 告知进入的人发布的流情况 == 
-== 4.可根据需要进行订阅 == 
-<code javascript>​ 
-emedia.mgr.subStream(streamId).then(function(res){ 
-  //​将返回的res.data.rtmp赋值给live-player的src就可以播放了 
-}) 
-</​code>​ 
-== 5.onMemberExited:​当有人离开会议,onRoleChanged自己在会议中角色改变;onStreamRemoved某人取消流发布;onConferenceExit会议退出 == 
- 
-==== SDK回调 ==== 
-1.有人加入会议,其他人调用joinXX等方法,如果加入成功,已经在会议中的人将会收到 
-<code javascript>​ 
-emedia.mgr.onMemberJoined = function (member) {}; 
-</​code>​ 
- 
-2.有人退出会议 
-<code javascript>​ 
-emedia.mgr.onMemberExited = function (member) {}; 
-</​code>​ 
- 
-3.有媒体流添加;比如有人调用pubStream之后。 
-<code javascript>​ 
-emedia.mgr.onStreamAdded = function (member, stream) {}; 
-</​code>​ 
-4.有媒体流移除; 
-<code javascript>​ 
-emedia.mgr.onStreamRemoved = function (member, stream) {}; 
-</​code>​ 
-5.角色改变; 
-<code javascript>​ 
-emedia.mgr.onRoleChanged = function (role) {}; 
-</​code>​ 
-6.会议退出;自己主动退出,服务端主动关闭; 
-<code javascript>​ 
-emedia.mgr.onConferenceExit = function (reason, failed) { 
-    reason = (reason || 0); 
-    switch (reason){ 
-        case 0: 
-            reason = "​正常挂断";​ 
-            break; 
-        case 1: 
-            reason = "​没响应";​ 
-            break; 
-        case 2: 
-            reason = "​服务器拒绝";​ 
-            break; 
-        case 3: 
-            reason = "​对方忙";​ 
-            break; 
-        case 4: 
-            reason = "​失败,​可能是网络或服务器拒绝";​ 
-            if(failed === -9527){ 
-                reason = "​失败,​网络原因";​ 
-            } 
-            if(failed === -500){ 
-                reason = "​Ticket失效";​ 
-            } 
-            if(failed === -502){ 
-                reason = "​Ticket过期";​ 
-            } 
-            if(failed === -504){ 
-                reason = "​链接已失效";​ 
-            } 
-            if(failed === -508){ 
-                reason = "​会议无效";​ 
-            } 
-            if(failed === -510){ 
-                reason = "​服务端限制";​ 
-            } 
-            break; 
-        case 5: 
-            reason = "​不支持";​ 
-            break; 
-        case 10: 
-            reason = "​其他设备登录";​ 
-            break; 
-        case 11: 
-            reason = "​会议关闭";​ 
-            break; 
-    } 
-}; 
-</​code>​ 
- 
-==== 接口说明 ==== 
- 
-1.常量 
-<code javascript>​ 
-// 会议类型 
-emedia.mgr.ConfrType = { 
-   ​COMMUNICATION:​ 10, //​普通会议模式 
-   ​COMMUNICATION_MIX:​ 11, //​大会议模式 
-   LIVE: 12, //​直播模式 
-}; 
- 
-// 角色 
-emedia.mgr.Role = { 
-    ADMIN: 7, //​管理员(可推送视频、可解散会议、可踢人、可变更其他人角色,会议创建者默认为管理员) 
-    TALKER: 3, // 主播(可发言、可观看) 
-    AUDIENCE: 1 // 观众(仅可以观看) 
-}; 
-</​code>​ 
- 
-2.conference|confr 
-<code javascript>​ 
-// 会议对象 
-{ 
-    confrId:"​TS_X296786295944036352C27",​ 
-    id:"​TS_X296786295944036352C27",​ 
-    password: "​password123",​ 
-    roleToken:"​roleToken",​ 
-    ticket:"​ticket",​ 
-    type:12 
-} 
-</​code>​ 
-3.member 
-<code javascript>​ 
-// 成员对象 
-{ 
-    "​ext":​{ //​emedia.mgr.joinConference(confrId,​ password, {role: '​admin'​})/​* 用户可自定义扩展字段*/​);​ 
-        "​role":"​admin"​ 
-    }, 
-    "​id":"​MS_X197721744293023744C19M197756407719972865VISITOR",​ 
-    "​globalName":"​easemob-demo#​chatdemoui_yss000@easemob.com",​ 
-    "​name":​ "​yss000"​ 
-} 
-</​code>​ 
-4.stream 
-<code javascript>​ 
-// 视频流对象 
-{ 
-    "​id":"​RTC2__Of_C19M197756407719972865VISITOR",​ 
-    "​voff":​0,​ //1 视频关闭 
-    "​aoff":​0,​ //1 音频关闭 
-    "​memId":"​MS_X197721744293023744C19M197756407719972865VISITOR",​ 
-    "​owner":​ member ,//​member对象 
-    "​rtcId":"​RTC1"​ 
-} 
-</​code>​ 
- 
-5.创建会议 
-<code javascript>​ 
-/** 
- * @method createConference 创建会议 
- * @param {string} confrType 会议类型 
- * @param {string} password 会议密码 
- * @param {boolean} rec 是否录制 默认false 
- * @param {boolean} recMerge 是否合并 默认false 
- */ 
-emedia.mgr.createConference(confrType,​ password).then(function(confr){ 
-    //confr 即为创建的会议 
-}) 
-</​code>​ 
-6.获取加入会议ticket 
-<code javascript>​ 
-/** 
- * @method getConferenceTkt 申请tickit 
- * @param {string} confrId 会议id 
- * @param {string} password 会议密码 
- */ 
-emedia.mgr.getConferenceTkt(confrId,​ password).then(function(tickit){ 
- 
-}) 
-</​code>​ 
-7.销毁会议 
-<code javascript>​ 
-/** 
- * @method destroyConference 解散会议 
- * @param {string} confrId 会议id 
- */ 
-emedia.mgr.destroyConference(confrId).then(function(){ 
- 
-}) 
-</​code>​ 
-8.踢人 
-<code javascript>​ 
-/** 
- * @method kickMembersById 踢人 
- * @param {string} confrId 会议id 
- * @param {Array} memberNames 踢出的人 
- */ 
-emedia.mgr.kickMembersById(confrId,​ memberNames).then(function(){ 
- 
-}) 
-</​code>​ 
-9.改变角色 
-<code javascript>​ 
-/** 
- * @method grantRole 改变角色 
- * @param {string} confrId 会议id 
- * @param {Array} memberNames 人员 
- * @param {string} role 角色 
- */ 
-emedia.mgr.grantRole(confrId,​ memberNames,​ role).then(function(){ 
- 
-}) 
-</​code>​ 
- 
-10.使用用户名密码加入会议,可自定义ext,其他会议成员将会看到 
-<code javascript>​ 
-/** 
- * @method joinConference 加入会议 
- * @param {string} confrId 会议id 
- * @param {string} password 会议密码 
- * @param {Object} ext 扩展 
- */ 
-emedia.mgr.joinConference(confrId,​ password, ext).then(function(){ 
- 
-}) 
-</​code>​ 
-11.使用ticket加入会议,可自定义ext,其他会议成员将会看到 
-<code javascript>​ 
-/** 
- * @method joinConferenceWithTicket 加入会议 
- * @param {string} confrId 会议id 
- * @param {string} ticket 会议ticket 
- * @param {Object} ext 扩展 
- */ 
-emedia.mgr.joinConferenceWithTicket(confrId,​ ticket, ext).then(function(){ 
- 
-}) 
-</​code>​ 
-12.退出会议 
-<code javascript>​ 
-emedia.mgr.exitConference();​ 
-</​code>​ 
-13.发布媒体流 
-<code javascript>​ 
-/** 
- * @method pubStream 发布视频流 
- * @param {string} rtcId 视频流id 自己发布流时rtcId = wx.emedia.util.getRtcId() 
- * @param {Object} ext 用户自定义扩展,其他成员可以看到这个字段 
- */ 
-emedia.mgr.pubStream(rtcId).then(function(res){ 
-  // res.data.rtmp 为要推流的url 
-}) 
-</​code>​ 
- 
-14.订阅媒体流 
-<code javascript>​ 
-/** 
- * @method subStream 订阅视频流 
- * @param {string} streamId 视频流id 可以在onStreamAdded中获取其他人的视频流id 
- */ 
-emedia.mgr.subStream(streamId).then(function(res){ 
-  // res.data.rtmp 为要播放的src 
-}) 
-</​code>​