接口协议适用平台:(Windows&Linux&ARM)
1. SDK描述
EasyIPCamera是一套非常稳定、易用、支持多种平台(包括Windows/Linux 32&64,Android,ARM hisiv100/hisiv200/hisiv300/hisiv400等平台)的RTSP-Server组件,适用于IPCamera、内网RTSP服务等RTSP流媒体服务器、内网单播同屏,接口调用非常简单成熟,无需关注RTSPServer中关于客户端监听接入、音视频多路复用、RTSP具体流程、RTP打包与发送等相关问题,支持多种音视频格式,再也不用像调用live555 RTSPServer那样处理整个RTSP OPTIONS/DESCRIBE/SETUP/PLAY/RTP/RTCP的复杂流程和担心内存释放的问题了!EasyIPCamera非常适合于安防领域、教育领域、互联网直播领域等;
主要流程:
- 调用 EasyIPCamera_Startup 设置监听端口、回调函数和自定义数据指针
- 启动后,程序进入监听状态
2.1 接收到客户端请求, 回调 状态:EASY_IPCAMERA_STATE_REQUEST_MEDIA_INFO 上层程序在填充完mediainfo后,返回0, 则EasyIpCamera响应客户端ok
2.2 EasyIPCamera回调状态 EASY_IPCAMERA_STATE_REQUEST_PLAY_STREAM , 则表示rtsp交互完成, 开始发送流, 上层程序调用EasyIpCamera_PushFrame 发送帧数据
2.3 EasyIPCamera回调状态 EASY_IPCAMERA_STATE_REQUEST_STOP_STREAM , 则表示客户端已发送teaardown, 要求停止发送帧数据 - 调用 EasyIpCamera_Shutdown(), 关闭EasyIPCamera,释放相关资源
2. API接口函数定义
2.1 数据、事件回调函数
函数:
typedef Easy_I32 (EasyIPCamera_Callback)(Easy_I32 channelId, EASY_IPCAMERA_STATE_T channelState, EASY_MEDIA_INFO_T mediaInfo, EASY_PLAY_CONTROL_INFO_T playCtrlInfo, void userPtr);
参数:
channelId: 通道号, 由EasyRTSP_OpenStream设置
channelState: 状态回调,第3节中EASY_IPCAMERA_STATE_T类型。当某个通道第一次被请求时会回调EASY_IPCAMERA_STATE_REQUEST_MEDIA_INFO事件,这时需要将media信息设置进去,如果正确会立刻回调EASY_IPCAMERA_STATE_REQUEST_PLAY_STREAM事件,否则回调EASY_IPCAMERA_STATE_REQUEST_STOP_STREAM事件。
mediaInfo: 第3节中EASY_MEDIA_INFO_T信息,当收到EASY_IPCAMERA_STATE_REQUEST_MEDIA_INFO事件时,需要设置进去。
playCtrlInfo: 第3节中EASY_PLAY_CONTROL_INFO_T信息。
userPtr: 用户自定义数据,由EasyIPCamera_Startup设置
2.2 SDK激活
函数:
Easy_API int Easy_APICALL EasyIPCamera_Activate(char *license);
参数:
license: SDK激活码,可在 www.pvale.com 在线获取,或联系我们。
返回:
返回值为第三节的EASY_ACTIVATE_ERR_CODE_ENUM枚举类型
2.3 创建RTSP Server一个视频流通道
函数:
Easy_API Easy_I32 Easy_APICALL EasyIPCamera_Startup(Easy_U16 listenport, AUTHENTICATION_TYPE_ENUM authType, char realm, Easy_U8 username, Easy_U8 password, EasyIPCamera_Callback callback, void userptr, LIVE_CHANNEL_INFO_T *channelInfo, Easy_U32 channelNum);
参数:
listenport: 监听端口
authType: 鉴权类型,默认可设置AUTHENTICATION_TYPE_BASIC
realm: 自定义RTSP协议交互时realm信息,正常可以设置能空字符串,由库中自动设置
username: 视频流用户名
password: 视频流密码
callback: 设置数据、事件回调函数
userptr: 用户自定义数据
channelInfo: 通道信息列表
channelNum: channelInfo中个数
返回:
返回0表示成功,返回非0表示失败。
2.4 添加或修改用户
函数:
Easy_API Easy_I32 Easy_APICALL EasyIPCamera_AddUser(const Easy_U8 username, const Easy_U8 password);
参数:
username: 用户名
password: 密码
添加用户或根据用户名修改用户密码,如果添加的用户名不存在,则为新增, 如已存在,则为修改密码。
2.5 删除用户
函数:
Easy_API Easy_I32 Easy_APICALL EasyIPCamera_DelUser(const Easy_U8 *username);
参数:
username: 用户名
2.6 推送视频帧数据
函数:
Easy_API Easy_I32 Easy_APICALL EasyIPCamera_PushFrame(Easy_I32 channelId, EASY_AV_Frame* frame );
参数:
channelId: EasyIPCamera_Startup接口参数中LIVE_CHANNEL_INFO_T里面的id, 是每个视频流的唯一id
frame: 帧数据信息
2.7 重置RTSP Server某一路视频流
函数:
Easy_API Easy_I32 Easy_APICALL EasyIPCamera_ResetChannel(Easy_I32 channelId);
参数:
channelId: EasyIPCamera_Startup接口参数中LIVE_CHANNEL_INFO_T里面的id, 是每个视频流的唯一id
2.8 终止RTSP Server
函数:
Easy_API Easy_I32 Easy_APICALL EasyIPCamera_Shutdown();
3. 结构体描述
|