新手入门:实现音视频通话
快速创建并进入房间,开始音视频通话;以下均为Objective-C代码,详细代码请参考Examples目录下Demo源代码。
基本步骤如下:
1. 初始化SDK
初始化是整个SDK的使用基础,通常在程序启动的时候进行初始化(init),退出的时候进行反初始化(uninit),整个程序的生命周期中只进行一次初始化和反初始化。
SDK内部的组件多为单例组件,整个程序中只能有一个实例,比如“基础组件”,“房间管理组件”,“视频房间组件”,具体请参见各个组件说明。
// 初始化SDK
SdkInitDat *sdkInitData = [[SdkInitDat alloc] init];
//必须指定日志文件路径,才能产生日志文件,并能够上传
[sdkInitData setSdkDatSavePath:[PathUtil searchPathInCacheDir:@"CloudroomVideoSDK"]];
//是否在控制台显示sdk日志
[sdkInitData setShowSDKLogConsole:YES];
//默认超时时间为60s
[sdkInitData setTimeOut:60*1000];
CRVIDEOSDK_ERR_DEF error = [[CloudroomVideoSDK shareInstance] initSDK:sdkInitData];
if (error != CRVIDEOSDK_NOERR)
{
MLog(@"CloudroomVideoSDK init error!");
[[CloudroomVideoSDK shareInstance] uninit];
}
相关API请参考:
相关结构定义请参考:
2. 登录连接视频服务器
设置视频服务器地址,然后使用appID和md5加密后的appSecret登录
- 调用接口:
CloudroomVideoSDK *cloudroomVideoSDK = [CloudroomVideoSDK shareInstance];
// 登录数据对象
LoginDat *loginData = [[LoginDat alloc] init];
// 昵称
[loginData setNickName:nickname];
// appID,使用开通SDK的账号
[loginData setAuthAcnt:account];
// 登录密码必须做MD5处理
[loginData setAuthPswd:md5Pswd];
// 用户ID
[loginData setPrivAcnt:nickname];
// 设置服务器地址
[cloudroomVideoSDK setServerAddr:server];
// 执行登录操作
NSString *cookie = [NSString stringWithFormat:@"%f",CFAbsoluteTimeGetCurrent()];
[cloudroomVideoMgr login:loginData cookie:cookie];
- 回调通知:
// 登陆失败
- (void)loginFail:(CRVIDEOSDK_ERR_DEF)sdkErr cookie:(NSString *)cookie {
}
// 登陆成功
- (void)loginSuccess:(NSString *)usrID cookie:(NSString *)cookie {
}
//sdk掉线
- (void)lineOff:(CRVIDEOSDK_ERR_DEF)sdkErr
{
}
相关API请参考:
3. 创建房间
输入房间标题,创建一个没有密码的房间
- 调用接口:
// 发送"创建房间"命令(不设置密码)
[[CloudroomVideoMgr shareInstance] createMeeting:title createPswd:NO cookie:cookie];
- 回调通知:
// 创建房间成功
- (void)createMeetingSuccess:(MeetInfo *)meetInfo cookie:(NSString *)cookie
{
}
// 创建房间失败
- (void)createMeetingFail:(CRVIDEOSDK_ERR_DEF)sdkErr cookie:(NSString *)cookie
{
}
相关API请参考:
4. 进入房间
用创建成功的房间信息(房间ID和密码)进入房间,其他用户也是利用此房间信息进入该房间。
- 调用接口:
//进入房间
CloudroomVideoMeeting *cloudroomVideoMeeting = [CloudroomVideoMeeting shareInstance];
[cloudroomVideoMeeting enterMeeting:_meetInfo.ID pswd:_meetInfo.pswd userID:nickname nikeName:nickname];
- 回调通知:
- (void)enterMeetingRslt:(CRVIDEOSDK_ERR_DEF)code
{
if (code == CRVIDEOSDK_NOERR) {
//进入房间成功
} else if (code == CRVIDEOSDK_MEETROOMLOCKED) {
// 房间已加锁
} else {
//进入房间失败
}
}
相关API请参考:
5. 打开麦克风/摄像头
紧接第4步,进入房间成功后,打开自己的麦克风和摄像头,以便本地、远端显示自己的视频图像
// 默认使用前置摄像头
NSString *myUserID = [[CloudroomVideoMeeting shareInstance] getMyUserID];
NSMutableArray<UsrVideoInfo*>* myVideos = [[CloudroomVideoMeeting shareInstance] getAllVideoInfo:myUserID];
// 获取终端的所有摄像头,并设置默认的摄像头为前置摄像头
for (UsrVideoInfo vInfo in myVideos) {
if ([video.videoName isEqualToString:@"前置相机"] ||[video.videoName isEqualToString:@"正面相机"]) {
[[CloudroomVideoMeeting shareInstance] setDefaultVideo:myUserID videoID:vInfo.videoID];
break;
}
}
// 打开摄像头
[[CloudroomVideoMeeting shareInstance] openVideo:myUserID];
// 打开麦克风
[[CloudroomVideoMeeting shareInstance] openMic:myUserID];
// 开启外放
[[CloudroomVideoMeeting shareInstance] setSpeakerOut:true];
// 获取摄像头的相关配置, 设置分辨率为128
VideoCfg cfg = [[CloudroomVideoMeeting shareInstance] getVideoCfg];
cfg.sizeType = VSIZE_SZ_128;
// 保存摄像头配置到SDK
[[CloudroomVideoMeeting shareInstance] setVideoCfg:cfg];
相关API请参考:
相关结构定义请参考:
6. 观看他人视频
成功进入房间后,根据他人登录用户id ,设置并观看他人视频图像
创建成员视频UI显示组件,控件大小根据需求设置即可
CLCameraView * cameraView = [[CLCameraView alloc]initWithFrame:CGRectMake(0, 0, 160, 90)];
设置成员视频UI显示组件的相关摄像头Id
// 一对一视频情况下 观看他人的摄像头视频
NSString *myUserId = [[CloudroomVideoMeeting shareInstance] getMyUserID];
//我的视频显示控件
CLCameraView * myCameraView = [[CLCameraView alloc]initWithFrame:CGRectMake(0, 0, 160, 90)];
//我的用户id
UsrVideoId *uid = [[UsrVideoId alloc]init];
uid.userId = myUserID;
//-1表示观看默认摄像头
uid.videoID = -1;
[myCameraView setUsrVideoId:uid];
//显示对方视频控件
CLCameraView * otherCameraView = [[CLCameraView alloc]initWithFrame:CGRectMake(100, 0, 160, 90)];
//获取订阅视频
NSMutableArray<UsrVideoId*> *videos = [[CloudroomVideoMeeting shareInstance] getWatchableVideos];
//获取对方UsrVideoId,显示对方视频
for (UsrVideoId usrVideoId in videos) {
if (!usrVideoId.userId.equals(myUserId)) {
[otherCameraView setUsrVideoId:usrVideoId];
}
}
相关API请参考:
相关结构定义请参考:
7. 退出房间
// 离开房间
[[CloudroomVideoMeeting shareInstance] exitMeeting];
相关API请参考:
8. 反注册登陆
// 反注册登录
[[CloudroomVideoMgr shareInstance] logout];
相关API请参考:
9. 反初始化,退出SDK
执行反初始化后SDK功能不再可用。
//反初始化
[[CloudroomVideoSDK shareInstance] unInit];
相关API请参考: