云屋视频H5 SDK参考
说明
H5 SDK支持的浏览器有:
操作系统 | Chrome 58以上 | Firfox 58以上 | Safari 11以上 | qq浏览器最新版 | 微信浏览器最新版 |
---|---|---|---|---|---|
windows7以上 | 支持 | 支持 | 无 | 支持 | 支持 |
macOS 10.13及以上 | 支持 | 支持 | 支持 | 不支持 | 不支持 |
iOS 8.0及以上 | 不支持 | 不支持 | 支持 | 不支持 | 不支持 |
Android 4.4及以上 | 支持 | 无 | 无 | 支持 | 支持 |
开发准备
JavaScript 的开发工具有很多,开发者可根据自己的喜好进行选择。在此,我们推荐开发者使用VSCode 作为自己的开发工具,本套开发指南也是针对VSCode开发环境下进行编写的。
开发环境准备
- 网页开发时,因为webRTC支持的是https协议,所以要保证开发环境网页协议是https
导入SDK文件
将SDK包js子目录下的rtcsdk.min.js和jquery-1.8.0.min.js文件拷贝到自己的web开发环境当中
引用rtcsdk.min.js
<script type="text/javascript" src="js/rtcsdk.min.js"></script>
浏览器版本的支持说明
H5 SDK支持chrome 58及以上版本(chrome58版本后才支持webrtc),开发时尽量选择支持webrtc的浏览器:
基本流程
流程1:(不登录,只参加会议)SDK初始化 -> 设置服务器地址->(参会)-> 反初始化
流程2:(登录后拥有身份,可进行“排队、呼叫、创建会议、参会”等业务)SDK初始化 -> 设置服务器地址-> 登录 ->(排队、呼叫、创建会议、参会)-> 注消 -> 反初始化
SDK初始化
/**
* SDK初始化
* @access public
* @returns {number} 返回错误码(错误码为0表示没有错误)
*/
var result = CRVideo_Init()
if(result != 0){
//初始化失败
}else {
//初始化成功
}
SDK反初始化
/**
* SDK反初始化
* @access public
*/
CRVideo_Uninit()
设置服务器地址
/**
* 设置服务器地址
* @access public
* @param {string} serverList - 服务器地址(如:rtc.cloudroom.com);
*/
CRVideo_SetServerAddr(serverList)
支持单个服务器地址(如:www.cloudroom.com)或多个服务器地址串,此接口并不会对服务器地址的有效性进行验证,请保证地址准确。
登录
/**
* 登录
* 操作成功则回调CRVideo_LoginSuccess,失败则回调CRVideo_LoginFail
* @access public
* @param {string} appID - 云屋鉴权帐号
* @param {string} appSecret - 云屋鉴权密码
* @param {string} nickName - 昵称
* @param {string} userID - 自定义帐号,不需要时传空字符串
* @param {string} userAuthCode - 自定义验证码(有复杂要求的,可以使用json格式),不需要时传空字符串
* @param {string} cookie - 自定义数据 (在回调时,回传给调用者)
*/
CRVideo_Login(appID,appSecret,nickName,userID,userAuthCode,cookie)
登录会有结果事件通知,成功事件CRVideo_LoginSuccess,失败事件CRVideo_LoginFail,失败事件的错误码参见开说明文档CRVideo_ERR_DEF的详细描述。
注销
/**
* 注销本次登陆
* @access public
*/
CRVideo_Logout()
退出程序时,必须注销本次登录,然后再进行SDK反初始化操作
呼叫和排队
webrtc SDK为开发者提供呼叫、排队功能。
VideoCall(web)文件夹为视频客服的demo。这个demo主要展示的某坐席用户服务于某个队列,系统把这个队列里的排队用户分配给此坐席用户,经过一系列握手之后,再进行视频通话的功能。
业务流程说明
坐席客户:初始化SDK->登录->取得队列信息->服务于某个队列->接受某个排队用户->创建会议->呼叫排队用户->进入会议->音视频通话->挂断/被挂断->停止服务->注销->卸载SDK
排队客户:初始化SDK->取得队列信息->排队于某个队列->接受呼叫->进入会议->音视频通话->挂断/被挂断->注销->卸载SDK
时序图
坐席客户与排队客户通讯的时序图如下所示:
坐席客户在接受排队用户时,需要创建一个会议,创建成功后把排队用户呼叫进会议中,再进行后面的业务功能操作。用户与用户之间的各种通信功能,如音视频通话,屏幕共享,影音共享等等,必须依托于会议存在。后面还会对会议功能有更详细的说明。
注意事项
A.队列不能由SDK创建,应在Web上先配好
B.一个客服可以服务多个队列,但一个客户只在一个队列排队
C.多个坐席客户可同时服务于一个队列
D.队列有优先级,客服服务多个队列时,将从高优先级的队列服务起。(不同优先级的客户可以通过排队不同队列来实现。 这样比在一个队列插队好,不会引起其他排队用户等待数增加)
会议
H5 SDK为开发者提供的音视频通信功能,屏幕共享,影音共享等功能,须在会议里进行。
业务流程说明
创建一个会议:初始化SDK->登录->创建会议->其他用户参加会议->音视频通话、屏幕共享、影音共享等->离开会议->注销->卸载SDK
参加一个会议:(此处用户未登录参会,实际上登录也可参会)初始化SDK->根据会议号加入一个会议->音视频通话、屏幕共享、影音共享等->离开会议->卸载SDK
时序图
一次完整的会议时序图如下所示:
注意事项
A.在SDK初始化且登录会议成功后,才能进行各种会议功能
B.如果只是参会,可以不登录;(如上图参会者)
C.离开会议是没有响应消息的(在网络不通时离开会议也不会退不出去),但“结束会议”时有响应的, 只有收到结束成功消息,才真正算结束成功了
音视频通讯
H5 SDK为开发者提供便捷的音视频通讯接口,通过以下几步的操作,可以在会议中集成音视频交互功能。音视频通讯需在会议里进行。
参会人信息
会议里可以通过接口CRVideo_GetAllMembers获取当前参加会议的所有成员的详细信息,接口如下所示:
/**
* 获取所有用户的信息
* @access public
* @return {CRVideo_MemberInfo[]} 返回含多个成员信息
*/
var meber = CRVideo_GetAllMembers()
会议里可以通过接口CRVideo_GetMemberInfo获取指定成员的详细信息,接口如下所示:
/**
* 获取指定用户的信息
* @access public
* @param {string} userID - 用户ID
* @return {CRVideo_MemberInfo} info - 返回用户userID的成员信息
*/
var meber = CRVideo_GetMemberInfo(userID)
打开音频
先可以通过接口CRVideo_SetAudioCfg设置本地的音频参数,接口如下所示:
/**
* 系统音频参数设置
* @access public
* @param {CRVideo_AudioCfg} cfg - 设置参数
*/
CRVideo_SetAudioCfg(cfg)
通过接口CRVideo_OpenMic和CRVideo_CloseMic打开和关闭自已或他人的麦克风,接口如下所示:
/**
* 打开自己的麦克风
* 打开自已的麦克风时,先会进入到AOPENING状态,等服务器处理后才会进入AOPEN状态,此时说话才能被采集到;
* @param {string} userID - 用户的ID
* @access public
*/
CRVideo_OpenMic(userid)
/**
* 关闭自己的麦克风
* 关麦操作是立即生效的,本地会立即停止采集;
* @access public
* @param {string} userID - 登录成功后分配的userID
*/
CRVideo_CloseMic(userID)
(取得用户麦克风是否开启或关闭,可通过接口CRVideo_GetMemberInfo获取)
打开视频
计算机可拥有多个摄像头,通过CRVideo_GetAllVideoInfo可获取用户所有摄像头信息,接口如下所示:
/**
*获取用户所有的摄像头信息
* @typedef {object} CRVideo_VideoDeviceInfo - 视频设备信息
* @property {string} userID - 用户ID,仅支持用户本身
* @returns {CRVideo_VideoDeviceInfo[]} 返回设备列表
*/
var VideoInfoArr = CRVideo_GetAllVideoInfo(userID)
通过接口CRVideo_SetDefaultVideo设置指定用户的默认摄像头,接口如下所示:
/**
* 设置默认的摄像头
* @access public
* @param {string} userID - 用户ID,仅支持用户本身
* @param {number} videoID - PC浏览器传入摄像头ID;移动端浏览器传入 1/2 前置/后置摄像头
*/
CRVideo_SetDefaultVideo(userID,videoID)
通过接口CRVideo_SetVideoCfg配置视频的清晰度、帧率、码率等;
/**
*系统视频参数设置
* @typedef {object} CRVideo_VideoCfg - 视频参数
* @property {number} sizeType - PC端传入 1-13表示视频尺寸,移动端传入1-3 表示流畅、标清、高清
* @property {number} fps - 帧率:视频帧率(5~30)
* @property {number} maxbps - 视频码率(1~100*1000*1000);(未配置则使用内部默认值,请参见VIDEO_SHOW_SIZE)
* @property {number} wh_rate - 视频宽高比(0对应16:9,1对应4:3,2对应1:1) (未配置则使用内部默认值0)
* @property {CRVideo_VIDEO_WH_RATE} wh_rate - 视频宽高比例
* @access public
* @param {CRVideo_VideoCfg} cfg - 设置参数
*/
CRVideo_SetVideoCfg(cfg)
通过接口CRVideo_OpenVideo和CRVideo_CloseVideo开启或关闭指定用户的摄像头,接口如下所示:
/**
* 打开用户的摄像头,以便本地、远端显示视频图像
* @access public
* @param {string} userID - 用户ID,目前仅支持用户本身
*/
CRVideo_OpenVideo(userID)
/**
* 关闭用户的摄像头
* @access public
* @param {string} userID - 用户ID,目前仅支持用户本身
*/
CRVideo_CloseVideo(userID)
(取得用户摄像头是否开启或关闭,可通过接口CRVideo_GetMemberInfo获取)
会议录制
参会过程中可将视频、音频录制成视频。
先通过接口CRVideo_StartSvrRecording开启云端录制,参数说明请参考截图,接口如下所示:
/**
* 开始录制
* @access public
* @param {Object} svr_recordCfgObj 文件配置
* @param {Array} svr_recordContentsArr 录制对象
*/
CRVideo_StartSvrRecording(svr_recordCfgObj, svr_recordContentsArr)
可以通过接口CRVideo_StopSvrRecording停止云端录制,接口如下所示:
/**
* 停止录制
* @access public
*/
CRVideo_StopSvrRecording()
其他接口
更多的功能接口,请参考云屋webRTC sdk帮助文档。