音视频通话

API参考

global API

const char* getVersion()

  • 功能:获取SDK版本号

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:版本号字符串

class CRVideoSDKMain

static CRVideoSDKMain *create(const char* sdkDatSavePath, CRMainThreadDispatch *mainThreadDispath, const char *jsonParam = "")

  • 功能:创建CRVideoSDKMain对象

  • 线程特性:线程安全,推荐在程序主线程中调用;(如果在非主线程中创建SDK,后面所指SDK主线程均为创建SDK的线程)

  • 返回值:CRVideoSDKMain对象

  • 参数

参数 类型 含义
sdkDatSavePath char* SDK工作目录,用于存储配置文件、临时文件、日志等文件;
如果传空值,则默认为SDK的安装目录;
mainThreadDispath CRMainThreadDispatch SDK主线程消息派发对象,windows平台可传NULL(内部将在当前线程创建消息窗口进行消息派发)
jsonParam char* 扩展参数,参见CRSDKCreateParams
  • jsonParam说明
参数 取值 含义
Timeout 10000~120000 网络通信超时时间,单位是毫秒, 缺省值:60000
DatEncType 0/1 数据加密类型(缺省值:1):
0:不加密(http、udp)
1:加密(https、udp数据aes加密)

void destroy()

  • 功能:销毁CRVideoSDKMain对象

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

CRVideoSDKQueue &getSDKQueue()

  • 功能:得到SDK的队列管理对象

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRVideoSDKQueue对象

CRVideoSDKCall &getSDKCall()

  • 功能:得到SDK的呼叫管理对象

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRVideoSDKCall对象

CRVideoSDKMeeting &getSDKMeeting()

  • 功能:得到SDK的Meeting对象

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRVideoSDKMeeting对象

void AddCallBack(CRVideoSDKMainCallBack *p)

  • 功能:增加CRVideoSDKMain的回调对象,可以增加多个;

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKMainCallBack* CRVideoSDKMain的回调处理对象

void RmCallBack(CRVideoSDKMainCallBack *p)

  • 功能:移除CRVideoSDKMain的回调对象

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKMainCallBack* CRVideoSDKMain的回调处理对象

void setNetworkProxy(const char* proxy)

  • 功能: 设置网络代理

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

参数 类型 含义
proxy char* 网络代理,json格式,参见CRNetworkProxy

void login(const CRLoginDat &loginDat, const char* cookie = "")

  • 功能:SDK登录

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无, 登录结果参见loginRslt

  • 参数

参数 类型 含义
loginDat CRLoginDat 登录相关参数
cookie char* 上下文参数,详细介绍参见关键词

void logout()

  • 功能:SDK登出

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

void updateToken(const char* token)

  • 功能:更新Token, 防止token因过期而掉线。

Token即将到期前30秒左右,将收到通知:notifyTokenWillExpire
Token过期后,将引发掉线notifyLineOff,原因值为CRVSDKERR_TOKEN_TIMEOUT

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
token char* Token鉴权码,参见token鉴权方案说明

int getUserAuthErrCode()

  • 功能:获取第三方鉴权错误码

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:错误码,值含义第三方鉴权方提供

CRString getUserAuthErrDesc()

  • 功能:获取第三方鉴权错误描述串

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRString字符串,值由第三方鉴权方自由定义。

void setDNDStatus(int DNDStatus, const char* cookie="")

  • 功能:开关免打扰。

设置结果请参见setDNDStatusRslt;
开启免打扰后,他人呼叫本人时,系统自动回绝呼叫,原因为CRVSDKERR_PEER_BUSY;
开启免打扰后,系统将不再自动为座席分配客户notifyAutoAssignUser,座席可以调用reqAssignUser来手动分配客户(叫号模式);

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
DNDStatus int 0代表关闭免打扰, 其它值代表开启免打扰,含义自由定义
cookie char* 上下文参数,详细介绍参见关键词

void getUserStatus(const char* cookie = "")

  • 功能:获取本AppID下的所有登录用户的状态信息

结果请参见getUserStatusSuccess / getUserStatusFail
只返回在线用户状态信息,获取不到的代表未登录

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
cookie char* 上下文参数,详细介绍参见关键词

void getOneUserStatus(const char* userID, const char* cookie = "")

  • 功能:获取本AppID下指定用户的在线状态

结果请参见getUserStatusSuccess / getUserStatusFail

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 需要查询的UserID, 参见CRLoginDat的_userID字段
cookie char* 上下文参数,详细介绍参见关键词

void startUserStatusNotify(const char* cookie = "")

  • 功能:开启AppID下的用户登录状态消息推送。

开启后他人状态变化将收到notifyUserStatus通知
开启结果请参见startUserStatusNotifyRslt
如果在线用户量很大时,将带来很大的开销请谨慎开启

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
cookie char* 上下文参数,详细介绍参见关键词

void stopUserStatusNotify(const char* cookie = "")

  • 功能:关闭appID下的用户在线状态消息推送

结果请参见stopUserStatusNotifyRslt

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
cookie char* 上下文参数,详细介绍参见关键词

CRString sendCmd(const char* targetUserId, const CRString& data, const char* cookie = "")

  • 功能:发送点对点消息

发送结果请参见sendCmdRlst
目标用户将收到通知notifyCmdData
房间内群发消息参见sendMeetingCustomMsg

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRString 任务ID

  • 参数

参数 类型 含义
targetUserId char* 目标用户ID, 参见CRLoginDat的_userID字段
data CRString 发送的数据(最大64KB)
cookie char* 上下文参数,详细介绍参见关键词

CRString sendBuffer(const char* targetUserId, const CRByteArray& data, const char* cookie = "")

  • 功能:发送点对点大数据。

数据将被分块发送,发送进度参见notifySendProgress
取消发送参见cancelSend
结果请参见sendBufferRlst
目标用户将收到通知notifyBufferData

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRString 任务ID

  • 参数

参数 类型 含义
targetUserId char* 目标用户ID, 参见CRLoginDat的_userID字段
data CRByteArray 发送的数据(最大100MB)
cookie char* 上下文参数,详细介绍参见关键词

CRString sendFile(const char* targetUserId, const char* fileName, const char* cookie = "")

  • 功能:发送文件。

数据将被分块发送,发送进度参见notifySendProgress
取消发送参见cancelSend
结果请参见sendFileRlst
目标用户将收到通知notifyFileData

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRString 任务ID。

  • 参数

参数 类型 含义
targetUserId char* 目标用户ID, 参见CRLoginDat的_userID字段
fileName char* 本地完整路径的文件名(文件内容最大100MB)
cookie char* 上下文参数,详细介绍参见关键词

void cancelSend(const CRString& sendID, const char* cookie = "")

  • 功能:取消大数据、文件的发送。

只能取消sendBuffersendFile的任务
只有任务还未发送完成的才能被取消
是否成功取消,可关注cancelSendRlst回调

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
sendID CRString 任务ID,sendBuffersendFile的返回值
cookie char* 上下文参数,详细介绍参见关键词

void createMeeting(const char* params = "", const char* cookie = "")

  • 功能:创建房间

创建结果参见createMeetingSuccess / createMeetingFail
房间创建后,此房间ID将一直存在,直到调用destroyMeeting销毁它;
没有人使用房间时,系统会在一定时间后释放资源,并在下次使用时再临时分配,房间ID是保持不变的;

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
params char* 保留参数
cookie char* 上下文参数,详细介绍参见关键词

void destroyMeeting(int meetID, const char* cookie = "")

  • 功能:销毁房间

销毁结果参见destroyMeetingRslt
房间被销毁后,房间中的其他人将收到notifyMeetingStopped
房间被销毁后,对应的房间将不能再被使用。
如果只是想结束会次会议,房间仍保留下次使用,可使用stopMeeting

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
meetID int 房间号
cookie char* 上下文参数,详细介绍参见关键词

void writeLog(CRVSDK_LOG_LEVEL level, const char* log)

  • 功能:向SDK的日志文件写入日志

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
level CRVSDK_LOG_LEVEL 日志等级
log char* 日志内容(长度超过2K时,将被截断)

CRVSDK_ERR_DEF customHttpReq(const char* reqId, const char* url, const CRByteArray &content, const char* cookie = "")

CRVSDK_ERR_DEF customHttpReq(const char* reqId, const char* url, CRVSDK_HTTPVERB_TYPE verb, const CRByteArray &content, const char* exHeaders="", const char* cookie = "")

  • 功能:通用http/https请求

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF, CRVSDKERR_NOERR代表调用成功, 请求结果参见customHttpReqRslt

  • 参数

参数 类型 含义
reqId char* 请求的唯一标识
url char* 请求的url
verb CRVSDK_HTTPVERB_TYPE 请求类型
content CRByteArray 请求的content
exHeaders char* 请求的扩展头,以\n进行分割
cookie char* 上下文参数,详细介绍参见关键词

bool videoFrameCover(CRVideoFrame& frm, CRVSDK_VIDEO_FORMAT dstFmt, int dstW, int dstH)

  • 功能:图像帧格式转换、缩放处理

格式转换、缩放有一定cpu开销

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:处理结果

  • 参数

参数 类型 含义
frm CRVideoFrame 调用时传入的图像帧,处理成功后存储结果帧
dstFmt CRVSDK_VIDEO_FORMAT 目标格式
dstW int 目标宽
dstH int 目标高

bool mirrorVideoFrame(CRVideoFrame& frm)

  • 功能:图像镜像处理(常用于本地图像镜像处理)

如果要对本地及远端都进行镜像处理,请使用setVideoEffects接口
镜像有少量cpu开销

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:处理结果

  • 参数

参数 类型 含义
frm CRVideoFrame 调用时传入的图像帧,处理成功后存储结果帧

CRVSDK_ERR_DEF coverToVideoFrame(const char *fileName, CRVideoFrame& frm)

CRVSDK_ERR_DEF coverToVideoFrame(const CRByteArray &dat, const char* fmt, CRVideoFrame& frm)

  • 功能:将图片解码成VideoFrame图像帧

支持图片格式:png, jpg, jpeg, bmp
有一定cpu开销

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值CRVSDK_ERR_DEF, CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
fileName const char * 待解码图片路径文件名,文件后缀应该是:.png, .jpg, .jpeg, .bmp
dat CRByteArray 图片数据
fmt char* 图片数据格式,支持:"png", "jpg", "jpeg", "bmp"
frm CRVideoFrame 解码后的图像帧

bool setHardwareEncode(const char *jsonParams = NULL)

  • 功能:硬编配置

开启硬编需要相关硬件支持: 如nvidia的硬编, 需要对应的显卡支持硬编, 如intel的硬件加速, 需要是intel的核显
此接口当前仅windows有效

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:true:配置成功, false:配置失败

  • 参数

参数 类型 含义
jsonParams const char * 硬编配置, 传空代表停止硬编

jsonParams参数说明:

参数 类型 说明
StreamType string 哪些流开启硬编,取值:
"all":所有
"video":视频
"screen":屏幕共享
"media":影音共享
多值时格式为:"video,screen"
Provider string 硬编设备类型,取值:
"auto": 由SDK自动检测
"intel": intel的核显
"nvidia": nvidia显卡
FailedToSoftCodec int 硬编不可用时,是否自动切软编,取值:0/1

bool setHardwareDecode(const char *jsonParams = NULL)

  • 功能:硬解配置

此接口当前仅windows 8+有效;
开启硬解后,windows上图像帧格式为CRVSDK_VFMT_D3D11, 自渲染时请正确处理。

  • 线程特性:非线程安全, 只能在SDK主线程中调用

  • 返回值:true:配置成功, false:配置失败

  • 参数

参数 类型 含义
jsonParams const char * 硬解配置, 传空代表停止硬编

jsonParams参数说明:

参数 类型 说明
StreamType string 哪些流开启硬解,取值:
"all":所有
"video":视频
"screen":屏幕共享
"media":影音共享
多值时格式为:"video,screen"
Provider string 硬解设备类型,取值:
"auto": 由SDK自动检测
FailedToSoftCodec int 硬解不可用时,是否自动切软解,取值:0/1

class CRMainThreadDispatch

  • CRMainThreadDispatch背景说明:

    为了让集成时不用过多考虑线程问题,所以需要将SDK的内部消息派发到SDK主线程并在SDK主线程与集成代码交互,而c++下没有一个标准的主线程消息队列,在此借助CRMainThreadDispatch来实现。

  • CRMainThreadDispatch原理说明:

    1. 应用层将CRMainThreadDispatch对象设置给SDK;
    2. SDK其它线程(如网络线程)需要SDK主线程处理逻辑或回调应用层代码时,在网络线程调用postCRMsg(msgSN);
    3. 应用层在重载的postCRMsg函数中将消息挂入SDK主线程消息队列;
    4. 应用层在处理SDK派发的消息时,调用SDK的dealCRMsg(msgSN),将处理权交回给SDK;
    5. SDK便在SDK主线程完成对msgSN的相关处理(包括回调业务代码,也将在SDK主线程完成的);
  • Qt应用举例说明:

    
    //定义CRMsgEvent
    class CRMsgEvent : public QEvent
    {
    public:
    	CRMsgEvent(uint32_t msgSN) : QEvent(QEvent::User), m_msgSN(msgSN) {}
    	uint32_t m_msgSN;
    };
    
    //Qt版本的主线程消息派发器
    class CRMainThreadDispatch_Qt : public QObject, public CRMainThreadDispatch
    {
    public:
    	CRMainThreadDispatch_Qt(QObject *parent) : QObject(parent)
    
    	virtual void postCRMsg(uint32_t msgSN)
    	{
    		//向CRMainThreadDispatch_Qt发消息;
    		//CRMainThreadDispatch_Qt为主线程对象,等于消息派发给了主线程
    		//由于QCoreApplication::postEvent线程安全,所以无需担心多线程问题
    		QCoreApplication::postEvent(this, new CRMsgEvent(msgSN));
    	}
    
    	bool event(QEvent *e)
    	{
    		//主线程的CRMainThreadDispatch_Qt在处理QEvent::User消息时,
    		//调用dealCRMsg来完成消息的处理
    		if (e->type() == QEvent::User)
    		{
    			CRMsgEvent *pMsg = static_cast<CRMsgEvent*>(e);
    			dealCRMsg(pMsg->m_msgSN);
    			return true;
    		}
    		return QObject::event(e);
    	}
    };
    
    
    int main(int argc, char *argv[])
    {
    	QApplication a(argc, argv);
    
    	CRMainThreadDispatch_Qt *pDispatch = new CRMainThreadDispatch_Qt(&a);
        g_sdkMain = CRVideoSDKMain::create(strAppPath.toUtf8().constData(), pDispatch);
    
    	...
    }
    
    
    

virtual void postCRMsg(uint32_t msgSN) = 0

  • 功能:将消息派发到SDK主线程

纯虚函数,业务代码必须在派生类实现;
实现时必须将消息挂入SDK主线程消息队列;
postCRMsg将可能在非SDK主线程被调用,所以挂入消息队列时要注意线程安全;
在处理消息时,必需调用CRMainThreadDispatch::dealCRMsg,驱动SDK来完成相关消息的处理;

  • 线程特性:在SDK内部任意线程回调,实现时要注意线程安全

  • 返回值:无

  • 参数

参数 类型 含义
msgSN uint32_t 消息序号

void dealCRMsg(uint32_t msgSN)

  • 功能:驱动SDK处理派发的消息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
msgSN uint32_t 消息序号

class CRVideoSDKMainCallBack

virtual void loginRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:登录结果回调

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表登录成功,其它值代表登录失败的具体原因
cookie char* 登录时传入的cookie参数

virtual void notifyTokenWillExpire()

  • 功能:token授权即将到期通知

采用Token模式登录,才会收到此回调;
Token到期前30秒左右回调,应尽快调用updateToken将授权更久的Token设置给SDK;

  • 线程特性:在SDK主线程中回调

  • 返回值:无

virtual void notifyLineOff(CRVSDK_ERR_DEF sdkErr)

  • 功能:通知本端SDK掉线

掉线的原因参见CRVSDK_ERR_DEF
掉线时,如果正在房间中也将自动变成未进入房间状态;
掉线时,之前的所有未完成的请求都将失败;
掉线之后,可以按业务需求稍后重新登录,并在登录成功后按需进入房间;

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 掉线的原因

virtual void setDNDStatusRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:设置免打扰结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void getUserStatusSuccess(const CRArray<CRUserStatus>& ustArray, const char* cookie)

  • 功能:获取用户登录状态信息成功

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
ustArray CRArray<CRUserStatus> 用户登录状态信息列表
cookie char* 请求接口传入的cookie参数

virtual void getUserStatusFail(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:获取用户登录状态信息失败

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void notifyUserStatus(const CRUserStatus& userStatus)

  • 功能:通知某用户登录状态变化

只在startUserStatusNotify后,才会收到变化通知;

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userStatus CRUserStatus 用户状态信息

virtual void startUserStatusNotifyRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:开启用户状态通知结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void stopUserStatusNotifyRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:关闭用户状态通知结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void createMeetingSuccess(const CRMeetInfo& meetObj, const char* cookie)

  • 功能:创建房间成功

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
meetObj CRMeetInfo 房间信息
cookie char* 请求接口传入的cookie参数

virtual void createMeetingFail(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:创建房间失败

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void destroyMeetingRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:销毁房间结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void sendCmdRlst(const char* sendId, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:发送点对点消息结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 发送任务id, 见sendCmd返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void sendBufferRlst(const char* sendId, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:发送点对点大数据结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 发送任务id, 见sendBuffer返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void sendFileRlst(const char* sendId, const char* fileName, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:发送点对点文件结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 发送任务id, 见sendFile返回值
fileName char* 发送的本地完整路径的文件名
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void cancelSendRlst(const char* sendId, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:取消发送结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 发送任务id, 见sendBuffer / sendFile返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void notifySendProgress(const char* sendId, int sendedLen, int totalLen, const char* cookie)

  • 功能:通知发送结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 发送任务id, 见sendBuffer / sendFile返回值
sendedLen int 已发送大小
totalLen int 总大小
cookie char* 请求接口传入的cookie参数

virtual void notifyCmdData(const char* sendId, const char* sourceUserId, const CRString& data)

  • 功能:通知收到点对点透明通道消息

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 任务ID
sourceUserId char* 发送者UserID
data CRString 消息内容

virtual void notifyBufferData(const char* sendId, const char* sourceUserId, const CRByteArray& data)

  • 功能:通知收到点对点大数据

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 任务ID
sourceUserId char* 发送者UserID
data CRByteArray 消息内容

virtual void notifyFileData(const char* sendId, const char* sourceUserId, const char* tmpFile, const char* orgFileName)

  • 功能:通知收到点对点文件

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sendId char* 任务ID
sourceUserId char* 发送者UserID
tmpFile char* 本地完整路径文件名(接收到的文件存放在系统Tmp目录下)
orgFileName char* 原始文件名(不包含路径)

virtual void customHttpReqRslt(const char* reqId, int httpCode, const CRByteArray &content, const char* cookie)

  • 功能:通用http/https请求结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
reqId char* 请求的唯一标识
httpCode int http的响应码
content CRByteArray http的响应内容
cookie char* 请求接口传入的cookie参数

class CRVideoSDKQueue

void AddCallBack(CRVideoSDKQueueCallBack *p)

  • 功能:增加CRVideoSDKQueue的回调对象,可以增加多个;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKQueueCallBack* CRVideoSDKQueue的回调处理对象

void RmCallBack(CRVideoSDKQueueCallBack *p)

  • 功能:移除CRVideoSDKQueue的的回调对象

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKMainCallBack* CRVideoSDKQueue的回调处理对象

void initQueueDat(const char* cookie = "")

  • 功能:初始化队列功能

初始化队列结果请参见initQueueDatRslt
队列初始化成功后才可进行其它队列操作;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
cookie char* 上下文参数,详细介绍参见关键词

CRArray<CRQueInfo> getAllQueueInfo()

  • 功能:获取AppID下的所有队列基础信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:队列基础信息列表: CRArray<CRQueInfo>

bool getQueueStatus(int queID, CRQueStatus &st)

  • 功能:获取指定队列的排队状况

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:获取是否成功

  • 参数

参数 类型 含义
queID int 队列ID
st CRQueStatus 排队状况

void getQueuingInfo(CRQueuingInfo &st)

  • 功能:获取我的排队信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
st CRQueuingInfo 我的排队信息

CRArray<int> getServingQueues()

  • 功能:获取我服务的所有队列

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:队列Id列表:CRArray<int>

void startQueuing(int queID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:客户开始排队

客户同一时间,只能排一个队列;
排队结果请参见startQueuingRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
usrExtDat char* 扩展信息,分配给座席时,座席可以获取此参数
cookie char* 上下文参数,详细介绍参见关键词

void stopQueuing(const char* cookie = "")

  • 功能:客户停止排队

排队结果请参见stopQueuingRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
cookie char* 上下文参数,详细介绍参见关键词

void startService(int queID, int priority=0, const char* cookie = "")

  • 功能:座席开始服务某队列

可以多次调用,开启对多个队列的服务;
开启服务结果请参见startServiceRslt
开启成功后:
a. 如果没有开启免打扰setDNDStatus,那么系统会自动分配客户:notifyAutoAssignUser
b. 如果开启免打扰,系统就不会分配客户,如需服务客户可调用:reqAssignUser

座席优先级描述:
a. 客户优先分配给服务此队列优先级最高的,且空闲的座席;
b. 优先级相同时,则分配给最先空闲的座席;
c. 优先级高的座席变空闲时,不抢夺已分配的客户;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
priority int 坐席优先级 (缺省为0,取值为0~1000内整数。值越小优先级越高。0为最高优先级)
cookie char* 上下文参数,详细介绍参见关键词

void stopService(int queID, const char* cookie = "")

  • 功能:座席停止服务某队列

停止服务结果请参见stopServiceRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
cookie char* 上下文参数,详细介绍参见关键词

void reqAssignUser(const char* cookie = "")

void reqAssignUser(int queID, const char* userID, const char* cookie = "")

  • 功能:座席手动分配客户

开启免打扰后手动分配客户接口;(当关闭免打扰时,系统将自动分配客户,无需调用此接口)
分配结果请参见reqAssignUserRslt
可以要求分配指定队列、指定客户,满足客户分配给历史座席类的需求;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
userID char* 请求分配指定用户
cookie char* 上下文参数,详细介绍参见关键词

void acceptAssignUser(int queID, const char* userID, const char* cookie = "")

  • 功能:接受系统自动分配的客户

结果请参见acceptAssignUserRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
userID char* 用户ID
cookie char* 上下文参数,详细介绍参见关键词

void rejectAssignUser(int queID, const char* userID, const char* cookie = "")

  • 功能:拒绝系统自动分配的客户

结果请参见rejectAssignUserRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
userID char* 用户ID
cookie char* 上下文参数,详细介绍参见关键词

class CRVideoSDKQueueCallBack

virtual void initQueueDatRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:初始化队列功能结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void notifyQueueStatusChanged(const CRQueStatus& queStatus)

  • 功能:队列排队状态更新

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
queStatus CRQueStatus 队列排队状态信息

virtual void notifyQueuingInfoChanged(const CRQueuingInfo& queuingInfo)

  • 功能:我的排队信息更新

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
queuingInfo CRQueuingInfo 我的排队信息

virtual void startQueuingRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:客户开始排队结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void stopQueuingRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:客户停止排队结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void startServiceRslt(int queID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:座席开始服务结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void stopServiceRslt(int queID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:座席开始服务结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
queID int 队列ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void acceptAssignUserRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:接受系统分配的客户结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void rejectAssignUserRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:拒绝系统分配的客户结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void reqAssignUserRslt(CRVSDK_ERR_DEF sdkErr, const CRQueUserInfo& usrInfo, const char* cookie)

  • 功能:座席手动分配客户结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
usrInfo CRQueUserInfo 客户信息。(请求成功时,此参数才有效)
cookie char* 请求接口传入的cookie参数

virtual void notifyAutoAssignUser(const CRQueUserInfo& usrInfo)

  • 功能:座席自动分配客户通知

如果不需要系统的自动分配,请通setDNDStatus开启免打扰功能;
acceptAssignUser后,还需要调用call去呼叫对方进入目标房间;
收到系统分配的客户后,如果座席不acceptAssignUser也不rejectAssignUser,系统将在30秒后取消本次分配notifyAssignUserCanceled,然后将客户放回到队首;

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
usrInfo CRQueUserInfo 客户信息

virtual void notifyAssignUserCanceled(int queID, const char* usrID)

  • 功能:通知分配的客户取消了

被取消的原因,可能是用户取消排队了,或者用户掉线了,或者收到notifyAutoAssignUser后没有及时acceptAssignUser / rejectAssignUser

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
queID int 客户信息
usrID char* 客户信息

virtual void notifyUserEnterQueue(int queID, const CRQueUserInfo& usrInfo)

  • 功能:通知客户进入了某队列

只有座席服务的队列,才会收到此通知。

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
queID int 客户信息
usrInfo CRQueUserInfo 客户信息

virtual void notifyUserLeaveQueue(int queID, const char* usrID, CRVSDK_LEFT_QUEUE_REASON reason)

  • 功能:通知客户离开了某队列

只有座席服务的队列,才会收到此通知。

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
queID int 客户信息
usrID char* 用户ID
reason CRVSDK_LEFT_QUEUE_REASON 原因值

class CRVideoSDKCall

void AddCallBack(CRVideoSDKCallCallBack *p)

  • 功能:增加CRVideoSDKCall的回调对象,可以增加多个;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKCallCallBack* CRVideoSDKCall的回调处理对象

void RmCallBack(CRVideoSDKCallCallBack *p)

  • 功能:移除CRVideoSDKCall的的回调对象

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKCallCallBack* CRVideoSDKCall的回调处理对象

CRString call(const char* calledUserID, const CRMeetInfo& meetObj, const char* usrExtDat = "", const char* cookie = "")

  • 功能:发起呼叫

发起的呼叫结果参见callRslt
呼叫时,对方迟迟不acceptCall / rejectCall,30秒后将超时而自动结束呼叫;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRString 呼叫ID

  • 参数

参数 类型 含义
calledUserID char* 被叫用户ID
meetObj CRMeetInfo 房间信息
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词
  • 补充说明:

如果呼叫SIP/H.323设备, usrExtDat可以指定为:{"devInfo":{"autoOpenMic":0}};
其中 devInfo 请参考 CRDevJoinCfg

void acceptCall(const char* callID, const CRMeetInfo& meetObj, const char* usrExtDat = "", const char* cookie = "")

  • 功能:接受他人的呼叫

接受结果参见acceptCallRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID, 参见call / callMoreParty返回值
meetObj CRMeetInfo 房间信息
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

void rejectCall(const char* callID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:拒接他人的呼叫

拒绝结果参见rejectCallRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID, 参见call / callMoreParty返回值
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

void hangupCall(const char* callID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:挂断通话

挂断结果参见hangupCallRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID, 参见call / callMoreParty返回值
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

CRString callMoreParty(const char* calledUserID, const CRMeetInfo& meetObj, const char* usrExtDat = "", const char* cookie = "")

  • 功能:发起多方呼叫(或呼转)

呼叫结果参见callMorePartyRslt
呼叫进度参见notifyCallMorePartyStatus
呼转实现思路: A、B通话已建立(假设callID为IdAB),B想由C来服务A,B callMoreParty C(假设callID为IdBC), 在C接受进入通话后,A便可挂断IdAB通话并离开房间。

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRString 呼叫ID

  • 参数

参数 类型 含义
calledUserID char* 被叫用户ID
meetObj CRMeetInfo 房间信息
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

void cancelCallMoreParty(const char* callID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:取消多方呼叫

取消结果参见cancelCallMorePartyRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

CRString invite(const char* invitedUserID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:邀请他人

邀请结果参见inviteRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRString 邀请ID

  • 参数

参数 类型 含义
invitedUserID char* 邀请的用户ID
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词
  • 补充说明

如果邀请监控设备进入房间, usrExtDat必须为:
{"meeting":{"ID":房间号}, "devInfo":{"userID":"房间中用户ID", "nickName":"房间中用户昵称"}};
其中 devInfo 请参考 CRDevJoinCfg

void acceptInvite(const char* inviteID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:接受邀请

接受结果参见acceptInviteRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID,参见invite返回值
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

void rejectInvite(const char* inviteID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:拒接邀请

接受结果参见rejectInviteRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID,参见invite返回值
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

void cancelInvite(const char* inviteID, const char* usrExtDat = "", const char* cookie = "")

  • 功能:取消邀请

取消结果参见cancelInviteRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID,参见invite返回值
usrExtDat char* 扩展信息
cookie char* 上下文参数,详细介绍参见关键词

class CRVideoSDKCallCallBack

virtual void callRslt(const char* callID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:呼叫结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败原因,如:
CRVSDKERR_PEER_BUSY:对方通话中或免打扰
CRVSDKERR_PEER_OFFLINE:对方不在线
cookie char* 请求接口传入的cookie参数

virtual void acceptCallRslt(const char* callID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:接受呼叫结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void rejectCallRslt(const char* callID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:拒接呼叫结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void hangupCallRslt(const char* callID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:挂断呼叫结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 请求接口传入的cookie参数

virtual void notifyCallIn(const char* callID, const CRMeetInfo& meetObj, const char* callerID, const char* usrExtDat)

  • 功能:通知呼入

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
meetObj CRMeetInfo 房间信息
callerID char* 主叫用户ID
usrExtDat char* 主叫用户的扩展信息

virtual void notifyCallAccepted(const char* callID, const CRMeetInfo& meetObj, const char* usrExtDat)

  • 功能:通知呼叫被接受

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
meetObj CRMeetInfo 房间信息
usrExtDat char* 用户接受时的扩展信息

virtual void notifyCallRejected(const char* callID, CRVSDK_ERR_DEF reason, const char* usrExtDat)

  • 功能:通知呼叫被拒接

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
sdkErr CRVSDK_ERR_DEF 如:
CRVSDKERR_PEER_REFUSE:对方拒接
CRVSDKERR_PEER_NOANSWER:对方30秒无响应
usrExtDat char* 用户接受时的扩展信息

virtual void notifyCallHungup(const char* callID, const char* usrExtDat)

  • 功能:通知呼叫被挂断

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID
usrExtDat char* 用户挂断时的扩展信息

virtual void callMorePartyRslt(const char* callID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:发起多方呼叫结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID, callMoreParty的返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败原因,如:
CRVSDKERR_PEER_BUSY:对方通话中或免打扰
CRVSDKERR_PEER_OFFLINE:对方不在线
cookie char* 请求接口传入的cookie参数

virtual void cancelCallMorePartyRslt(const char* callID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:取消多方呼叫结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID, callMoreParty的返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败原因
cookie char* 请求接口传入的cookie参数

virtual void notifyCallMorePartyStatus(const char* callID, CRVSDK_CALLMORE_STATE status)

  • 功能:通知多方呼叫状态

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
callID char* 呼叫ID, callMoreParty的返回值
status CRVSDK_CALLMORE_STATE 多方呼叫状态

virtual void inviteRslt(const char* inviteID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:邀请他人结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID, invite的返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败原因,如:
CRVSDKERR_PEER_OFFLINE:对方不在线
cookie char* 请求接口传入的cookie参数

virtual void cancelInviteRslt(const char* inviteID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:取消邀请结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID, invite的返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败原因
cookie char* 请求接口传入的cookie参数

virtual void acceptInviteRslt(const char* inviteID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:接受邀请结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID, invite的返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败原因
cookie char* 请求接口传入的cookie参数

virtual void rejectInviteRslt(const char* inviteID, CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:拒接邀请结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID, invite的返回值
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败原因
cookie char* 请求接口传入的cookie参数

virtual void notifyInviteIn(const char* inviteID, const char* inviterUsrID, const char* usrExtDat)

  • 功能:通知收到邀请

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID
inviterUsrID char* 邀请人ID
usrExtDat char* 邀请的扩展信息

virtual void notifyInviteAccepted(const char* inviteID, const char* usrExtDat)

  • 功能:通知邀请被接受

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID
usrExtDat char* 接受的扩展信息

virtual void notifyInviteRejected(const char* inviteID, CRVSDK_ERR_DEF reason, const char* usrExtDat)

  • 功能:通知邀请被拒接

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID
sdkErr CRVSDK_ERR_DEF 如:
CRVSDKERR_PEER_REFUSE:对方拒接
CRVSDKERR_PEER_NOANSWER:对方30秒无响应
usrExtDat char* 接受的扩展信息

virtual void notifyInviteCanceled(const char* inviteID, CRVSDK_ERR_DEF reason, const char* usrExtDat)

  • 功能:通知邀请被取消

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
inviteID char* 邀请ID
sdkErr CRVSDK_ERR_DEF 邀请被取消的原因
usrExtDat char* 取消的扩展信息

class CRVideoSDKMeeting

void AddCallBack(CRVideoSDKMeetingCallBack *p)

  • 功能:增加CRVideoSDKMeeting的回调对象,可以增加多个;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKMeetingCallBack* CRVideoSDKMeeting的回调处理对象

void RmCallBack(CRVideoSDKMeetingCallBack *p)

  • 功能:移除CRVideoSDKMeeting的回调对象

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRVideoSDKMeetingCallBack* CRVideoSDKMeeting的回调处理对象

void addCanvas(CRCanvas* p)

  • 功能:添加渲染对象,由SDK内部完成图像渲染

SDK渲染的当前支持平台有:Windows;(其它平台请使用自定义渲染来进行图像显示)
支持为一个源添加多个渲染对象;
支持一个源,某些窗口用SDK渲染,某些窗口由于有复杂需求用自定义渲染;

SDK渲染与自定义渲染优劣对比:
SDK渲染的优势:使用简单;
SDK渲染的劣势:功能偏弱、在某些UI库中图像上实现透明工具条可能存在困难;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRCanvas* SDK渲染对象

void rmCanvas(CRCanvas* p)

  • 功能:移除SDK渲染对象

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRCanvas* SDK渲染对象

void addCustomRender(CRCustomRenderHandler* p)

  • 功能:添加自定义渲染对象

所有平台都支持自定义渲染;
支持为一个源添加多个自定义渲染对象;
与SDK渲染的一些对比,请参见addCanvas

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRCustomRenderHandler* 自定义渲染对象

void rmCustomRender(CRCustomRenderHandler* p)

  • 功能:移除自定义渲染对象

所有平台都支持自定义渲染;
支持为一个源添加多个自定义渲染对象;
与SDK渲染的一些对比,请参见addCanvas

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
p CRCustomRenderHandler* 自定义渲染对象

void enterMeeting(int meetID, const char* nickName = NULL)

  • 功能:进入房间

进入房间结果:enterMeetingRslt
进入房间成功时,房间中其他人员将收到通知:notifyUserEnterMeeting

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

  • 参数

参数 类型 含义
meetID int 房间ID
nickName char* 房间内的昵称,长度不能大于128。传NULL时,将使用登录的UserID作为昵称

void exitMeeting()

  • 功能:离开房间

离开房间不需要等待服务器响应(网络不好,或网络断开时不会影响离开房间),调用之后即代表离开房间了;
离开房间后,不会再收房间中任何消息;
离开房间时,如果网络正常,房间中其他人会立即收到notifyUserLeftMeeting通知,如果网络不正常,服务器会在SDK内部握手超时后发出notifyUserLeftMeeting通知;
需要销毁房间,请参见destroyMeeting

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

void stopMeeting()

  • 功能:结束房间

结束房间时,调用者将收到stopMeetingRslt应响。如果结束失败,房间仍正常工作;如果结束成功,所有人将收到notifyMeetingStopped
结束房间,只是结束本次会议,不会销毁房间,房间号仍可使用。 如果想撤底销毁房间,请使用destroyMeeting

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

int getNetState()

  • 功能:得到网络状态评价

  • 返回值:0~10,10代表网络很好

CRNetStateInfo getNetState2()

  • 功能:得到网络状态详细信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRNetStateInfo

bool isUserInMeeting(const char* userID)

  • 功能:检查用户是否在房间中

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: true:在房间中, false:不在房间中

  • 参数

参数 类型 含义
userID char* 用户ID

CRArray<CRMeetingMember> getAllMembers()

  • 功能:获取房间中所有所有成员信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRArray<CRMeetingMember>

bool getMemberInfo(const char* userID, CRMeetingMember& info)

  • 功能:获取房间中指定成员信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:true: 获取成功, false: 获取失败(用户不在房间中)

  • 参数

参数 类型 含义
userID char* 用户ID
info CRMeetingMember 返回的成员信息

void setNickName(const char* userID, const char* strNickName)

  • 功能:修改房间中成员昵称

设置结果请参见setNickNameRslt
调用此接口如果设置成功,其他房间内用户会收到notifyNickNameChanged通知

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userID char* 用户ID
strNickName char* 用户新的昵称,utf-8编码,最大长度128

void kickout(const char* userID)

  • 功能:将他人请出房间

请出结果请参见kickoutRslt
被请出人将收到notifyMeetingDropped通知,原因值是:CRVSDK_DROPPED_KICKOUT;
房间中剩余人员(包括操作者)将收到notifyUserLeftMeeting通知;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userID char* 用户ID

void sendMeetingCustomMsg(const char* msg, const char* cookie = "")

  • 功能:发送房间内群消息

发送结果请参见sendMeetingCustomMsgRslt
只有当前在房间内的人员才能收到此消息;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
msg char* 自定义消息内容,最大8KB字节
cookie char* 上下文参数,详细介绍参见关键词

CRArray<CRAudioDevInfo> getAudioMics()

  • 功能:得到系统麦克风设备列表

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRArray<CRAudioDevInfo>

CRArray<CRAudioDevInfo> getAudioSpks()

  • 功能:得到系统扬声器设备列表

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRArray<CRAudioDevInfo>

CRAudioCfg getAudioCfg()

  • 功能:得到当前音频配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRAudioCfg

void setAudioCfg(const CRAudioCfg& cfg)

  • 功能:设置音频参数

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
cfg CRAudioCfg 音频参数

void setMicVolume(int volume)

  • 功能:配置当前使用设备的系统麦克风音量。

此接口内部调用调用系统接口完成,与操作系统保持一致;
在操作系统中调节对应设备的音量,也对SDK生效,通过getMicVolume可以获取到当前系统的值;
如果不想改变系统设置(或系统设置不生效时),可以调用setMicVolumeScaling来实现软的声音大小调节;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
volume int 音量,0~255

int getMicVolume()

  • 功能:获取当前使用设备的系统麦克风音量

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 音量,0~255

void setSpkVolume(int volume)

  • 功能:配置当前使用设备的系统扬声器音量

此接口内部调用调用系统接口完成,与操作系统保持一致;
在操作系统中调节对应设备的音量,也对SDK生效,通过getSpkVolume可以获取到当前系统的值;
如果不想改变系统设置(或系统设置不生效时),可以调用setSpkVolumeScaling来实现软的声音大小调节;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
volume int 音量,0~255

int getSpkVolume()

  • 功能:获取扬声器音量

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 音量,0~255

void setMicVolumeScaling(float factor)

  • 功能:配置麦克风音量附加的缩放系数。

此接口不影响系统的设置,但基于系统的设置;(如:系统音量为100%,setMicVolumeScaling(0.5),相当于系统音量设为50%)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
factor float 缩放系数,取值范围:0~10;0相当于静音,<1.0声音变小,=1.0声音大小不变,>1.0声音放大

float getMicVolumeScaling()

  • 功能:获取麦克风音量附加的缩放系数

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:float

  • 参数:无

void setSpkVolumeScaling(float factor)

  • 功能:配置扬声器音量附加的缩放系数

此接口不影响系统的设置,但基于系统的设置;(如:系统音量为100%,setMicVolumeScaling(0.5),相当于系统音量设为50%)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
factor float 缩放系数,取值范围:0~10;0相当于静音,<1.0声音变小,=1.0声音大小不变,>1.0声音放大

float getSpkVolumeScaling()

  • 功能:获取扬声器音量附加的缩放系数

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:float

  • 参数:无

void setMicMute(bool bMute)

  • 功能:配置麦克风静音

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
bMute bool true:静音、false:不静音

bool getMicMute()

  • 功能:获取麦克风静音状态

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: true:静音、false:不静音

void setSpeakerMute(bool bMute)

  • 功能:配置扬声器静音

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
bMute bool true:静音、false:不静音

bool getSpeakerMute()

  • 功能:获取扬声器静音状态

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: true:静音、false:不静音

int getLocMicDevEnergy()

  • 功能:获取本地麦克风设备能量等级

房间中关麦仍能获取当前麦设备的能量值;
如果想获取在房间中的能量值,请使用getUserMicEnergy

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 能量等级0~9, (9为最大能量等级)

int getUserMicEnergy(const char* userID)

  • 功能:获取房间中指定人员麦克风能量等级

房间中关麦后,获取的麦能量值将为0;
此接口可以获取自已在房间内的麦能量;
如果想获取自已当前麦设备实际能量值,请使用getLocMicDevEnergy

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 能量等级0~9, (9为最大能量等级)

  • 参数

参数 类型 含义
userID char* 用户ID

void openMic(const char* userID)

  • 功能:开麦(将麦克风声音送入房间)

打开自已的麦克风时,先会进入到CRVSDK_AST_OPENING状态,等服务器处理后才会进入CRVSDK_AST_OPEN状态;
当用户的麦克风状态变为CRVSDK_AST_OPEN状态时,说话才能被采集到;
一个房间最大开麦数为8(如果需要超过8,可以联系商务定制),超出的开麦人将保持在CRVSDK_AST_OPENING状态;
CRVSDK_AST_OPENING状态的麦不会在有人关麦时自动打开,需要按需再次执行openMic;
麦克风状态改变时,房间中所有人将收到notifyMicStatusChanged通知;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userID char* 用户ID

void closeMic(const char* userID)

  • 功能:关麦(麦克风声音停止送入房间)

关麦操作是立即生效的,本地会立即停止采集;
房间中所有人将收到notifyMicStatusChanged通知;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userID char* 用户ID

CRVSDK_ASTATUS getMicStatus(const char* userID)

  • 功能:获取指定人员的麦克风状态

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ASTATUS

  • 参数

参数 类型 含义
userID char* 用户ID

void closeAllMic()

  • 功能:全体关麦

全体关麦时,不关闭操作者自已的麦;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

CRVSDK_ERR_DEF startEchoTest()

  • 功能:开始本地语音环回测试

环回测试时,将听不到其房间中的声音,房间中其他人也听不到本端的声音;
环回测试时,SDK内部自动临时关闭AEC(回声消除),在停止测试时恢复之前的AEC配置;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

void stopEchoTest()

  • 功能:停止本地语音环回测试

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

bool isEchoTesting()

  • 功能:检测是否在本地语音环回测试

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 是否测试中

void setAudioFrameObserver(CRAudioFrameObserver *p)

  • 功能:设置语音观测器

传入NULL,代表移除观测器;

  • 返回值: 无

  • 线程特性:线程安全,可在任意线程中调用

  • 参数

参数 类型 含义
p CRAudioFrameObserver* 音频观测器对象

void setVoiceChange(const char* userID, int type)

  • 功能:设置指定人变声

变声功能为服务器实现,所以本地录制、本地声音环回测试,声音都是不变声的;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userID char* 用户ID
type int 预定义变声类型:CRVSDK_VOICECHANGE_TYPE
自定义变声:取值100~200, 150为原声,<150为降调,>150为升调

int getVoiceChangeType(const char* userID)

  • 功能:查询目标用户变声类型

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 预定义变声类型:CRVSDK_VOICECHANGE_TYPE , 自定义变声:取值100~200, 150为原声,<150为降调,>150为升调

  • 参数

参数 类型 含义
userID char* 用户ID

void setAudioSubscribeMode(CRVSDK_ASUBSCRIB_MODE mode)

  • 功能:设置音频订阅模式

SDK内部默认为CRVSDK_ASM_MIXED模式,此模式进入房间成功就能听到房间内所有开麦人的声音;
配置为CRVSDK_ASM_SEPARATE模式后,默认不订阅任何人的声音,需要调用setAudioSubscribeListForSeparateMode设置要订阅的人员名单;
此接口在进入房间前可调用, 程序退出后失效;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
mode CRVSDK_ASUBSCRIB_MODE 订阅模式

void setAudioSubscribeListForSeparateMode(CRVSDK_ASUBSCRIB_LISTTYPE type, const char* userIds)

  • 功能:设置独立音频订阅名单

只有在CRVSDK_ASM_SEPARATE音频订阅模式下才能设置,可调用setAudioSubscribeMode修改模式;
切换到其它音频订阅模式时,之前设置的名单自动失效;
此接口在进入房间前可调用,程序退出后失效;
白名单和黑名单不共存,后面的数据将覆盖之前的数据;
其他人员进出房间、开关麦,不影响设置的名单;SDK内部会退订离开或关麦的流,在开麦后再次订阅;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
type CRVSDK_ASUBSCRIB_LISTTYPE 列表类型
userIds char* 用户ID列表,使用";"分割

CRVSDK_ERR_DEF setCustomAudioCapture(bool enable, const char* param)

  • 功能:自定义音频采集

自定义音频采集,支持两种方式:a.从外部通过pushCustomAudioDat送入pcm数据;b.从网络摄像头获取;
如果从网络摄像头获取时,请确保对应的摄像头被打开,否则将采集全是静音数据;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
enable bool 是否启用自定义音频采集
param char* 可选扩展参数,json格式,当前支持参数:
"fromIPCam":视频ID,配置后将不再需要pushCustomAudioDat,SDK自动从IPCam中获取音频数据

CRVSDK_ERR_DEF pushCustomAudioDat(const CRAudioFrame& frm)

  • 功能:向SDK送入自定义音频采集数据

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
frm CRAudioFrame 音频帧数据,SDK格式要求:48khz 16bit 单声道数据,如果格式不匹配时,可以使用CRAudioCover进行转换

CRVSDK_ERR_DEF setCustomAudioPlayback(bool enable, const char* param)

  • 功能:自定义音频渲染

开启自定义渲染后,应定期通过pullCustomAudioDat拉取音频帧数据,内部有少量缓冲区,超出后会导至前面的数据丢失;
开启自定义渲染后,本地将不再向系统扬声器播放声音;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
enable bool 是否开启自定义音频播放
param char* 保留参数

CRVSDK_ERR_DEF pullCustomAudioDat(CRAudioFrame& frm)

  • 功能:从SDK获取音频数据用于自渲染

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
frm CRAudioFrame 音频帧数据,获取到的数据将是:48khz 16bit 单声道数据。如果格式不匹配,可以使用CRAudioCover进行转换

const CRArray<CRVideoDevInfo>& getAllVideoInfo(const char* userID)

  • 功能:获取指定人员的视频设备信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 视频设备信息列表CRArray<CRVideoDevInfo>

  • 参数

参数 类型 含义
userID char* 用户ID

bool showVideoAdvCfgDlg(int videoID, void* hParenWnd)

  • 功能:显示本地系统摄像头高级配置(仅windows有效)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 显示是否成功

  • 参数

参数 类型 含义
videoID int 视频设备ID,系统的真实摄像头才能显示高级配置
hParenWnd void* 系统弹窗的父窗口句柄

CRVSDK_ERR_DEF setVideoCfg(const char* jsonCfg)

  • 功能:本地视频全局配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
jsonCfg char* json格式,请参见CRVideoCfg

CRString getVideoCfg()

  • 功能:获取本地视频全局配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 视频全局配置CRString,json格式,请参见CRVideoCfg

void setDefaultVideo(int videoID)

  • 功能:配置本地默认视频设备

SDK内部会自动产生默认视频设备,除非系统没有任何真实摄像头、自定义摄像头、网络摄像头等;
当默认视频设备被移除时,SDK内部会自动产生一个新的默认视频设备;
SDK内部产生默认视频设备时,优先将在打开的多视频设备上选择;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
videoID int 视频设备ID

int getDefaultVideo(const char* userID)

  • 功能:获取本地或他人的默认视频设备

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 视频设备ID, 0代表没有默认视频设备;

  • 参数

参数 类型 含义
userID char* 用户ID

void setMutiVideos(const int moreVideoIDs[], int count)

  • 功能:配置本地多视频设备

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
moreVideoIDs int[] 开启更多视频设备(不应该包含默认视频设备,即使传入也会被忽略)
count int moreVideoIDs个数,0代表关闭多视频设备功能

CRArray<int> getMutiVideos(const char* userID)

  • 功能:获取本地的或他人的多视频设备

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 视频设备ID列表CRArray<int>

  • 参数

参数 类型 含义
userID char* 用户ID

CRVSDK_ERR_DEF setLocVideoAttributes(int videoID, const char* jsonAttributes)

  • 功能:设置本地指定设备私有配置

没有配置时,使用全局配置;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
videoID int 视频设备ID
jsonAttributes char* json格式,请参见CRVideoAttributesObj

CRString getLocVideoAttributes(int videoID)

  • 功能:获取本地指定设备私有配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 私有配置CRString,json格式,请参见CRVideoAttributesObj

  • 参数

参数 类型 含义
videoID int 视频设备ID

void openVideo(const char* userID)

  • 功能:打开指定人的视频

打开用户的视频,以便本地、远端显示视频图像;
打开多个视频设备,参见setMutiVideos

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userID char* 用户ID

void closeVideo(const char* userID)

  • 功能:关闭指定人的视频

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userID char* 用户ID

CRVSDK_VSTATUS getVideoStatus(const char* userID)

  • 功能:获取房间中视频状态

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_VSTATUS

  • 参数

参数 类型 含义
userID char* 用户ID

void setVideoEffects(const char* efs)

  • 功能:本地视频效果配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
efs char* 视频效果配置,json字符串,请参见CRVideoEffectsObj

CRString getVideoEffects()

  • 功能:获取本地视频效果配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 视频效果配置json字符串,请参见CRVideoEffectsObj

void setVideoFrameObserver(CRVideoFrameObserver *p)

  • 功能:设置视频帧观测器

传入NULL,代表移除观测器;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
p CRVideoFrameObserver* 视频帧观测器对象

void setVideoEncDatObserver(CRVideoEncDatObserver *p)

  • 功能:设置视频编码数据观测器

传入NULL,代表移除观测器;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
p CRVideoEncDatObserver* 视频编码数据观测器对象

CRVideoFrame GetVideoImg(const CRUserVideoID &vID, CRVSDK_VSTEAMLV_TYPE lv = CRVSDK_VSTP_LV0)

  • 功能:获取渲染中的指定人员视频的图像帧

只能获取已经订阅中的视频的图像帧;
如果获取图像还未到来,或解码不成功,获取的结果将为空;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVideoFrame

  • 参数

参数 类型 含义
vID CRUserVideoID 图像标识
lv CRVSDK_VSTEAMLV_TYPE 大小流标识

bool getVideoStreamInfo(CRVStreamInfo &rslt, const CRUserVideoID &vID, CRVSDK_VSTEAMLV_TYPE lv = CRVSDK_VSTP_LV0)

  • 功能:获取视频流信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:true/false, 在流不存在时将返回false

  • 参数

参数 类型 含义
rslt CRVStreamInfo 获取的流信息
vID CRUserVideoID 图像标识
lv CRVSDK_VSTEAMLV_TYPE 大小流标识

CRString getVideoWatermark(int videoID)

  • 功能:获取视频的水印配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:水印配置CRString,json格式,请参见setVideoWatermark中params描述

  • 参数

参数 类型 含义
videoID int 视频设备ID,-1代表全局配置

CRVSDK_ERR_DEF setVideoWatermark(int videoID, const char* params)

  • 功能:配置视频水印

videoID为-1时,代表配置默认的全局水印;
SDK内部优先使用本视频设备ID的水印, 如果未配置时,则使用全局水印配置;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF, CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
videoID int 视频设备ID,-1代表配置全局
params char* 水印配置,配置为nullptr或""时,代表移除配置。
josn格式:list<CRMixerContentObj>, 这里只支持CRMixerContentObj中的CRVSDK_MIXCONT_PIC和CRVSDK_MIXCONT_TEXT类型

int addIPCam(const char* url, const char* jsonParam)

  • 功能:添加网络摄像头

最多支持添加5个;
添加成功后与本地视频设备处理一致;本地通过getAllVideoInfo接口可以识别哪些是网络摄像头;
添加的摄像头在CRVideoSDKMain被销毁时被删除;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 返回值>=0代表添加成功,返回值为videoID(视频设备ID); 返回值<0代表添加失败,参见CRVSDK_ERR_DEF

  • 参数

参数 类型 含义
url char* 网络摄像头url,支持协议:rtmp,rtsp
jsonParam char* json格式参数, 支持:
name:摄像头名称,不配置则为url
maxRetry:连接失败或中断连时重试连接次数,<0代表无限重试,默认值-1

void delIPCam(int videoID)

  • 功能:删除网络摄像头

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
videoID int 视频设备ID

int createScreenCamDev(const char* camName, const char* jsonParam="")

  • 功能:添加桌面摄像头

最多支持添加5个;
添加成功后与本地视频设备处理一致;
本地通过getAllVideoInfo接口可以识别哪些是桌面摄像头;
创建时对应monitorID不存在时将失败,运行中monitorID对应的屏关闭时显示全黑,开启后恢复正常工作;
添加的摄像头在CRVideoSDKMain被销毁时被删除;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 返回值>=0代表添加成功,返回值为videoID(视频设备ID); 返回值<0代表添加失败,参见CRVSDK_ERR_DEF

  • 参数

参数 类型 含义
camName char* 摄像头名称
jsonParam char* 屏幕参数,json格式,支持以下可选参数:
屏幕编号:"monitorID":-1, -1代表主屏,序号从0开始,顺序与系统一致,无此参数时代表不限定屏幕。
屏幕区域:"catchRect":{"left":0,"top":0,"width":640,"height":360}, 全局绝对坐标
窗口句柄:"window":xxx

不支持空参数,多个参数时取交集

bool updateScreenCamDev(int videoID, const char* jsonParam="")

  • 功能:调整桌面摄像头对应的屏幕

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 调整是否成功

  • 参数

参数 类型 含义
videoID int 视频设备ID
jsonParam char* 参见createScreenCamDev

void destroyScreenCamDev(int videoID)

  • 功能:删除桌面摄像头

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
videoID int 视频设备ID

int createCustomVideoDev(const char* camName, CRVSDK_VIDEO_FORMAT pixFmt, int width, int height, const char* extParams)

  • 功能:添加自定义摄像头

最多支持添加5个;
添加成功后与本地视频设备处理一致;本地通过getAllVideoInfo接口可以识别哪些是自定义摄像头;
添加的摄像头在CRVideoSDKMain被销毁时被删除;
创建成功后,调用inputCustomVideoDat送入摄像头图像数据;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: >=0添加成功,返回值为videoID(视频设备ID); <0代表添加失败,定义参见CRVSDK_ERR_DEF

  • 参数

参数 类型 含义
camName char* 摄像头名
pixFmt CRVSDK_VIDEO_FORMAT 图像格式,CRVSDK_VFMT_YUV420P格式性能最佳;
width int 图像宽
height int 图像高
extParams char* 保留参数

void destroyCustomVideoDev(int videoID)

  • 功能:删除自定义摄像头

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
videoID int 视频设备ID

CRVSDK_ERR_DEF inputCustomVideoDat(int videoID, const CRVideoFrame &frm)

  • 功能:送入自定义摄像头数据

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
videoID int 视频设备ID
frm CRVideoFrame 图像数据(请保证格式、和尺寸与摄像头一致)

CRVSDK_ERR_DEF startBeauty(const char* params)

  • 功能:开启美颜

开启美颜成功后,将带来不少gpu开销,且分辨率越高开销将越大;
支持多种美颜滤镜叠加,但叠加的越多,gpu开销越大;(当滤镜强度为0时,对应滤镜将不再带来开销)
当前美颜,只对默认视频设备生效,切换默认视频设备时内部自动对新的默认视频设备进行美颜处理;
当前仅windows 8+、macOS支持开启美颜;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
params char* 美颜参数,参见CRBeautyCfg

void stopBeauty()

  • 功能:停止美颜

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

bool isBeautyStarted()

  • 功能:获取美颜是否开启

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: bool

CRVSDK_ERR_DEF updateBeautyParams(const char* params)

  • 功能:更新美颜参数

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
params char* 美颜参数,参见CRBeautyCfg

CRString getBeautyParams()

  • 功能:获取当前美颜参数

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:美颜配置CRString,json格式,请参见CRBeautyCfg

CRVSDK_ERR_DEF startVirtualBackground(const char* params)

  • 功能:开启虚拟背景

其中的人像模式,仅win8+、macOS系统才支持
切换模式时,需要先停止再开启
只对默认视频设备生效,切换默认视频设备时内部自动对新的默认视频设备进行虚拟背景处理

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
params char* 虚拟背景参数,参见CRVirtualBkCfg

void stopVirtualBackground()

  • 功能:停止虚拟背景

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:无

bool isVirtualBackgroundStarted()

  • 功能:获取虚拟背景是否开启

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: bool

CRVSDK_ERR_DEF updateVirtualBackgroundParams(const char* params)

  • 功能:更新虚拟背景参数

更新时,模式参数不能变化

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
params char* 虚拟背景参数,参见CRVirtualBkCfg

CRString getVirtualBackgroundParams()

  • 功能:获取当前虚拟背景参数

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:虚拟背景参数CRString,json格式,请参见CRVirtualBkCfg

CRVSDK_ERR_DEF setMediaCfg(const char* jsonCfg)

  • 功能:设置影音共享配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
jsonCfg char* json格式,请参见CRVideoCfg

CRString getMediaCfg()

  • 功能:获取影音共享配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:影音共享配置CRString,json格式,请参见CRVideoCfg

void startPlayMedia(const char* filename, bool bLocPlay=false, bool bPauseWhenFinished=false)

  • 功能:开始影音共享

支持本地完整路径文件,支持mp4、flv、avi、wmv、mkv、mov、3gp、wma、mp3、m4a、wav等常见文件格式;
支持网络媒体流,支持的协议有:rtmp、rtsp、httphttp(并非http网页,而是http的媒体文件,格式同本地影音文件格式);
一个房间同一时间只能一个影音共享;
开启共享失败时,将有startPlayMediaFail回调;
开启共享成功时,房间内所有人都将收到notifyMediaStart通知;
开启共享成功后,共享端开始向房间内播放文件,共享者在文件打开成功时将收回notifyMediaOpened回调;
共享中,如果文件打开失败、或中途读取失败、或播放结果, SDK内部将自动停止影音共享,房间内所有人都将收到notifyMediaStop通知;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
filename char* 媒体文件名
bLocPlay bool 是否本地播放。本地播放时,声音图像不会送入房间,适用于本地录像回放等
bPauseWhenFinished bool 文件正常播放完成时,暂停在文件未尾

void pausePlayMedia(bool bPause)

  • 功能:暂停影音共享

共享暂停后,房间内所有人将收到notifyMediaPause通知;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
bPause bool 暂停共享/恢复共享

void setMediaPlayPos(int ms)

  • 功能:设置播放位置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
ms int 设置播放位置,单位:毫秒

void stopPlayMedia()

  • 功能:停止影音共享

可以停止本地或他人的影音共享;
影音共享被停止时,房间内所有人将收到notifyMediaStop通知;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

CRMediaInfo getMediaInfo()

  • 功能:获取当前影音共享信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRMediaInfo

CRVideoFrame getMediaImg()

  • 功能:获取当前影音共享图像

他们共享的内容,需要先订阅,才能获取到图像;
如果获取图像还未到来,或解码不成功,获取的结果将为空;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVideoFrame

bool getMediaStreamInfo(CRVStreamInfo &rslt)

  • 功能:获取当前影音共享流信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:true/false, 在流不存在时将返回false

  • 参数

参数 类型 含义
rslt CRVStreamInfo 获取的流信息

void setMediaVolume(int volume)

  • 功能:配置影音播放音量

此接口调整的是影片音量,影响本地和房间中他人听到的影片的声音大小,不影响本地和他人的通话音量;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
volume int 影音音量,取值:0~255

int getMediaVolume()

  • 功能:获取影音播放音量

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 当前的影音播放音量

  • 参数:无

CRVSDK_ERR_DEF createLocMixer(const char* mixerID, const char* mixerCfg, const char* mixerContent)

  • 功能:创建本地混图器

开启成功后,可以通过updateLocMixerContent更新内容;
开启成功后,可以通过addLocMixerOutput添加输出目标,如输出到文件,或输出到网络直播流;
混图器如果异常停止时,将通过notifyLocMixerStateChanged回调用户;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
mixerID char* 混图器ID
mixerCfg char* 混图器规格配置,json格式,参见CRLocMixerCfgObj
mixerContent char* 混图器内容配置,json格式,list<CRMixerContentObj>

CRVSDK_ERR_DEF updateLocMixerContent(const char* mixerID, const char* mixerContent)

  • 功能:更新本地混图内容

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 请确保通过createLocMixer创建了有效的混图器
mixerContent char* 混图器内容配置,json格式,list<CRMixerContentObj>

CRVSDK_ERR_DEF addLocMixerOutput(const char* mixerID, const char* mixerOutput)

  • 功能:添加混图器输出

添加输出节点后,可以通过notifyLocMixerOutputInfo关注输出信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 请确保通过createLocMixer创建了有效的混图器
mixerOutput char* 混图器输出配置,json格式,list<CRLocMixerOutputObj>

void rmLocMixerOutput(const char* mixerID, const char* nameOrUrls)

  • 功能:移除混图器输出

移除输出时,内部将结束文件录制,或结束直播推流;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 请确保通过createLocMixer创建了有效的混图器
nameOrUrls char* 要移除的输出的filename或liveUrl, 支持多值,以";"分隔;

void destroyLocMixer(const char* mixerID)

  • 功能:销毁本地混图器

销毁本地混图器时,内部将自动正常移除所有输出;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 请确保通过createLocMixer创建了有效的混图器

CRVSDK_MIXER_STATE getLocMixerState(const char* mixerID)

  • 功能:得到混图器状态

  • 返回值CRVSDK_MIXER_STATE

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 请确保通过createLocMixer创建了有效的混图器

CRVSDK_ERR_DEF setMarkText(const char* videoFilePathName, const char* markText, int mSecond=-1)

  • 功能:本地视频文件打点

将在视频文件的同级目录,生成一个后缀为.srt的独立的打点信息文件(文件格式为:SRT字幕文件格式);
如果为本地当前正在录制的文件当前时间打点,内部将会为录像产生一个I帧;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF

  • 参数

参数 类型 含义
videoFilePathName char* 本地的视频文件
mSecond int 视频播放的位置(单位:毫秒)。取值<0时,代表为当前正在录制的文件当前时间打点
markText char* 打点的描述串

void removeMarkText(const char* videoFilePathName, int mSecond)

  • 功能:移除本地视频文件的某个打点

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF

  • 参数

参数 类型 含义
videoFilePathName char* 本地的视频文件
mSecond int 视频播放的位置(单位:毫秒)

CRBase::CRString getAllMarks(const char* videoFilePathName)

  • 功能:获取本地视频文件的所有打点信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 打点信息集合字符串,json格式: {"markTexts":[{"timestamp":x,"text":"string value"}]}

  • 参数

参数 类型 含义
videoFilePathName char* 本地的视频文件

CRBase::CRString getMarkFile(const char* videoFilePathName)

  • 功能:获取打点文件的绝对文件路径名。(文件格式为:SRT字幕文件格式)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 打点文件的绝对文件路径名

  • 参数

参数 类型 含义
videoFilePathName char* 本地的视频文件

void setPicResource(const char* picID, const CRVideoFrame& frm)

  • 功能:配置图片资源(设置空的帧代表移除)

设置本地图像资源,可在本地混图器中引用,参见录制内容类型CRVSDK_MIXER_CONTENT_TYPE的CRVSDK_MIXCONT_PIC;
当资源不再需要时,应将此picID设置空的图像帧,以便SDK内部将释放相关资源;
离开房间时,设置的相关图片资源,将自动被移除;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
picID char* 本地资源唯一标识
frm CRVideoFrame 图像帧数据(CRVSDK_VFMT_YUV420P性能最佳)

CRString createCloudMixer(const char* cfg);

  • 功能:创建云端混图器

可以开启多个云端混图器,具体个数和企业购买的授权相关;
开启云端混图器后,房间内所有人都将收到notifyCloudMixerStateChanged通知进入CRVSDK_MIXER_STARTING(启动中状态);
云端混图器部署有少量耗时,如果在部署过程遇到异常,将收到createCloudMixerFailed回调;
云端混图器启动完成并进入录制或推流状态时,将收到notifyCloudMixerStateChanged通知,进入CRVSDK_MIXER_RUNNING(工作中状态);
开启云端混图器在进入CRVSDK_MIXER_STARTING状态后,可以通过updateCloudMixerContent更新内容;
混图器如果在工作中遇到异常而停止时,将收到notifyCloudMixerStateChanged通知,进入CRVSDK_MIXER_NULL并携带错误原因;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 云端混图器ID

  • 参数

参数 类型 含义
cfg char* 云端混图器配置,josn格式,参见CRCloudMixerCfgObj

CRVSDK_ERR_DEF updateCloudMixerContent(const char* mixerID, const char* cfg)

  • 功能:更新云端混图器

更新混图器内容时,只能更新内容和布局,不能更改混图器规格、输出目标;
更新混图器内容时,房间内所有人都将收到notifyCloudMixerInfoChanged通知;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVSDK_ERR_DEF,CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 参见createCloudMixer
cfg char* 混图器内容配置,josn格式,参见CRCloudMixerCfgObj

void destroyCloudMixer(const char* mixerID)

  • 功能:销毁云端混图器

销毁云端混图器时,调用者将收到notifyCloudMixerStateChanged通知进入CRVSDK_MIXER_STOPPING状态,在停止完成后,房间内所有人都将收到notifyCloudMixerStateChanged通知进入CRVSDK_MIXER_NULL状态;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 参见createCloudMixer

CRString getAllCloudMixerInfo()

  • 功能:得到所有云端混图器信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: json格式字符串, 参见CRCloudMixerInfoList

CRString getCloudMixerInfo(const char* mixerID)

  • 功能:得到云端混图器信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: json格式字符串, 参见CRCloudMixerInfo

  • 参数

参数 类型 含义
mixerID char* 混图器ID, 参见createCloudMixer

void getMeetingAllAttrs(const char* cookie = "")

  • 功能:获取所有房间属性

获取结果请参见:getMeetingAllAttrsSuccessgetMeetingAllAttrsFail

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
cookie char* 上下文参数,详细介绍参见关键词

void getMeetingAttrs(const char* jsonKeys, const char* cookie = "")

  • 功能:获取部分房间属性

获取结果请参见:getMeetingAttrsSuccessgetMeetingAttrsFail

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
jsonKeys char* 需要查询的房间属性key,json格式,如:["key1", "key2"]
cookie char* 上下文参数,详细介绍参见关键词

void setMeetingAttrs(const char* jsonAttrs, const char* options = "", const char* cookie = "")

  • 功能:重置所有房间属性

设置结果请参见:setMeetingAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
jsonAttrs char* 房间属性集,json格式,如:{"key1":"value1", "key2":"value2"} (key最大长度为64B,value最大长度为8KB)
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void addOrUpdateMeetingAttrs(const char* jsonAttrs, const char* options = "", const char* cookie = "")

  • 功能:增加或者更新房间属性

结果请参见:addOrUpdateMeetingAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
jsonAttrs char* 房间属性集,json格式,如:{"key1":"value1", "key2":"value2"} (key最大长度为64B,value最大长度为8KB)
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void delMeetingAttrs(const char* jsonKeys, const char* options = "", const char* cookie = "")

  • 功能:删除房间属性

结果请参见:delMeetingAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
jsonKeys char* 需要删除的房间属性key,json格式,如:["key1", "key2"]
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void clearMeetingAttrs(const char* options = "", const char* cookie = "")

  • 功能:清空房间属性

结果请参见:clearMeetingAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void getUserAttrs(const char* jsonUserIds, const char* jsonKeys = "", const char* cookie = "")

  • 功能:获取指定用户的所有属性

结果请参见:getUserAttrsSuccessgetUserAttrsFail

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
jsonUserIds char* 目标用户id列表,一次最多包含50个用户,json格式, 如:["userId1","userId2"]
jsonKeys char* 将要获取的用户属性key列表(空串代表获取全部),json格式,如:["key1","key2"]
cookie char* 上下文参数,详细介绍参见关键词

void setUserAttrs(const char* userId, const char* jsonAttrs, const char* options = "", const char* cookie = "")

  • 功能:重置指定用户的属性

结果请参见:setUserAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userId char* 目标用户id
jsonAttrs char* 用户属性集, json格式,如:{"key1":"value1", "key2":"value2"} (key最大长度为64B,value最大长度为8KB)
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void addOrUpdateUserAttrs(const char* userId, const char* jsonAttrs, const char* options = "", const char* cookie = "")

  • 功能:添加或更新指定用户的属性

结果请参见:addOrUpdateUserAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userId char* 目标用户id
jsonAttrs char* 用户属性集, json格式,如:{"key1":"value1", "key2":"value2"} (key最大长度为64B,value最大长度为8KB)
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void delUserAttrs(const char* userId, const char* jsonKeys, const char* options = "", const char* cookie = "")

  • 功能:删除指定用户的属性

结果请参见:delUserAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userId char* 目标用户id
jsonKeys char* 需要删除的用户属性key列表,json格式,如:["key1","key2"]
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void clearUserAttrs(const char* userId, const char* options = "", const char* cookie = "")

  • 功能:清空指定用户的属性

结果请参见:clearUserAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
userId char* 目标用户id
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

void clearAllUserAttrs(const char* options = "", const char* cookie = "")

  • 功能:清空所有用户的属性

结果请参见:clearAllUserAttrsRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
options char* 操作选项,json格式参见CRMeetingAttrOptions
cookie char* 上下文参数,详细介绍参见关键词

CRArray<CRScreenCaptureSourceInfo>getScreenCaptureSources(const CRBase::CRSize &thumbSize, const CRBase::CRSize &iconSize, int types = CRVSDK_CAPSOURCE_ALL)

  • 功能:获取屏幕采集源列表。

  • 参数

参数 类型 含义
thumbSize CRSize 采集源的缩略图的目标尺寸(宽高单位为像素)。
如果图像超出目标尺寸,SDK 会等比缩小原图,例如:
原图为400x300,thumbSize为100x100,缩略图实际尺寸将为100x75。
iconSize CRSize 采集源的图标的目标尺寸(宽高单位为像素)。
如果图像超出目标尺寸,SDK 会等比缩小原图,例如:
原图为64x64,iconSize为32x32,图标实际尺寸将为32x32。
types int 获取的源类型,一个或多个CRVSDK_SCREENCAPTURESOURCE_TYPE按位组成的值

void setScreenShareCfg(const char* cfg)

  • 功能:设置屏幕共享配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

  • 参数

参数 类型 含义
cfg char* 屏幕共享配置, josn格式参见CRScreenShareCfg

CRString getScreenShareCfg()

  • 功能:获取屏幕共享配置

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRString

CRScreenShareInfo getScreenShareInfo()

  • 功能:获取共享信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRScreenShareInfo

CRVideoFrame getScreenShareImg()

  • 功能:获取当前屏幕共享图像

获取本地图像时,不需要本地订阅;
获取他人共享的内容时,需要先订阅;
如果获取他人图像还未到来,或解码不成功,获取的结果将为空;

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值CRVideoFrame

bool getScreenShareStreamInfo(CRVStreamInfo &rslt)

  • 功能:获取屏幕共享流信息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值:true/false, 在流不存在时将返回false

  • 参数

参数 类型 含义
rslt CRVStreamInfo 获取的流信息

void startScreenShare()

  • 功能:开始屏幕共享

开始结果请参见:startScreenShareRslt
开始成功后,SDK内部将自动完成抓屏共享处理

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

void stopScreenShare()

  • 功能:停止屏幕共享

结果请参见:stopScreenShareRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

void pauseScreenShare(bool bPause)

  • 功能:暂停共享

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
bPause bool true:共享暂停、false:正常共享

void setCustomizeCatchScreen(bool bCustomize)

  • 功能:开启/关闭自定义采屏

开启自定义采屏后,SDK内部将不再采屏,等待集成代码调用setCustomizeScreenImg接口将需要共享的图像送入SDK;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

参数 类型 含义
bCustomize bool true:开启、false:关闭

void setCustomizeScreenImg(const CRVideoFrame &frm)

  • 功能:将自采集屏幕图像送入SDK

此接口仅在开启自定义采屏后调用才有效,送入的图像帧率最好与setScreenShareCfg配置的帧率匹配;

  • 线程特性:线程安全,可在任意线程中调用

  • 返回值: 无

参数 类型 含义
frm CRVideoFrame 图像数据

void giveCtrlRight(const char* userID)

  • 功能:"被控端"授予"控制端"远程控制权限(此接口仅windows平台可用)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
userID char* 目标用户id

void releaseCtrlRight(const char* userID)

  • 功能:控制端放弃自已的控制权限,或被控端收回控制端的控制权限(此接口仅windows平台可用)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
userID char* 目标用户id

void sendMouseCtrlMsg(CRVSDK_MOUSEMSG_TYPE msgType, CRVSDK_MOUSEKEY_TYPE keyType, int ptX, int ptY)

  • 功能:发送远控鼠标消息(此接口仅windows平台可用)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
msgType CRVSDK_MOUSEMSG_TYPE 鼠标消息类型
keyType CRVSDK_MOUSEKEY_TYPE 鼠标键类型
ptX int 鼠标在共享内容中的横坐标
ptY int 鼠标在共享内容中的纵坐标

void sendKeyCtrlMsg(CRVSDK_KEYMSG_TYPE msgType, int vk, int reserved=0)

  • 功能:发送远控键盘消息

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
msgType CRVSDK_KEYMSG_TYPE 键盘消息类型
vk int 键盘虚拟键值,当前采用的是Windows Virtual-Key代码定义
reserved int 保留字段,当前请传0

void startScreenMark()

  • 功能:开始屏幕共享标注

开始结果请参见:startScreenMarkRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

void stopScreenMark()

  • 功能:停止屏幕共享标注

结果请参见:stopScreenMarkRslt

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

bool isScreenMarkedState()

  • 功能:获取当前标注状态

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 是否屏幕共享标注中

void sendScreenMarkData(const char* jsonMarkDat)

  • 功能:发送屏幕共享标注数据

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
jsonMarkDat char* 扩展参数,参见CRScreenMarkData

void delScreenMarkData(const char* jsonDelMarkId)

  • 功能:删除指定屏幕共享标注

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
jsonDelMarkId char* 被删除的标注id列表,json格式,如:["markid1", "markid2"]

void clearScreenMarks()

  • 功能:清空屏幕共享标注

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

void setCustomScreenCtlHandler(CRCustomScreenCtlHandler *p)

  • 功能:自定义屏幕远程控制处理(启用自定义处理后,SDK将只回调控制事件,不再模拟鼠标键盘事件)

  • 线程特性:非线程安全,只能在SDK主线程中调用

  • 返回值: 无

参数 类型 含义
p CRCustomScreenCtlHandler* 自定义屏幕远程控制处理器,设为NULL,代表恢复SDK内部处理

class CRVideoSDKMeetingCallBack

virtual void enterMeetingRslt(CRVSDK_ERR_DEF sdkErr)

  • 功能:进入房间结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因

virtual void notifyNetStateChanged(int level)

  • 功能:通知网络状态变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
level int 网络评分0~10(10分为最佳网络)

virtual void notifyMeetingStopped()

  • 功能:通知房间被结束

  • 线程特性:在SDK主线程中回调

  • 返回值:无

virtual void notifyMeetingDropped(CRVSDK_MEETING_DROPPED_REASON reason)

  • 功能:通知与房间断开

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
reason CRVSDK_MEETING_DROPPED_REASON 断开原因

virtual void notifyUserEnterMeeting(const char* userID)

  • 功能:通知有人进入房间

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID

virtual void notifyUserLeftMeeting(const char* userID)

  • 功能:通知有人离会

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID

virtual void setNickNameRslt(const char* userID, CRVSDK_ERR_DEF sdkErr)

  • 功能:修改昵称结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因

virtual void notifyNickNameChanged(const char* userID, const char* oldName, const char* newName, const char* oprUserID)

  • 功能:通知昵称变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
oldName char* 旧昵称
newName char* 新昵称
oprUserID char* 操作者用户ID

virtual void kickoutRslt(CRVSDK_ERR_DEF sdkErr, const char* userID)

  • 功能:请出房间结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因

virtual void sendMeetingCustomMsgRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:发送房间内广播消息结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void notifyMeetingCustomMsg(const char* fromUserID, const char* msg)

  • 功能:通知房间内广播消息

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
fromUserID char* 发送者用户ID
msg char* 自定义消息内容

virtual void notifyAudioDevChanged()

  • 功能:通知本地音频设备变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

virtual void notifyAudioErr(CRVSDK_ERR_DEF sdkErr)

  • 功能:通知本地音频相关错误

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因

virtual void notifyMicStatusChanged(const char* userID, CRVSDK_ASTATUS oldStatus, CRVSDK_ASTATUS newStatus, const char* oprUserID)

  • 功能:通知用户麦克风状态变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
oldStatus CRVSDK_ASTATUS 旧的麦克风状态
newStatus CRVSDK_ASTATUS 新的麦克风状态
oprUserID char* 操作者用户ID

virtual void notifyMicEnergy(const char* userID, int oldLevel, int newLevel)

  • 功能:通知房间内用户声音能量变化(包含自已)

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
oldLevel int 之前的说话声音强度(0~9)
newLevel int 现在的说话声音强度(0~9)

virtual void notifyCloseAllMic(const char* oprUserID)

  • 功能:通知有人发起了全体关麦操作

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
oprUserID char* 操作者用户ID

virtual void notifySetVoiceChange(const char* userID, int type, const char* oprUserID)

  • 功能:通知变声类型改变

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
type int 预定义变声类型:CRVSDK_VOICECHANGE_TYPE
自定义变声:取值100~200, 150为原声,<150为降调,>150为升调
oprUserID char* 操作者用户ID

virtual void notifyVideoDevChanged(const char* userID)

  • 功能:通知用户视频设备设备变化(设备个数、设备能力参数、默认设备、启停多视频设备等)

获取视频设备列表,请参见: getAllVideoInfo;
获取当前默认视频设备,请参见:getDefaultVideo;

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID

virtual void notifyDefaultVideoChanged(const char* userID, int videoID)

  • 功能:通知用户默认视频设备变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
videoID int 默认设备id

virtual void openVideoDevRslt(int videoID, bool isSucceed)

  • 功能:本地视频设备打开结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
videoID int 默认设备id
isSucceed bool 打开结果

virtual void notifyVideoStatusChanged(const char* userID, int oldStatus, int newStatus, const char* oprUserID)

  • 功能:通知用户视频状态变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
oldStatus CRVSDK_VSTATUS 之前的状态
newStatus CRVSDK_VSTATUS 当前的状态
oprUserID char* 操作者用户ID

virtual void startPlayMediaFail(CRVSDK_ERR_DEF sdkErr)

  • 功能:开启影音共享功能失败

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因

virtual void notifyMediaStart(const char* userID)

  • 功能:通知影音共享开启

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID

virtual void notifyMediaOpened(int totalTime, int w, int h)

  • 功能:通知本端影音共享文件打开成功

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
totalTime int 文件总时长(ms), -1代表没有总时长(通常为网络摄像头、直播流等)
w int 图像宽
h int 图像高

virtual void notifyMediaStop(const char* userID, CRVSDK_MEDIA_STOPREASON reason)

  • 功能:通知影音共享停止

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
reason CRVSDK_MEDIA_STOPREASON 停止的原因

virtual void notifyMediaPause(const char* userID, bool bPause)

  • 功能:通知影音共享停止

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID
bPause bool 是否暂停

virtual void notifyLocMixerStateChanged(const char* mixerID, CRVSDK_MIXER_STATE state)

  • 功能:通知本地录制/推流状态变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
mixerID char* 混图器ID
state CRVSDK_MIXER_STATE 状态

virtual void notifyLocMixerOutputInfo(const char* mixerID, const char* nameOrUrl, const char* outputInfo)

  • 功能:通知本地录制/推流状态变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
mixerID char* 混图器ID
nameOrUrl char* 输出的目标
outputInfo char* json格式,请参见CRLocMixerOutputInfoObj

virtual void createCloudMixerFailed(const char* mixerID, CRVSDK_ERR_DEF sdkErr)

  • 功能:创建云端录制/推流失败

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
mixerID char* 混图器ID
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因

virtual void notifyCloudMixerStateChanged(const char* mixerID, CRVSDK_MIXER_STATE state, const char* exParam, const char* operUserID)

  • 功能:通知云端录制/推流状态变化

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
mixerID char* 混图器ID
state CRVSDK_MIXER_STATE 录制状态
exParam char* json格式扩展参数,state状态及参数定义:
MIXER_NULL:包含err(CRVSDK_ERR_DEF), errDesc字段;
MIXER_STARTING:包含jsonCfg字段
operUserID char* 操作者用户ID

virtual void notifyCloudMixerEvent(const char* mixerID, CRVSDK_CLOUDMIXER_EVENT_TYPE eventType, const char* jsonStr)

  • 功能:云端录制/推流事件通知

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
mixerID char* 混图器ID
eventType CRVSDK_CLOUDMIXER_EVENT_TYPE 事件类型
jsonStr char* json格式,请参见CRCloudMixerEventInfoObj

请根据eventType不同的取值,jsonStr字段做不同的数据解析。

  CRVSDK_EVT_OUTPUT_START(1):输出开始:
参数 类型 含义
outputName string 文件名/推流地址
  CRVSDK_EVT_OUTPUT_END(2):输出结束:
参数 类型 含义
outputName string 文件名/推流地址
startTime int64 创建时间(从1970年1月1日00:00:00起的毫秒数)
duration int64 录像时长(ms)
size int64 文件大小(Byte)
  CRVSDK_EVT_OUTPUT_FAILED(3):输出错误:
参数 类型 含义
outputName string 文件名/推流地址
errCode CRVSDK_ERR_DEF 错误码
errDesc string 错误描述
  CRVSDK_EVT_FILE_UPLOADING(4):文件上传中:
参数 类型 含义
outputName string 文件名/推流地址
progress float 上传进度(0~100.0)
  CRVSDK_EVT_FILE_UPLOADED(5):文件上传完成:
参数 类型 含义
outputName string 文件名/推流地址
startTime int64 创建时间(从1970年1月1日00:00:00起的毫秒数)
duration int64 录像时长(ms)
size int64 文件大小(Byte)
  CRVSDK_EVT_FILE_UPLOADFAILED(6):文件上传失败:
参数 类型 含义
outputName string 文件名/推流地址
errCode CRVSDK_ERR_DEF 错误码
errDesc string 错误描述
  CRVSDK_EVT_ALLFILE_FINISHED(8):所有文件完成:
参数 类型 含义
allFileState int 录制文件上传整体状态, 0:全部未上传,1:全部上传成功,2:部分上传成功
allFileInfo array<CRCloudRecordFileInfo> 录制文件上传信息列表
  CRVSDK_EVT_NOT_RECV_STREAM(100):未接收到流数据:
参数 类型 含义
eventDesc string 事件描述
outputName string 文件名/推流地址
streamID string 视频设备ID
  CRVSDK_EVT_PUSH_STREAM_FAILED(101):推流失败:
参数 类型 含义
eventDesc string 事件描述
outputName string 文件名/推流地址
  CRVSDK_EVT_MAKE_COVER_FAILED(102):生成封面失败:
参数 类型 含义
eventDesc string 事件描述
  CRVSDK_EVT_NETDISK_FILEALREADYEXISTS(103):录像文件已经上传:
参数 类型 含义
eventDesc string 事件描述
outputName string 文件名/推流地址
  CRVSDK_EVT_MCU_RUN_TIMEOUT(200):录制服务运行超时:
参数 类型 含义
eventDesc string 事件描述
  CRVSDK_EVT_MCU_SHAKEHAND_TIMEOUT(201):录制服务握手超时:
参数 类型 含义
eventDesc string 事件描述

virtual void notifyCloudMixerInfoChanged(const char* mixerID)

  • 功能:通知云端录制/推流信息变化

可调用:getCloudMixerInfo获取相关信息

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
mixerID char* 混图器ID

virtual void getMeetingAllAttrsSuccess(const char* attrs, const char* cookie)

  • 功能:获取所有房间属性成功

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
attrs char* 房间属性集,json结构体请参见CRAttrObjs
cookie char* 上下文参数,详细介绍参见关键词

virtual void getMeetingAllAttrsFail(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:获取所有房间属性失败

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void getMeetingAttrsSuccess(const char* attrs, const char* cookie)

  • 功能:获取部分房间属性成功

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
attrs char* 房间属性集,json结构体请参见CRAttrObjs
cookie char* 上下文参数,详细介绍参见关键词

virtual void getMeetingAttrsFail(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:获取部分房间属性失败

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void setMeetingAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:重置所有房间属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void addOrUpdateMeetingAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:添加或更新房间属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void delMeetingAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:删除房间属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void clearMeetingAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:清空所有房间属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF CRVSDKERR_NOERR代表成功,其它值代表失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void notifyMeetingAttrsChanged(const char* adds, const char* updates, const char* delKeys)

  • 功能:通知房间属性改变

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
adds char* 增加房间属性集,json格式,请参见CRAttrObjs
updates char* 变化的用户属性集,json格式,请参见CRAttrObjs
delKeys char* 被删除的用户属性列表,json格式,如:["key1", "key2"]

virtual void getUserAttrsSuccess(const char* attrs, const char* cookie)

  • 功能:获取指定用户的所有属性成功

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
attrs char* 用户属性集,json结构体请参见CRUsrAttrObjs
cookie char* 上下文参数,详细介绍参见关键词

virtual void getUserAttrsFail(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:获取指定用户的所有属性失败

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void setUserAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:重置指定用户的属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void addOrUpdateUserAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:添加或更新指定用户的属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void delUserAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:删除指定用户的属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void clearAllUserAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:清空所有用户的属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void clearUserAttrsRslt(CRVSDK_ERR_DEF sdkErr, const char* cookie)

  • 功能:清空指定用户的属性结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因
cookie char* 上下文参数,详细介绍参见关键词

virtual void notifyUserAttrsChanged(const char* userId, const char* adds, const char* updates, const char* delKeys)

  • 功能:通知用户属性改变

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userId char* 用户ID
adds char* 增加的用户属性集,json格式,请参见CRAttrObjs
updates char* 变化的用户属性集,json格式,请参见CRAttrObjs
delKeys char* 被删除的用户属性列表,json格式,如:["key1", "key2"]

virtual void startScreenShareRslt(CRVSDK_ERR_DEF sdkErr)

  • 功能:开启屏幕共享结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因

virtual void stopScreenShareRslt(CRVSDK_ERR_DEF sdkErr)

  • 功能:停止屏幕共享结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因

virtual void notifyScreenShareStarted(const char* userID)

  • 功能:通知屏幕共享开始

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 共享开启人

virtual void notifyScreenShareStopped(const char* oprUserID)

  • 功能:通知屏幕共享结束

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
oprUserID char* 共享停止人

virtual void notifyGiveCtrlRight(const char* operUserId, const char* targetUserId)

  • 功能:通知给予某人控制权限

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
operUserId char* 操作人
targetUserId char* 权限赋予人

virtual void notifyReleaseCtrlRight(const char* operUserId, const char* targetUserId)

  • 功能:通知释放了控制权限

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
operUserId char* 操作人
targetUserId char* 权限释放人

virtual void startScreenMarkRslt(CRVSDK_ERR_DEF sdkErr)

  • 功能:开始屏幕共享标注结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因

virtual void stopScreenMarkRslt(CRVSDK_ERR_DEF sdkErr)

  • 功能:停止屏幕共享标注结果

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
sdkErr CRVSDK_ERR_DEF 失败的具体原因

virtual void notifyScreenMarkStarted()

  • 功能:通知屏幕共享标注开始

  • 线程特性:在SDK主线程中回调

  • 返回值:无

virtual void notifyScreenMarkStopped()

  • 功能:通知屏幕共享标注停止

  • 返回值:无

virtual void notifySendScreenMarkData(const char* jsonMarkDat)

  • 功能:通知屏幕共享标注数据

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
jsonMarkDat char* json格式,格式参考:CRScreenMarkData

virtual void notifyDelScreenMarkData(const char* jsonDelMarkId, const char* oprUserID)

  • 功能:通知屏幕共享标注被删除的数据

  • 线程特性:在SDK主线程中回调

  • 返回值:无

  • 参数

参数 类型 含义
jsonDelMarkId char* 被删除的标注id列表,json格式,如:["markid1", "markid2"]
oprUserID char* 操作者用户ID

virtual void notifyClearScreenMarks()

  • 功能:通知屏幕共享标注被清空

  • 线程特性:在SDK主线程中回调

  • 返回值:无

class CRCustomScreenCtlHandler

自定义屏幕远程控制处理类

virtual void notifyMouseCtrlMsg(CRVSDK_MOUSEMSG_TYPE msgType, CRVSDK_MOUSEKEY_TYPE keyType, int ptX, int ptY)

  • 功能:通知鼠标控制消息

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
msgType CRVSDK_MOUSEMSG_TYPE 消息类型
keyType CRVSDK_MOUSEKEY_TYPE 鼠标按键类型
ptX int 鼠标的x位置
ptY int 鼠标的y位置

virtual void notifyKeyCtrlMsg(CRVSDK_KEYMSG_TYPE msgType, int vk, int reserved)

  • 功能:通知键盘控制消息

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
msgType CRVSDK_KEYMSG_TYPE 消息类型
vk int 键盘虚拟键值,当前采用的是Windows Virtual-Key代码定义
reserved int 保留字段,当前总为0

class CRArray

SDK返回列表数据类型,可以拷贝对象保存,CRArray内部数据引用计数共享,拷贝、赋值开销很小;

CRArray(const CRArray<T>& s)

  • 功能:CRArray拷贝构造

CRArray内部数据引用计数共享,开销很小;

CRArray& operator=(const CRArray<T>& s)

  • 功能:CRArray赋值

CRArray内部数据引用计数共享,开销很小;

~CRArray()

  • 功能:CRArray析构

析构时减少对数据的引用,引用清0时,将释放真正数据内存;

void clear()

  • 功能:清空数据

清空时减少对数据的引用,引用清0时,将释放真正数据内存;

uint32_t count() const

  • 功能:得到数据个数

没有数据,或数据被清空时,返回0;

const T* ptr() const

  • 功能:得到数组首指针

内部数据以数组方式存储,可以对指针进行++,获取后继元素;

const T& item(uint32_t index) const

  • 功能:得到数组某个元素

class CRString

CRString为CRByteArray的别名,功能参见CRByteArray

class CRByteArray

CRByteArray为字节数组管理类, 有以下特性:

  1. 可以存储二进制buf,也可以存储字符串(CRByteArray总确保在数据尾部有一个'\0');
  2. 内部数据引用计数共享,所以对象拷贝、赋值非常高效;
  3. 当对象数据被修改时,自动取消共享(临时深度copy),不影响其它对象内容;
  4. SDK中CRByteArray导出接口不包含c++ stl,stl有关接口都是以内联方式提供给外部,这样避免了对c++ stl的依赖,可以不同c++版本下二进制兼容;

CRByteArray()

  • 功能:构造函数一个空的CRByteArray

CRByteArray(const CRByteArray &other)

  • 功能:拷贝构造,内部业务数据引用计数

CRByteArray(const char* data, int dataLen = -1)

  • 功能:从内存块构造CRByteArray

将对数据进行深度copy;
当dataLen<0时,则假定数据为'\0'结尾的字符串,并计算其长度('\0'不计长度);
当data为NULL时,将构造出一个空的CRByteArrray;

CRByteArray(const std::string &str)

  • 功能:从std::string构造CRByteArray

将对数据进行深度copy;

static CRByteArray fromRawData(const char* data, int dataLen)

  • 功能:从内存块构造CRByteArray,不copy数据,引用内存块方式

不会copy数据,且CRByteArray不拥有此指针,所以在CRByteArray仍使用此指针时,必须确保data有效;
使用data指针的CRByteArray产生副本时(拷贝、赋值给其它对象),这些副本也将使用此指针;
当CRByteArray以及副本都被清空或修改后,就不再引用data,此时data可以安全释放;
不会在data尾部追加'\0',所以通过constData()获取指针当字符串处理时,要注意data以'\0'结尾;

CRByteArray(int size, char ch)

  • 功能:构造一个size大小值都为ch的CRByteArray

~CRByteArray()

  • 功能:CRByteArray析构

析构时减少对数据的引用,引用清0时,将释放真正数据内存;

CRByteArray& append(const char* data, int dataLen=-1)

  • 功能:追加内存块

当dataLen<0时,则假定数据为'\0'结尾的字符串,并计算其长度('\0'不计长度);
当data为NULL或len为0时,将不做任何动作;

CRByteArray& append(const CRByteArray &ba)

  • 功能:追加CRByteArray

当ba为空时,将不做任何动作;
当this为空时,将自动与ba进行数据引用共享;

CRByteArray& append(char chr)

  • 功能:追加一个字符

CRByteArray& append(const std::string &str)

  • 功能:追加一个std::string

CRByteArray& remove(int pos, int len)

  • 功能:移除字符

当pos无效,或len<=0时,不做任何处理;

CRByteArray& insert(int pos, const CRByteArray &ba)

  • 功能:插入CRByteArray

当ba为空字符串时,将不做任何处理;
当pos<0,或>length时,将不做任何处理;
当pos为0时,代表插入在字符串头部;
当pos为length时,代表插入在字符串尾部;

CRByteArray& insert(int pos, const char *data, int dataLen = -1)

  • 功能:插入CRByteArray

当dataLen<0时,则假定数据为'\0'结尾的字符串,并计算其长度('\0'不计长度);
当data为NULL或dataLen为0时,将不做任何处理;
当pos<0,或>length时,将不做任何处理;
当pos为0时,代表插入在字符串头部;
当pos为length时,代表插入在字符串尾部;

void reserve(int size)

  • 功能:设置保留空间

CRByteArray将确保存内部分配的内存至少有size大小;
如果size小于当前数据大小,不会做任何处理;
对于要频繁插入、追加数据的情况,预先分配足够的大小,效率会更优;

int capacity() const

  • 功能:获取保留空间的大小

void squeeze()

  • 功能:释放多余内存空间

int clear() const

  • 功能:清空内容

CRByteArray将为成空串;
如果之前的数据没有其它CRByteArray引用,将被释放;

void resize(int size)

  • 功能:重置大小

如果size>当前大小,字节数组将被扩展到size大小,扩展的内存内容未初始化;
如果size<当前大小,后面的数据将被删除;

int size() const

  • 功能:获取数据大小(同length())

int length() const

  • 功能:获取数据大小(同size())

bool isEmpty() const

  • 功能:判断数据是否为空 (同size()<=0)

int indexOf(char ch, int from = 0) const

  • 功能:查找字符

查找失败时,返回-1

int indexOf(const char* data, int from = 0, int dataLen=-1) const

  • 功能:查找数据

当dataLen<0时,则假定data为'\0'结尾的字符串,并计算其长度('\0'不计长度);
查找失败时,返回-1

int indexOf(const CRByteArray &v, int from = 0) const

  • 功能:查找数据

查找失败时,返回-1

int indexOf(const std::string &v, int from = 0) const

  • 功能:查找数据

查找失败时,返回-1

CRByteArray& replace(char src, char dst)

  • 功能:字符替换

CRByteArray& replace(const CRByteArray &src, const CRByteArray &dst)

  • 功能:数据替换

CRByteArray& replace(int pos, int len, const CRByteArray&dst)

  • 功能:数据替换

pos无效时,将不做任何处理;

CRByteArray& replace(int pos, int len, const CRByteArray&dst)

  • 功能:数据替换

pos无效时,将不做任何处理;

CRByteArray mid(int pos, int len = -1) const

  • 功能:获取子串

pos无效时,将不做任何处理;
len<0,或pos+len超出length,将返回pos之后的所有内容;

CRByteArray left(int len) const

  • 功能:返回前len长度的子串

len<=0,将返回空串;
len大于数据长度,将返整串;

CRByteArray left(int len) const

  • 功能:返回尾端len长度的子串

len<=0,将返回空串;
len大于数据长度,将返整串;

const char* constData() const

  • 功能:得到数据指针

不能对数据进行修改(内部数据为共享数据);
fromRawData()生成的CRByteArray对象,CRByteArray不会在其后追加'\0',进行字符串处理时请注意数据尾部有结束符;

char* getData()

  • 功能:得到可修改数据指针

如果有副本,将会解引用,并进行深度copy;

CRByteArray& operator= (const char* pStr)

  • 功能:向CRByteArray设置字符串内容

将对pStr进行深度copy;

CRByteArray& operator= (const CRByteArray &ba)

  • 功能:向CRByteArray设置内容

内部业务数据引用计数,效率高;

CRByteArray& operator= (const std::string &str)

  • 功能:向CRByteArray设置字符串内容

将对str进行深度copy;

CRByteArray& operator+= (const CRByteArray &ba)

CRByteArray& operator+= (const char* pStr)

CRByteArray& operator+= (const std::string& str)

CRByteArray operator+ (const CRByteArray& ba)

  • 功能: 返回两个串拼接的结果

CRByteArray operator+ (const std::string& str)

  • 功能: 返回两个串拼接的结果

CRByteArray operator+ (const char* pStr)

  • 功能: 返回两个串拼接的结果

char operator[ ](int pos) const

  • 功能: 返回pos位置上的值,请注意pos应该为合理位置;

void set(int pos, char ch)

  • 功能: 设置pos位置上的值,请注意pos应该为合理位置;

bool operator == (const CRByteArray &ba) const

  • 功能: 检查两个串的数据是否完全相同;

bool operator != (const CRByteArray &ba) const

  • 功能: 检查两个串的数据是否不相同;

bool operator < (const CRByteArray &ba) const

  • 功能: 检查当前串是否小于ba;

void swap(CRByteArray &other)

  • 功能: 数据交换,效率高;

CRByteArray trimmed()

  • 功能: 返回移除了首尾空白字符的串

空白字符'\t', '\n', '\v', '\f', '\r', and ' '

CRByteArray toPercentEncoding() const

  • 功能: 转换成URL编码串

std::string toStdString() const

  • 功能: 转换成std::string

CRByteArrayList split(char sep) const

class CRByteArrayList

CRByteArrayList继承自std::list<CRByteArray>

int totalByteSize() const

  • 功能: 列表中数据总长度

CRByteArray popByte_front(int nByteSize)

  • 功能: 从列表中取出nByteSize的数据

如果列表中数据总长度不足nByteSize,将返回所有数据;
被取出数据将在列表中被移除;

CRByteArray join() const

  • 功能: 将列表中所有CRByteArray串接成一个单一的CRByteArray

CRByteArray join(char ch) const

  • 功能: 将列表中所有CRByteArray串接成一个单一的CRByteArray, 各CRByteArray之间插入ch字符

CRByteArray join(const CRByteArray &separator) const

  • 功能: 将列表中所有CRByteArray串接成一个单一的CRByteArray, 各CRByteArray之间插入separator

class CRVideoFrameObserver

视频帧观测器类
在视频线程回调,处理时要注意多线程问题;
不能进行耗时处理,将会影响视频的流畅性;

virtual void onCaptureVideoFrame(CRVideoFrame& frm)

  • 功能:本地视频图像回调

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
frm CRVideoFrame 视频图像,可被修改

virtual void onRemoteVideoFrame(const CRUserVideoID &vID, CRVideoFrame& frm, CRVSDK_VSTEAMLV_TYPE lv = CRVSDK_VSTP_LV0)

  • 功能: 远端视频图像处理

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
vID CRUserVideoID 视频标识
frm CRVideoFrame 视频图像,可被修改
lv CRVSDK_VSTEAMLV_TYPE 大小流标识

class CRVideoEncDatObserver

视频编码数据观测器类
在视频线程回调,处理时要注意多线程问题;
不能进行耗时处理,将会影响视频的流畅性;

virtual void onLocVideoEncDat(const CRUserVideoID &vID, CRVSDK_VSTEAMLV_TYPE lv, CREncPacket& dat)

  • 功能:本地视频编码数据

只有在有人订阅、云端录制或云端直播内容中包含对应视频,才会开始编码,此时才能监听到编码数据;
如果观测器是在本地视频已开启之后下添加的,有可能观察的编码数据,第1帧不是I帧,可以通过CREncPacket中数据来识别;

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
vID CRUserVideoID 视频标识
lv CRVSDK_VSTEAMLV_TYPE 大小流标识
dat CREncPacket 视频编码数据

virtual void onRemoteVideoEncDat(const CRUserVideoID &vID, CRVSDK_VSTEAMLV_TYPE lv, CREncPacket& dat)

  • 功能: 收到的远端接视频编码数据

只有本地订阅了对应视频,才能收到对方的视频编码数据;
如果观测器是在订阅之后添加的,有可能观察的编码数据,第1帧不是I帧,可以通过CREncPacket中数据来识别;

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
vID CRUserVideoID 视频标识
lv CRVSDK_VSTEAMLV_TYPE 大小流标识
dat CREncPacket 视频编码数据

class CRAudioFrameObserver

音频帧观测器类;
不能进行耗时处理,将会影响声音的流畅性;

virtual void onRecordAudioFrame(CRAudioFrame& frm)

  • 功能:采集的原始音频数据

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
frm CRAudioFrame 声音数据,获取到的数据将是:48khz 16bit 单声道数据。如果格式不匹配,可以使用CRAudioCover进行转换

virtual void onPlaybackAudioFrame(CRAudioFrame& frm)

  • 功能:播放的原始音频数据

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
frm CRAudioFrame 声音数据,获取到的数据将是:48khz 16bit 单声道数据。如果格式不匹配,可以使用CRAudioCover进行转换

virtual void onPlaybackAudioFrameBeforeMixing(const char* userID, CRAudioFrame& frm)

  • 功能:用户的混音前原始音频数据

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
userID char* 用户ID, 参见CRLoginDat的_userID字段
frm CRAudioFrame 声音数据,获取到的数据将是:48khz 16bit 单声道数据。如果格式不匹配,可以使用CRAudioCover进行转换

virtual void onMixedAudioFrame(CRAudioFrame& frm)

  • 功能:采集+播放混音后数据

  • 线程特性:在子线程回调,需要注意线程安全。

  • 返回值:无

  • 参数

参数 类型 含义
frm CRAudioFrame 声音数据,获取到的数据将是:48khz 16bit 单声道数据。如果格式不匹配,可以使用CRAudioCover进行转换

class CRAudioCover

声音pcm数据重采样类

重采样时,内部会存留最后的波形数据,为下批数据的启始波型提供支持;
多路pcm,应该使用各自的重采样对象;
一路连续的pcm,避免重新init,否则会在两段数据接头处引入噪声;
可在任意线程中使用,但非线程安全,多线程使用时注意加锁;

CRVSDK_ERR_DEF init(CRVSDK_AUDIO_FORMAT srcFmt, int srcSampleRate, CRVSDK_AUDIO_CHLAYOUT srcChannel, CRVSDK_AUDIO_FORMAT dstFmt, int dstSampleRate, CRVSDK_AUDIO_CHLAYOUT dstChannel)

  • 功能:初始化重采样输入、输出配置

  • 线程特性:非线程安全,多线程使用时注意加锁

  • 返回值CRVSDK_ERR_DEF, CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
srcFmt CRVSDK_AUDIO_FORMAT 源声音数据类型
srcSampleRate int 源采样率,如16khz取值16000
srcChannel CRVSDK_AUDIO_CHLAYOUT 源声道布局类型
dstFmt CRVSDK_AUDIO_FORMAT 目标声音数据类型
srcSampleRate int 目标采样率,如16khz取值16000
srcChannel CRVSDK_AUDIO_CHLAYOUT 目标声道布局类型

CRVSDK_ERR_DEF cover(const CRBase::CRByteArray &src, CRBase::CRByteArray &dst)

  • 功能:执行重采样

  • 线程特性:非线程安全,多线程使用时注意加锁

  • 返回值CRVSDK_ERR_DEF, CRVSDKERR_NOERR代表调用成功

  • 参数

参数 类型 含义
src CRByteArray 源数据
dst CRByteArray 结果数据