admin 发表于 2014-8-1 14:00:00

开放录像服务器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),业务服务器可以将相关的录像记录进行保存等操作;

admin 发表于 2014-8-1 16:27:47

录像服务器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]
查看完整版本: 开放录像服务器SDK接口(AnyChat Record Server SDK)