更新记录

4.1.0(2021-07-21)

  1. 新增本地化语言支持(中文和英语);
  2. 更新实时音视频SDK到8.8.10254;
  3. 更新ImSDK到5.1.62;

4.0.0(2021-07-12)

  1. 新增本地化语言支持(中文和英语);
  2. 更新实时音视频SDK到8.8.10254;
  3. 更新ImSDK到5.1.62;
查看更多

平台兼容性

Android iOS
适用版本区间:4.4 - 11.0 适用版本区间:11 - 14

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


腾讯云多人视频会议

腾讯云多人视频会议, 提供多人视频会议功能,包括屏幕分享、美颜、低延时会议等在多人视频会议场景下的相关能力。

支持以下功能:

  • 主持人创主持人创建会议房间,参会人员输入房间号后进入会议。
  • 参会人员之间进行屏幕分享。
  • 支持发送各种文本消息和自定义消息。

使用教程

API 接口文档

技术支持

建议扫码添加我们,获取技术支持,协助接入和测试。

技术支持



微信号: ruanyunkeji006



快速开始

步骤1: 插件的加载和配置

  • 加载插件

首先,加载uniapp平台的原生插件,需要自定义基座后才能使用,您可以按照自定义基座文档进行。

其次,新建nvue文件,注意该插件必须在nvue中使用。

插件名称为: RY-TencentTrtcMeeting,

该插件为Component类型,需要使用标签对来引用。

<RY-TencentTrtcMeeting ref="meeting" v-bind:style = "{ width: playerWidth, height: playerHeight }"></RY-TencentTrtcMeeting>

备注:

可以通过改变width和height参数的大小,来改变视图容器的大小。

  • 腾讯云配置

注册或登录腾讯云账号,实名认证后,开通实时音视频

  1. 点击应用管理,进入应用列表;
  2. 点击 "创建应用",填入相关信息,创建新应用; 如果使用已有应用,则跳过这步;
  3. 点击"应用信息",进入应用详情;
  4. 在"应用信息"标签卡中,点击"SDKAppID"后面的复制按钮,复制SDKAppId,并保存该值为sdkAppId。
  • 签名生成

点击UserSig生成和校验,在"应用"选中应用,输入"用户名(userID)",点击"生成签名",来生成userSig。

如果想服务端生成签名,请参考如何计算UserSig

说明:

插件支持"自动签名",请联系我们的技术支持获取。

步骤2: 开始使用插件

init 初始化插件之后,才可以调用各个接口功能。

this.$refs.meeting.init({
    docPath: plus.io.convertLocalFileSystemURL('_doc')
}, ret => {
    console.log(ret);
});

步骤3: 设置监听器

调用设置监听器 setMeetingListener,监听会议的事件回调

this.$refs.meeting.setMeetingListener({}, ret => {
    console.log(ret);
});

步骤4: 登录

调用 login 函数完成组件的登录,请填写以下关键参数:

参数名 作用
sdkAppId 您可以在 实时音视频控制台 中查看 sdkAppId
userId 当前用户的Id,字符串类型,只允许包含英文字母(a-z、A-Z)、数字(0-9)、连词符 - 和下划线 _
userSig 用户签名
this.$refs.meeting.login({
    sdkAppId: 1423xx38,
    userId: 'test001',
    userSig: 'jkwic1xxx2mn12'
}, ret => {
    console.log(ret);
});

步骤5: 创建多人会议

  1. 主持人执行 步骤4 登录后,可以调用 setSelfProfile 设置自己的昵称和头像。
  2. 主持人调用 setMeetingListener 可以进行事件监听,调用 createMeeting 创建新的会议房间。
  3. 主持人可以调用 startCameraPreview 进行视频画面的采集,也可以调用 startMicrophone 进行声音的采集。

说明:

非企业版 SDK 不支持变脸和贴图挂件功能,如果有企业版需求,请联系我们上方的技术客服。

创建多人会议

// 1.主播设置昵称和头像
this.$refs.meeting.setSelfProfile({
    userName: 'A',
    avatarUrl: 'http://xxx.myqcloud.com/xxx.png'
}, ret => {
    console.log(ret);
});

// 2.主播创建房间
this.$refs.meeting.createMeeting({
    roomId: self.roomId
}, ret => {
    if (ret.status) {
        // 创建房间成功
        this.$refs.meeting.startCameraPreview({
            isFront: true,
            rect: {
                x: 0, 
                y: 0, 
                w: self.playerWidth,
                h: self.playerHeight
                }
        }, ret => {
            console.log(ret);
        });
        this.$refs.meeting.startMicrophone({}, ret => {
            console.log(ret);
        });
    }
});

步骤6:参会成员进入多人会议

  1. 参会成员执行 步骤4 登录后,可以调用 setSelfProfile 设置自己的昵称和头像。
  2. 参会成员调用 enterMeeting 并传入会议房间号即可进入会议房间。
  3. 参会成员可以调用 startCameraPreview 进行视频画面的采集,调用 startMicrophone 进行声音的采集。
  4. 如果有其他的参会成员打开了摄像头,会收到 onUserVideoAvailable 的事件,此时可以调用 startRemoteView 并传入 userId 开始播放。

成员进入

// 1. 参会成员设置昵称和头像
this.$refs.meeting.setSelfProfile({
    name: 'A', 
    avatarUrl: 'http://xxx.myqcloud.com/xxx.png'
}, ret => {
    console.log(ret);
});

// 2. enterMeeting 函数实现
this.$refs.meeting.enterMeeting({
    roomId: 1234
}, ret => {
    if (ret.status) {
        this.$refs.meeting.startCameraPreview({
            rect: {
                x: 0, 
                y: 0, 
                w: self.playerWidth, 
                h: self.playerHeight
            }
        }, ret => {
            console.log(ret);
        });
        this.$refs.meeting.startMicrophone({}, ret => {
            console.log(ret);
        });
    } else {
        console.log('进入会议失败: ' + ret.msg);
    }
});
this.$refs.meeting.setMeetingListener({}, ret => {
    if (ret.hasOwnProperty('eventType')) {
        //收到回调,并调用 startRemoteView,传入 userId 开始播放
        if ('onUserVideoAvailable' == ret.eventType && ret.available) {
            this.$refs.meeting.startRemoteView({
                userId: ret.userId, 
                rect: {
                    x: 0, 
                    y: 0, 
                    w: self.playerWidth / 2, 
                    h: self.playerHeight / 2
                }
            }, ret => {
                console.log(ret);
            });
        } else {
            this.$refs.meeting.stopRemoteView({
                userId: ret.userId
            }, ret => {
                console.log(ret);
            });
        }
    }
});

步骤7:屏幕分享

  1. 调用 startScreenCapture,传入编码参数即可实现屏幕分享功能,具体信息请参见示例代码。
  2. 会议中其他成员会收到 onUserVideoAvailable 的事件通知。

注意:

屏幕分享和摄像头采集是两个互斥的操作,如果需要打开屏幕分享功能,请先调用stopCameraPreview 关闭摄像头采集。

this.$refs.meeting.startScreenCapture({
    videoEncParam: self.videoEncParam, 
}, ret => {
    console.log(ret);
});

步骤8:实现文字聊天和禁言消息

即时通信 IM 后台有默认的敏感词过滤规则,被判定为敏感词的文本消息不会被云端转发。

// 发送端:发送文本消息
this.$refs.meeting.sendRoomTextMsg({
    msg: 'Hello World!'
}, ret => {
    console.log(ret);
});

this.$refs.metting.setMeetingListener({}, ret => {
    if (ret.hasOwnProperty('eventType')) {
        // 接收端:监听文本消息
        if ('onRecvRoomTextMsg' == ret.eventType) {
            console.log('收到来自:' + ret.userInfo.userId + '的消息' + ret.message);
        }
    }
});

自定义消息常用于传输自定义信令,例如用于禁言之类的会场控制等。

// 发送端:您可以通过自定义 Cmd 来区分禁言通知
// eg:"CMD_MUTE_AUDIO"表示禁言通知
this.$refs.meeting.sendRoomCustomMsg({
    cmd: 'CMD_MUTE_AUDIO',
    msg: '1'
}, ret => {
    console.log(ret);
});

this.$refs.metting.setMeetingListener({}, ret => {
    if (ret.hasOwnProperty('eventType')) {
        // 接收端:监听自定义消息
        if ('onRecvRoomCustomMsg' == ret.eventType) {
            console.log('收到来自:' + ret.userInfo.userId + '的禁言通知' + ret.message);
        }
    }
});

更多功能

  • 调整视图大小和位置、视图覆盖等;
  • 美颜功能;
  • 自动签名;
技术支持



微信号: ruanyunkeji006



隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android: "android.permission.INTERNET", "android.permission.ACCESS_NETWORK_STATE", "android.permission.ACCESS_WIFI_STATE", "android.permission.WRITE_EXTERNAL_STORAGE", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.RECORD_AUDIO", "android.permission.MODIFY_AUDIO_SETTINGS", "android.permission.BLUETOOTH", "android.permission.CAMERA", "android.permission.READ_PHONE_STATE", "android.hardware.camera", "android.hardware.camera.autofocus" iOS: 无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的腾讯云实时音视频 SDK会采集数据,详情可参考:https://cloud.tencent.com/document/product/647/16788

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问