音视频通话

实现音视频通话

简要说明

  • 快速创建并进入房间,开始音视频通话;以下均为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请参考: