# 实现音视频通话
快速创建并进入房间,开始音视频通话;代码部分均为 js 代码,详细代码请参考 Examples 目录下 Demo 源代码。
请先准备开发环境准备中的相关内容:1.安装视频SDK插件, 2.运行环境要求, 3.开发环境配置以及连接相关的麦克风摄像头并确认设备工作正常。
基本步骤如下:
1. 初始化SDK
初始化是整个SDK的使用基础,通常在程序启动的时候进行初始化(CRVideo_Init2),退出后进行反初始化(CRVideo_Uninit),整个程序的生命周期中只进行一次初始化和反初始化。
//初始化 sdkUsePath 是SDK工作目录,用于存储配置文件、临时文件等,如果传空值,则默认为sdk的安装目录
var init = CRVideo_Init2(sdkUsePath);
//初始化失败会返回对应的错误码
if(init == CRVideo_WEB_OCX_NOTINSTALLED){
console.log("ocx未安装");
}else if(init == CRVideo_OCX_VERSION_NOTUPPORTED){
console.log("不支持的浏览器");
}else if(init == CRVideo_WEB_BROWER_NOTUPPORTED){
console.log("不支持的插件版本");
}else if(init != 0){
console.log("CRVideo_init2 出错了:"+init);
}else if(init == CRVideo_NOERR){
console.log("初始化成功,可以继续下面第 2 步……");
}
相关API请参考:
2. 登录连接视频服务器
设置视频服务器地址,然后使用appID和md5加密后的appSecret登录。(获取App ID及App Secret)
- 调用接口:
//设置服务器地址,如果使用云屋的云服务时填www.cloudroom.com,使用私有化部署的服务器时要填部署的服务器地址;此处以云屋的云服务为例。
CRVideo_SetServerAddr("www.cloudroom.com");
//登录
CRVideo_Login(appID, md5(appSecret), nickName, UID);
- 回调通知:
//登录成功
CRVideo_LoginSuccess.callback = function(userID,cookie){
//登录成功,开始创建房间,见 第3步
}
//登录失败
CRVideo_LoginFail.callback = function(sdkErr,cookie){
//登录出错,可以弹出错误提示,或调用登录接口再次重试登录
}
//登录掉线
CRVideo_LineOff.callback=function(sdkErr){
}
相关API请参考:
3. 创建房间
输入房间标题,创建一个没有密码的房间
- 调用接口:
//创建房间
CRVideo_CreateMeeting("房间的的主题长度50字内")
- 回调通知:
//创建房间成功
CRVideo_CreateMeetingSuccess.callback=function(meetObj,cookie){
//创建成功,可以进入房间
}
//创建房间失败
CRVideo_CreateMeetingFail.callback = function(sdkErr,cookie){
//创建失败,可以弹出错误提示,不能再执行 进入房间
}
相关API请参考:
4. 进入房间
用创建成功的房间信息(房间ID和密码)进入房间,其他用户也是利用此房间信息进入该房间。
- 调用接口:
//进入房间
CRVideo_EnterMeeting(meetID, meetPswd, UID, nickName, cookie);
- 回调通知:
//进入房间完成响应
CRVideo_EnterMeetingRslt.callback=function(sdkErr){
if(sdkErr == CRVideo_NOERR){
console.log("进入房间成功,可以继续下面第5步……");
}else{
console.log("进入房间失败,错误码:"+sdkErr);
}
}
//监控房间掉线
CRVideo_MeetingDropped.callback=function(){
}
相关API请参考:
5. 打开麦克风/摄像头
紧接第4步,进入房间成功后,打开自己的麦克风和摄像头,以便本地、远端显示自己的视频图像
//打开麦克风
CRVideo_OpenMic(UID)
//打开用户的摄像头,共4步
//1.创建
var myVideoUI = CRVideo_CreatVideoObj(); //调用接口,创建控件对象
myVideoUI.id("me_video_obj");
$("div.meVideoContainer").append(myVideoUI.handler()); //meVideoContainer 为DOM树中显示的div元素,这里是把创建的控件放入DOM树中
//2.设置宽高
myVideoUI.width(480);
myVideoUI.height(270);
//3.打开用户摄像头
CRVideo_OpenVideo(UID)
//4.设置视频流
setTimeout(function(){
myVideoUI.setVideo(UID);
}, 500);
相关API请参考:
6. 观看他人视频
成功进入房间后,根据他人登录id ,设置并观看他人视频图像
- 接口调用:
//1.调用接口,创建控件对象,显示他人视频图像
var otherVideoUI = CRVideo_CreatVideoObj();
otherVideoUI.id("other_video_obj");
$("div.otherVideoContainer").append(otherVideoUI.handler()); //把创建的控件放入DOM树中
//2.设置宽高
otherVideoUI.width(480);
otherVideoUI.height(270);
//3.设置视频流
setTimeout(function(){
otherVideoUI.setVideo(UID); //UID为他人的登录ID
}, 500);
7.退出房间
//退出房间
CRVideo_ExitMeeting()
相关API请参考:
8. 注销登录
//注销本次登录
CRVideo_Logout()
相关API请参考:
9.反初始化,退出SDK
执行反初始化后SDK功能不再可用。
//反初始化
CRVideo_Uninit();
相关API请参考: