开放录像服务器SDK接口(AnyChat Record Server SDK)
亲,非常高兴的告诉您,从AnyChat r4115版本开始,我们开放了录像服务器SDK接口(AnyChat Record Server SDK)。录像服务器SDK支持的平台包括Windows、Linux(x86、x64),支持的开发语言有C++、Java,示例代码位于SDK的src\recordserver目录下。
AnyChat Record Server SDK是服务器端SDK,用于上层应用实现特定的服务器录制功能。通过SDK接口可以获取到每个用户的视频、语音、通信数据,由上层应用自己写入文件。
录像服务器SDK的工作原理是:
一、录像服务器启动:调用API:BRRS_InitSDK(0);之后,录像服务器主动与核心服务器建立连接,连接成功之后,将会触发录像服务器的回调事件:BRRS_OnServerAppMessage_CallBack;录像服务器读当前目录下的配置文件AnyChatRecordServer.ini,配置文件会指明核心服务器的IP地址、端口信息;录像服务器与核心服务器连接成功之后,业务服务器也将收到相关的事件通知;
二、录像任务的下达:
1、客户端下达录像指令:调用API接口:BRAC_StreamRecordCtrl(dwUserId, TRUE,dwFlags, 0),其中dwFlags参数增加标志:BRAC_RECORD_FLAGS_SERVER;
2、或是业务服务器下达录像指令:调用API接口:BRAS_StreamRecordCtrl(dwUserId, TRUE, 0, 0);
三、录像任务的执行:
1、开始录像事件:当录像服务器收到录像任务后,将产生一个回调事件:BRRS_OnRecordStart_CallBack(userid),通知上层应用录像开始,上层应用可以创建一个文件用于录像;
2、录像数据事件:当录像服务器收到语音、视频、通信数据之后,将重复的产生回调事件:BRRS_OnRecordBuffer_CallBack(userid, buf),通知上层有录像数据,上层应用可以将这些数据写入到文件中;
四、录像任务的停止:
1、客户端下达停止指令:调用API接口:BRAC_StreamRecordCtrl(dwUserId, FALSE, 0, 0),
2、或是业务服务器下达录像指令:调用API接口:BRAS_StreamRecordCtrl(dwUserId, FALSE, 0, 0);
五、事件回调:
1、录像停止事件:当录像服务器收到停止指令之后,将在录像服务器上产生一个回调事件:BRRS_OnRecordFinish_CallBack(userid),上层应用可以关闭文件,并将录像文件名通过事件参数反馈给录像服务器,录像服务器会将相关信息通知到业务服务器;
2、录像任务事件:当业务服务器收到录像服务器返回的录像任务相关信息之后,将在业务服务器上产生一个回调事件:BRAS_OnServerRecord_CallBack(userid, lpRecordFileName),业务服务器可以将相关的录像记录进行保存等操作;
录像服务器SDK接口(AnyChat Record Server SDK)C++版本
#define BRRS_API extern "C"
#define BRRS_SERVERAPPMSG_CONNECTED 1 ///< 连接AnyChat服务器成功
#define BRRS_SERVERAPPMSG_DISCONNECT 2 ///< 与AnyChat服务器断开连接
// 查询信息类型定义(API:BRRS_QueryUserInfo 传入参数)
#define BRRS_USERINFO_TYPE_NICKNAME 1 ///< 用户名
#define BRRS_USERINFO_TYPE_VCODEC 10 ///< 视频编码器
#define BRRS_USERINFO_TYPE_WIDTH 11 ///< 视频宽度
#define BRRS_USERINFO_TYPE_HEIGHT 12 ///< 视频高度
#define BRRS_USERINFO_TYPE_FRAMERATE 13 ///< 视频帧率
#define BRRS_USERINFO_TYPE_ACODEC 20 ///< 音频编码器
#define BRRS_USERINFO_TYPE_SAMPLERATE 21 ///< 音频采样率
#define BRRS_USERINFO_TYPE_CHANNELS 22 ///< 音频采样通道数
#define BRRS_USERINFO_TYPE_SAMPLEBITS 23 ///< 音频采样位数
// 参数设置类型定义(API:BRRS_SetSDKOption 传入参数)
#define BRRS_SO_USESERVERTIMESTAMP 1 ///< 使用服务器时间戳
// 数据类型标志(回调函数:OnAnyChatRecordBufferCallBack 参数)
#define BRRS_RECORD_FLAGS_AUDIO 0x01 ///< 音频数据
#define BRRS_RECORD_FLAGS_VIDEO 0x02 ///< 音频数据
#define BRRS_RECORD_FLAGS_BUFFER 0x04 ///< 透明通道缓冲区数据
#define BRRS_RECORD_FLAGS_BUFFEREX 0x08 ///< 透明通道扩展缓冲区
#define BRRS_RECORD_FLAGS_KEYFRAME 0x10 ///< 视频关键帧
#define BRRS_RECORD_FLAGS_SILENCE 0x20 ///< 音频静音帧
// 服务器应用程序消息回调函数定义
typedef void (CALLBACK* BRRS_OnServerAppMessage_CallBack)(DWORD dwMsg, DWORD wParam, DWORD lParam, LPVOID lpUserValue);
// 开始录像事件回调函数定义
typedef DWORD (CALLBACK* BRRS_OnRecordStart_CallBack)(DWORD dwUserId, LPVOID lpUserValue);
// 录像数据事件回调函数定义
typedef DWORD (CALLBACK* BRRS_OnRecordBuffer_CallBack)(DWORD dwUserId, CHAR* lpBuf, DWORD dwSize, DWORD dwTimeStamp, DWORD dwFlags, LPVOID lpUserValue);
// 结束录像事件回调函数定义
typedef DWORD (CALLBACK* BRRS_OnRecordFinish_CallBack)(DWORD dwUserId, CHAR* lpFileName, DWORD dwSize, DWORD* lpRecordSeconds, LPVOID lpUserValue);
/**
*API 方法定义
*/
// 设置服务器应用程序消息回调函数
BRRS_API DWORD BRRS_SetOnServerAppMessageCallBack(BRRS_OnServerAppMessage_CallBack lpFunction, LPVOID lpUserValue=NULL);
// 设置开始录像事件回调函数
BRRS_API DWORD BRRS_SetOnRecordStartCallBack(BRRS_OnRecordStart_CallBack lpFunction, LPVOID lpUserValue=NULL);
// 设置录像数据事件回调函数
BRRS_API DWORD BRRS_SetOnRecordBufferCallBack(BRRS_OnRecordBuffer_CallBack lpFunction, LPVOID lpUserValue=NULL);
// 设置录像完成事件回调函数
BRRS_API DWORD BRRS_SetOnRecordFinishCallBack(BRRS_OnRecordFinish_CallBack lpFunction, LPVOID lpUserValue=NULL);
// 获取SDK版本信息
BRRS_API DWORD BRRS_GetSDKVersion(DWORD& dwMainVer, DWORD& dwSubVer, TCHAR* lpCompileTime, DWORD dwBufLen);
// 初始化SDK
BRRS_API DWORD BRRS_InitSDK(DWORD dwReserved);
// 释放资源
BRRS_API DWORD BRRS_Release(void);
// 查询用户信息
BRRS_API DWORD BRRS_QueryUserInfo(DWORD dwUserId, DWORD dwInfoName, CHAR* lpValue, DWORD dwSize);
// SDK内核参数设置
BRRS_API DWORD BRRS_SetSDKOption(DWORD optname, CHAR* optval, DWORD optlen);
页:
[1]