实现音视频通话
简要说明
- 快速创建并进入房间,开始音视频通话;以下均为javascript代码,详细代码请参考Examples目录下Demo源代码。
- 请先完成开发环境准备,并确认音视频设备工作正常。
1. 初始化SDK
初始化是整个SDK的使用基础,通常在程序启动的时候进行初始化(init),退出的时候进行反初始化(uninit),整个程序的生命周期中只进行一次初始化和反初始化。
SDK内部的组件多为单例组件,整个程序中只能有一个实例,比如“基础组件”,“房间管理组件”,“视频房间组件”,具体请参见各个组件说明。
// 获取包内路径下的document文件夹
const path = await new Promise((resolve, reject) => {
plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, function(fs) {
resolve(fs.root.fullPath);
}, function(e) {
console.log("Request file system failed: " + e.message);
reject(e)
});
})
// 初始化SDK
RTCSDK.init({
sdkDatSavePath: path, //SDK内部使用文件位置
noCall: false,
noQueue: false,
noMediaDatToSvr: null,
timeOut: 120000,
datEncType: "1",
}, (sdkErr) => {
if (sdkErr !== 0) {
console.log(`初始化失败,错误码: ${sdkErr}`);
return;
}
})
相关API请参考:
相关结构定义请参考:
2. 登录连接视频服务器
设置视频服务器地址,使用AppID、AppSecret和自定义用户编号登录
- 调用接口:
// 设置服务器地址
RTCSDK.setServerAddr(server);
// 登录数据对象
const loginObj = {
appId: appId, // appID,使用开通SDK的账号
appSecret: md5(appSecret), // appSecret必须做MD5处理
userId: userId, // 用户ID
nickName: nickName, // 昵称
}
// 执行登录操作
RTCSDK.login(loginObj);
- 回调通知:
// 登陆失败
RTCSDK.on("loginFail", ({ sdkErr }) => {
})
// 登陆成功
RTCSDK.on("loginSuccess", ({ userID }) => {
})
//掉线
RTCSDK.on("lineOff", ({ sdkErr }) => {
})
相关API请参考:
3. 创建房间
创建一个房间
- 调用接口:
// 创建房间
RTCSDK.createMeeting();
- 回调通知:
// 创建房间成功
RTCSDK.on("createMeetingSuccess", ({ ID }) => {
})
// 创建房间失败
RTCSDK.on("createMeetingFail", ({ sdkErr }) => {
})
相关API请参考:
4. 进入房间
用创建成功的房间ID进入房间,其他用户也是利用此房间号进入该房间。
- 调用接口:
RTCSDK.enterMeeting(ID);
- 回调通知:
RTCSDK.on("enterMeetingRslt", ({ sdkErr }) => {
if(sdkErr === 0) {
// 进入房间成功
}
})
相关API请参考:
5. 打开麦克风/摄像头
紧接第4步,进入房间成功后,打开自己的麦克风和摄像头,以便本地、远端显示自己的视频图像
//获取前后置摄像头配置
const videoPosition = RTCSDK.getMyVideoPosition();
//设置前置摄像头为默认摄像头
RTCSDK.setDefaultVideo(myUserID, videoPosition.front);
// 打开摄像头
RTCSDK.openVideo(myUserID);
// 打开麦克风
RTCSDK.openMic(myUserID);
// 开启外放
RTCSDK.setSpeakerOut(true);
// 获取摄像头的相关配置
const cfg = RTCSDK.getVideoCfg();
//配置分辨率为640x360
cfg.size = { width: 640, height: 360 };
//配置码率为默认
cfg.maxbps = -1;
// 保存摄像头配置到SDK
RTCSDK.setVideoCfg(cfg);
相关API请参考:
相关结构定义请参考:
6. 观看他人视频
成功进入房间后,根据他人登录用户id ,设置并观看他人视频图像
创建成员视频UI显示组件
<template>
<rtcsdk-video-view style="width: 750rpx;height:300rpx" :usrVideoId="{userId: userId}" />
</template>
<script>
export default {
data() {
return {
userId: '', //修改为需要观看的用户id
};
}
}
</script>
相关API请参考:
7. 退出房间
// 离开房间
RTCSDK.exitMeeting();
相关API请参考:
8. 注销登录
//注销本次登录
RTCSDK.logout();
相关API请参考:
9. 反初始化,退出SDK
执行反初始化后SDK功能不再可用。
//反初始化
RTCSDK.uninit();
相关API请参考: