太阳能监控摄像头二次SDK开发包
IPCAMERA SDK 使用说明书
Version : 1.0.5.4
版本更新说明.....................................................................................................................................5
内容简介.............................................................................................................................................9
SDK 主要功能............................................................................................................................9
SDK 库文件说明........................................................................................................................9
编程导引...........................................................................................................................................10
SDK 接口调用主要流程..........................................................................................................10
预览模块流程...........................................................................................................................12
回放模块流程...........................................................................................................................13
参数配置模块流程...................................................................................................................14
语音对讲转发模块流程...........................................................................................................15
报警模块流程...........................................................................................................................16
数据类型定义说明...........................................................................................................................17
错误定义说明...................................................................................................................................18
第一部分SDK 使用说明..............................................................................................................19
1.1 初始化SDK..................................................................................................................19
HI_SDK_Init.....................................................................................................................19
HI_SDK_Cleanup............................................................................................................. 19
1.2 用户注册.......................................................................................................................19
HI_SDK_Login.................................................................................................................19
HI_SDK_LoginExt........................................................................................................... 20
HI_SDK_Logout...............................................................................................................20
HI_SDK_SetConnectTime............................................................................................... 21
HI_SDK_SetReconnect.................................................................................................... 21
1.3 实时预览.......................................................................................................................21
HI_SDK_RealPlay............................................................................................................ 21
HI_SDK_RealPlayExt...................................................................................................... 23
HI_SDK_StopRealPlay.................................................................................................... 24
HI_SDK_MakeKeyFrame................................................................................................ 24
1.4 摄像机属性设置...........................................................................................................24
HI_SDK_SetConfig.......................................................................................................... 24
HI_SDK_GetConfig......................................................................................................... 44
1.5 预览解码效果控制.......................................................................................................53
HI_SDK_SetPlayerBufNumber........................................................................................53
1.6 云台控制.......................................................................................................................53
HI_SDK_PTZControl....................................................................................................... 54
HI_SDK_PTZControlEx.................................................................................................. 55
HI_SDK_PTZPreset......................................................................................................... 55
HI_SDK_TransPTZ.......................................................................................................... 56
1.7 实时预览数据回调.......................................................................................................57
HI_SDK_SetRealDataCallBack....................................................................................... 57
HI_SDK_SetDecCallBack................................................................................................59
HI_SDK_SetMessageCallBack........................................................................................ 60
HI_SDK_SetEventCallBack.............................................................................................61
1.8 预览声音控制...............................................................................................................63
HI_SDK_SetVolume.........................................................................................................63
HI_SDK_GetVolume........................................................................................................ 63
HI_SDK_SetMute.............................................................................................................64
HI_SDK_GetMute............................................................................................................ 64
1.9 录像...............................................................................................................................65
HI_SDK_StartRecord....................................................................................................... 65
HI_SDK_StopRecord....................................................................................................... 66
1.10 抓拍...........................................................................................................................66
HI_SDK_CapturePicture.................................................................................................. 66
HI_SDK_CaptureJPEGPicture......................................................................................... 66
HI_SDK_SnapYUVData.................................................................................................. 67
HI_SDK_SnapJpeg........................................................................................................... 68
1.11 图像叠加显示...............................................................................................................69
HI_SDK_InputDrawData................................................................................................. 69
HI_SDK_ClearDrawData................................................................................................. 69
HI_SDK_SelectPic........................................................................................................... 70
HI_SDK_MouseMove...................................................................................................... 70
HI_SDK_SetDrawCallBack............................................................................................. 71
HI_SDK_EnablePic.......................................................................................................... 71
HI_SDK_GetPicInfo.........................................................................................................72
HI_SDK_SetPostDrawCallBackEx..................................................................................72
1.12 语音对讲转发...........................................................................................................74
HI_SDK_StartVoiceCom..................................................................................................74
HI_SDK_StopVoiceCom.................................................................................................. 75
HI_SDK_VoiceComSendData..........................................................................................75
1.13 录像回放...................................................................................................................76
HI_SDK_Playback............................................................................................................76
HI_SDK_StopPlayback.................................................................................................... 76
HI_SDK_PlayBackControl...............................................................................................77
1.14 解码操作...................................................................................................................77
HI_SDK_PauseDecode.....................................................................................................77
HI_SDK_ResumeDecode................................................................................................. 78
1.15 设置操作通道...........................................................................................................78
HI_SDK_SetChannel........................................................................................................78
HI_SDK_GetChannel....................................................................................................... 79
1.16 其他...........................................................................................................................79
HI_SDK_GetSDKVersion................................................................................................ 79
HI_SDK_GetPlayRate...................................................................................................... 79
HI_SDK_GetState.............................................................................................................80
HI_SDK_GetPlayerHandle...............................................................................................81
HI_SDK_SetDrawWnd.....................................................................................................81
HI_SDK_GetSupportAttr................................................................................................. 82
HI_SDK_SetAutoAdjust.................................................................................................. 83
HI_SDK_GetAutoAdjust..................................................................................................83
HI_SDK_GetMediaAttr....................................................................................................84
HI_SDK_DisplayAll.........................................................................................................85
HI_SDK_SetDisplayMode............................................................................................... 85
HI_SDK_GetDisplayMode...............................................................................................86
HI_SDK_SetDisplayCallback.......................................................................................... 86
第二部分OCX 控件接口............................................................................................................. 88
2.1、功能简介..........................................................................................................................88
2.2、调用顺序..........................................................................................................................91
2.3、接口说明..........................................................................................................................91
2.3.1 设置播放窗口位置............................................................................................. 91
2.3.2 设置URL.............................................................................................................. 92
2.3.3 连接预览画面..................................................................................................... 92
2.3.4 获取连接状态..................................................................................................... 93
2.3.5 停止预览............................................................................................................. 93
2.3.6 设置静音/监听................................................................................................... 93
2.3.7 获取音频状态..................................................................................................... 93
2.3.8 开始停止录像..................................................................................................... 93
2.3.9 获取录像状态..................................................................................................... 94
2.3.10 抓拍......................................................................................................................94
2.3.11 设置录像抓拍保存路径..................................................................................... 95
2.3.12 打开关闭对讲..................................................................................................... 95
2.3.13 获取对讲状态..................................................................................................... 95
2.3.14 打开播放器......................................................................................................... 95
2.3.15 云台控制............................................................................................................. 96
2.3.16 云台预置点调用................................................................................................. 96
2.3.17 云台透传............................................................................................................. 97
2.3.18 鼠标操作云台..................................................................................................... 97
2.3.19 打开关闭移动侦测区域设置............................................................................. 98
2.3.20 显示隐藏编辑区域............................................................................................. 98
2.3.21 获取编辑区域属性............................................................................................. 99
2.3.22 保存视频流属性................................................................................................. 99
2.3.23 获取视频流属性................................................................................................. 99
2.3.24 请求视频流......................................................................................................... 99
2.3.25 请求音频流....................................................................................................... 100
2.3.26 获取显示是否为正常比例............................................................................... 100
2.3.27 设置自动调节模式........................................................................................... 100
第三部分搜索SDK 说明.............................................................................................................101
3.1、编程导引........................................................................................................................101
3.2、数据结构........................................................................................................................101
3.3、接口说明........................................................................................................................102
3.3.1 初始化设备搜索............................................................................................... 102
3.3.2 去初始化设备搜索........................................................................................... 102
3.3.3 注册搜索响应处理函数................................................................................... 103
3.3.4 注册命令响应处理函数................................................................................... 104
3.3.5 注册接收搜索应答的本地IP.......................................................................... 104
3.3.6 发送搜索命令................................................................................................... 105
3.3.7 发送设置命令................................................................................................... 105
附录................................................................................................................................................. 107
Ⅰ、文件夹列表.....................................................................................................................107
Ⅱ、厂家代码和设备类型定义............................................................................................ 107
IPCAMERA SDK 使用说明书
第5页共109页
版本更新说明
V1.0.5.4
增加获取/设置Pir 报警参数功能
命令定义
#define HI_CMD_PIR_ALARM 0x1086 //PIR 报警
结构体定义
typedef struct HI_PIRALARM
{
HI_BOOL bEnable; //是否启用PIR 报警:0:关闭1:启用
HI_U32 u32Flag; //PIR 报警模式:0:常闭1:常开
}HI_S_PirAlarm;
使用参阅HI_SDK_SetConfig 和HI_SDK_GetConfig
V1. 0. 5. 2 2015-11-05
增加自绘功能接口
增加设置自绘回调功能接口函数HI_SDK_SetPostDrawCallBackEx
增加错误码定义#define HI_ERR_CALLBACK_PLAYER 0x32003
V1. 0. 5. 2 2015-10-09
1. 合并版本差异,1080 bmp 抓图bug。
V1. 0. 5. 1 2015-9-29
2. 增加抓YUV 数据函数HI_SDK_SnapYUVData,对应结构体HI_YUV_INFO_S,成员pData
指向用户预先分配的内存,成员nDataLen 预分配内存的大小。
V1. 0. 5. 0 2015-07-10
3. HI_SDK_SetConfig 中增加设置报警时间段的命令命令HI_CMD_QUANTUM_TIME,其
中HI_SDK_SetConfig 第一个参数为设备句柄,第二个参数为命令类型,这里可设置为
HI_CMD_QUANTUM_TIME , 第三个参数为命令对应的结构体Buff , 其类型位:
HI_S_QUANTUM_TIME,第四个参数为缓存Buf 的大小。即结构体HI_S_QUANTUM_TIME
的大小,
V1. 0. 4. 9 2015-06-24
4. HI_SDK_SetConfig 中增加手动触发继电器的命令HI_CMD_EXT_ALARM,其对应的结
构体为:HI_S_ExtAlarm 具体用法可参考SDK Demo 中报警功能下的外置报警抓拍
v1.0.4.8 2015-03-07
1. 云台透传中透传的最大数据长度由64 修改为128
2. 修改HI_SDK_SetConfig,设置继电器开启关闭,其命令为:HI_CMD_RELAYCTRL,对
IPCAMERA SDK 使用说明书
第6页共109页
应的结构体为:HI_S_RelayCtrl
v1.0.2.7 2013-09-27
1、添加新设备类型,字段Se、Sf,详情请查阅《厂家代码和设备类型定义》。
v1.0.2.7 2013-07-15
1、修正不请求码流情况下修改网络参数失败bug
v1.0.2.6 2013-04-01
1、添加新设备类型,字段Sc,详情请查阅《厂家代码和设备类型定义》。
2、Sc 设备有两套分辨,第一套960P\VGA\QVGA,第二套720P\Q720\QQ720,用户可
以根据实际应用选择需要的分辨率。
V1.0.3.4 2013-02-05
1、修改HI_SDK_SetConfig 设置OSD 参数HI_CMD_OSD_PARAM 中文,linux 下,设备
类型如果为C5,中文字符必须转换成UTF-8。
V1.0.3.3 2012-12-10
1、添加三码流接口HI_SDK_RealPlayExt。三码流需要设备支持;
2、添加D3D 显示支持,默认显示为DDraw
3、添加网络抓拍接口HI_SDK_SnapJpeg
4、添加设置显示获取模式接口HI_SDK_GetDisplayMode 和HI_SDK_SetDisplayMode
5、添加D3D 模式下图像叠加开关HI_SDK_SetDisplayCallback
6、添加音频输入输出音量接口:参阅HI_SDK_SetConfig 和HI_SDK_GetConfig
#define HI_CMD_AUDIO_VOLUME_IN 0x1070 //音频输入音量
#define HI_CMD_AUDIO_VOLUME_OUT 0x1071 //音频输出音量
7、添加WIFI 控制接口:参阅HI_SDK_SetConfig 和HI_SDK_GetConfig
#define HI_CMD_VIDEO_PARAM_EXT 0x1047 //视频参数
#define HI_CMD_AUDIO_PARAM_EXT 0x1048 //音频参数
#define HI_CMD_RESOLUTION_EXT 0x1049 //分辨率
V1.0.3.2 2012-10-22
1、添加WIFI 控制接口:参阅HI_SDK_SetConfig 和HI_SDK_GetConfig
#define HI_CMD_WIFI_PARAM 0x1030 //WIFI 参数
#define HI_CMD_WIFI_SEARCH 0x1031 //WIFI 搜索
#define HI_CMD_WIFI_CHECK 0x1035 //WIFI check
v1.0.3.1 2012-05-29
1、增加动态I 帧接口HI_SDK_MakeKeyFrame;
v1.0.3.0 2012-03-29
1、修改字段为S7、S9 的设备的默认值;
2、增加HI_SDK_LoginExt 登陆接口,接口带有超时时间;
3、增加HI_SDK_SetChannel 和HI_SDK_GetChannel,用于设置NVR 通道;
IPCAMERA SDK 使用说明书
第7页共109页
4、增加NVR 参数设置
#define HI_NVR_CMD_NET_EXT 0x1050 // NVR 网络参数
#define HI_NVR_CMD_RTSP_INFO 0x1051 // NVR rtsp 参数
#define HI_NVR_CMD_USER 0x1052 // NVR 用户参数
#define HI_NVR_CMD_CHANNEL_INFO 0x1053 // NVR 通道参数
#define HI_NVR_CMD_SEARCH 0x1055 // NVR 搜索设备
#define HI_NVR_CMD_RECORD_INFO 0x1056 // NVR 通道录像参数
#define HI_NVR_CMD_RECORD_SYS 0x1057 // NVR 系统参数
#define HI_NVR_CMD_TIME 0x1058 // NVR 时间参数
#define HI_NVR_CMD_RESET 0x1059 // NVR 恢复出厂设置
#define HI_NVR_CMD_REBOOT 0x1060 // NVR 重启
#define HI_NVR_CMD_RECORD_STATE 0x1061 // 获取录像状态
#define HI_NVR_CMD_DISK_INFO 0x1062 // 获取硬盘信息
#define HI_NVR_CMD_DISK_FORMAT 0x1063 // 格式化硬盘
#define HI_NVR_CMD_RECORD_STATE_EX 0x1064 // 获取录像状态
具体参阅HI_SDK_SetConfig 和HI_SDK_GetConfig
v1.0.2.9 2011-12-16
1、添加新设备类型,字段S9,详情请查阅《厂家代码和设备类型定义》。
v1.0.2.8 2011-11-22
1、添加心跳包处理,心跳包从HI_SDK_SetMessageCallBack 回调出来,详细回到请查
阅HI_SDK_SetMessageCallBack。
v1.0.2.7 2011-11-01
3、添加新设备类型,字段S8,详情请查阅《厂家代码和设备类型定义》。
v1.0.2.6 2011-09-20
1、添加新设备类型,字段S7,详情请查阅《厂家代码和设备类型定义》。
v1.0.2.5 2011-09-06
2、修改回调HI_SDK_SetRealDataCallBack,当调用该回调函数时同时能播放音视频。
v1.0.2.4 2011-07-22
1、网络库新添加接口HI_NET_DEV_StartRecord 、HI_NET_DEV_StopRecord 和
HI_NET_DEV_GetRecordState 录像操作接口, 取消播放库里的录像接口
HI_PLAYER_StartRecord、HI_PLAYER_StopRecord。更新说明请参阅网络库和播放
库使用说明书。
v1.0.2.3 2011-07-02
2、添加新设备类型,字段S5、S6,详情请查阅《厂家代码和设备类型定义》。
3、添加录像类型AVI , 接口HI_SDK_StartRecord 中第三参数指定为:
FILE_FORMAT_AVI,HI_SDK_Playback 支持AVI 文件播放。
4、添加控制输入报警开关接口:参阅HI_SDK_SetConfig 和HI_SDK_GetConfig 的
IPCAMERA SDK 使用说明书
第8页共109页
HI_CMD_ATTR_EXT 选项。
v1.0.2.2 2011-06-08
1、HI_SDK_PTZControl 和HI_SDK_PTZControlEx 添加焦点调整和光圈变化命令
#define HI_CTRL_PTZ_FOCUSIN 0x3007 //焦点前调
#define HI_CTRL_PTZ_FOCUSOUT 0x3008 //焦点后调
#define HI_CTRL_PTZ_APERTUREIN 0x3009 //光圈放大
#define HI_CTRL_PTZ_APERTUREOUT 0x3010 //光圈变小
2、添加显示区域电子放大接口:HI_SDK_DisplayAll
3、添加网络参数接口, 参阅HI_SDK_SetConfig 和HI_SDK_GetConfig 的
HI_CMD_NET_EXT 选项。改指令将HI_CMD_NET_INFO 和HI_CMD_HTTP_PORT
合并。
v1.0.2.0 2010-03-10
1、添加设备重启接口,参阅HI_SDK_SetConfig 的HI_CMD_REBOOT 选项。
2、添加设备恢复出厂设置接口,参阅HI_SDK_SetConfig 的HI_CMD_RESET 选项。
3、添加校时接口, 参阅HI_SDK_SetConfig 和HI_SDK_SetConfig 的
HI_CMD_SERVER_TIME 选项。
v1.0.1.9 2010-02-21
1、修改YUV 回调函数HI_SDK_SetDecCallBack 接口,调用回调函数视频只回调出YUV
数据,而不显示在窗口中;
2、添加HI_SDK_SetDrawWnd 接口,接口用于设置显示窗口,当pWnd 等于NULL 时,窗
口的DDRAW 将销毁;设置为窗口句柄时,DDRAW 将重现初始化并显示图像。
3、增加HI_SDK_GetMediaAttr 接口,获取设置播放音视频属性参数。
v1.0.1.8 2010-12-31
1、修改录像接口,可以添加录像时间长度;
2、合并录像库接口,ASF 与复合流录像公用一个接口,参数配置不同。
v1.0.1.5 2010-12-4
1、添加云台原点和上下左右巡航接口,目前仅支持设备信息中有Z0 字段的设备。
v1.0.1.4 2010-12-1
1、添加捕获实时数据接口HI_SDK_SaveRealData 和HI_SDK_StopSaveRealData,保存为自
定义格式录像
2、添加解码控制接口HI_SDK_PauseDecode 和HI_SDK_ResumeDecode。
IPCAMERA SDK 使用说明书
第9页共109页
内容简介
SDK 主要功能
预览、设置参数、报警、云台控制、录像、回放、语音对讲、抓拍、声音控制等功能。
SDK 库文件说明
SDK 库
hi_sdk_api.h 头文件
HISDK.lib LIB 库文件
HISDK.dll DLL 库文件
网络库
hi_net_dev_sdk.h 头文件
NetLib.lib LIB 库文件
NetLib.dll DLL 库文件
播放库
HsPlayer.h 头文件
HIPlayer.lib LIB 库文件
HIPlayer.dll DLL 库文件
搜索库
hi_vscp_devs_cli.h 头文件
SearchLib.lib LIB 库文件
SearchLib.dll DLL 库文件
公用文件hi_dataType.h 头文件
客户端SDK 开发包中包含以上各个组件,用户可以根据需要选择其中的一部分组件,
以下将对各个组件在SDK 中的作用和使用条件分别说明。
SDK 库:将HIPlayer.dll 和NetLib.dll 封装,用于非平台开发,具体接口查阅本文
档第一部分《SDK 使用说明》。
播放库:用于播放数据流与文件,用于平台开发,使用请查阅《网络库使用说明书
说明书》PDF 文档。
网络库:用于平台开发。使用请查阅《网络库使用说明书说明书》PDF 文档。
搜索库:接口说明请查阅本文档第三部分《搜索SDK 说明》。
平台开发:用网络库开发转发平台,播放库处理数据以及显示,播放库还用于播放录像
文件;
客户端开发:用SDK 库,集合了网络库和播放库的功能。
IPCAMERA SDK 使用说明书
第10页共109页
编程导引
SDK 接口调用主要流程
注销用户注册
HI_SDK_Logout
释放SDK
HI_SDK_Cleanup
预览模块
回放模块
参数配置模块
语音对讲转发模块
报警模块
设置连接超时时间
HI_SDK_SetConnectTime 设置自动重连时间
HI_SDK_SetReconnect
初始化SDK
HI_SDK_Init
用户注册设备
HI_SDK_Login
按实现功能的不同可以分成五个模块,实现每个模块的功能时初始化SDK、用户注册设
备、注销设备和释放SDK 资源这4 个流程是必不可少的。
初始化SDK(HI_SDK_Init 接口):对整个网络SDK 系统的初始化。
设置连接超时时间(HI_SDK_SetConnectTime 接口):这部分为可选,用于设置SDK
中的网络连接超时时间,用户可以根据自己的需要设置该值。在不调用此接口设置
超时时间的情况下,将采用SDK 中的默认值。
用户注册设备(HI_SDK_Login 接口):实现用户的注册功能,注册成功后,返回
的用户ID 作为其他功能操作的唯一标识。
预览模块:启动预览后可以捕获实时数据、抓拍、录像、控制音频等。云台控制无
IPCAMERA SDK 使用说明书
第11页共109页
需启动预览。具体流程详见预览模块流程。
回放模块:回放功能目前仅支持本地文件回放。具体流程详见回放模块流程。
参数配置模块:设置和获取前端摄像机的参数,主要包括设备参数、网络参数、报
警参数、异常参数、用户配置等参数信息。具体流程详见参数配置模块流程。
语音对讲转发模块:实现和前端服务器的语音数据对讲和语音数据获取,音频编码
格式可以指定。具体流程详见语音对讲转发模块流程。
报警模块:处理前端服务器上传的各种报警信号。报警分为“移动报警”和“输入报
警”两种数据。具体流程详见报警模块流程。
IPCAMERA SDK 使用说明书
第12页共109页
预览模块流程
用户注册设备
HI_SDK_Login
注销用户注册
HI_SDK_Logout
释放SDK
HI_SDK_Cleanup
实时流数据捕获
抓拍
初始化SDK
HI_SDK_Init
启动预览
HI_SDK_RealPlay
关闭预览
HI_SDK_StopRealPlay
录像
声音控制
云台控制
启动预览后可以捕获实时数据、抓拍、录像、控制音频等。云台控制无需启动预览。
捕获实时数据:捕获实时数据使用回调函数HI_SDK_SetRealDataCallBack,数据包
含数据头;
录像:录像分为两种录像方式,一种是路成ASF 文件格式,另一种则可以录成自
定义格式。关于录像的格式以及函数说明请参阅录像接口(HI_SDK_StartRecord)
说明。
抓拍:抓拍有两种格式,JPG 和BMP,BMP 格式使用接口HI_SDK_CapturePicture,
JPG 格式使用接口HI_SDK_CaptureJPEGPicture。
声音控制:声音控制功能主要实现声音的打开和关闭、音量的控制。相关接口有:
HI_SDK_SetVolume 、HI_SDK_GetVolume 、HI_SDK_SetMute 、HI_SDK_GetMute
等。
云台控制:云台控制无需预览,只要注册成功就能控制云台,相关接口有:
HI_SDK_PTZControl、HI_SDK_PTZControlEx、HI_SDK_PTZPreset 等。
IPCAMERA SDK 使用说明书
第13页共109页
回放模块流程
回放控制
HI_SDK_PlayBackControl
释放SDK
HI_SDK_Cleanup
初始化SDK
HI_SDK_Init
文件名回放
HI_SDK_Playback
关闭回放
HI_SDK_StopPlayback
回放功能目前仅支持本地文件回放, 相关接口有: HI_SDK_Playback 、
HI_SDK_PlayBackControl、HI_SDK_StopPlayback。
其中,回放控制有如下功能:
播放:开始播放文件;
停止:停止文件播放,指针返回文件头;
暂停:暂停播放;
调整播放速度:调整速度;
单帧:单帧播放;
获取/设置播放位置:跳转;
设置播放音量:音量设置;
获取文件总时间和播放时间:文件的总时间和当前播放的时间。
详细使用方法请查阅HI_SDK_PlayBackControl 接口使用。
IPCAMERA SDK 使用说明书
第14页共109页
参数配置模块流程
获取参数
HI_SDK_GetConfig
释放SDK
HI_SDK_Cleanup
初始化SDK
HI_SDK_Init
用户注册设备
HI_SDK_Login
注销用户注册
HI_SDK_Logout
设置参数
HI_SDK_SetConfig
实现参数配置首先必须做好初始化SDK 和用户注册这两个步骤,将用户注册接口返回
的句柄作为配置接口的首个参数。建议在每次设置某类参数之前,先调用获取参数的接口
(HI_SDK_GetConfig)得到完整的参数结构,修改需要更改的参数,作为设置参数接口中
的输入参数,最后调用设置参数接口(HI_SDK_SetConfig),返回成功即设置成功。
IPCAMERA SDK 使用说明书
第15页共109页
语音对讲转发模块流程
启动语音对讲
HI_SDK_StartVoiceCom
释放SDK
HI_SDK_Cleanup
初始化SDK
HI_SDK_Init
用户注册设备
HI_SDK_Login
注销用户注册
HI_SDK_Logout
启动语音对讲
HI_SDK_StartVoiceCom
启动预览
HI_SDK_RealPlay
关闭预览
HI_SDK_StopRealPlay
转发数据
HI_SDK_VoiceComSendData
停止语音对讲
HI_SDK_StartVoiceCom
停止语音对讲
HI_SDK_StopVoiceCom
语音对讲有两种方式,一种是直接从PC 端获取音频数据(数据由播放库获取,已编码),
通过SDK 的内部自己将数据发送给摄像机端;另一种将自己准备好的音频数据发送到摄像
机,音频数据必须编码成与摄像机端当前的音频编码的格式一致。
IPCAMERA SDK 使用说明书
第16页共109页
报警模块流程
用户注册设备
HI_SDK_Login
注销用户注册
HI_SDK_Logout
释放SDK
HI_SDK_Cleanup
初始化SDK
HI_SDK_Init
报警信息回调
HI_SDK_SetRealDataCallBack
关闭预览
HI_SDK_StopRealPlay
启动预览
HI_SDK_RealPlay
报警回调可分为“移动报警”和“输入报警”两种数据。
移动报警:当检测到镜头相应区域有移动,回调函数将移动区域的相关数据输出;
输入报警:摄像机参数有数据变更时有输入报警信息。
具体使用请参阅报警回调函数HI_SDK_SetMessageCallBack 的使用方法。
IPCAMERA SDK 使用说明书
第17页共109页
数据类型定义说明
typedef unsigned char HI_U8;
typedef unsigned char HI_UCHAR;
typedef unsigned short HI_U16;
typedef unsigned int HI_U32;
typedef signed char HI_S8;
typedef short HI_S16;
typedef int HI_S32;
#ifndef _M_IX86
typedef unsigned long long HI_U64;
typedef long long HI_S64;
#else
typedef __int64 HI_U64;
typedef __int64 HI_S64;
#endif
typedef char HI_CHAR;
typedef char* HI_PCHAR;
typedef float HI_FLOAT;
typedef double HI_DOUBLE;
typedef void HI_VOID;
typedef unsigned long HI_SIZE_T;
typedef unsigned long HI_LENGTH_T;
typedef enum {
HI_FALSE = 0,
HI_TRUE = 1,
} HI_BOOL;
#ifndef NULL
#define NULL 0L
#endif
#define HI_NULL 0L
#define HI_NULL_PTR 0L
#define HI_SUCCESS 0
#define HI_FAILURE (-1)
IPCAMERA SDK 使用说明书
第18页共109页
错误定义说明
#define HI_ERR_SDK_HANDLE 0x30001 //操作句柄错误
#define HI_ERR_PLAYER_NULLPTR 0x30002 //播放句柄错误
#define HI_ERR_DRAW_NULLPTR 0x30003 //画图句柄错误
#define HI_ERR_CMD_NULLPTR 0x30004 //参数为空
#define HI_ERR_CMD_INVALID_ARG 0x30005 //参数格式错误
#define HI_ERR_CMD_DISCONNECT 0x30006 //连接状态为非连接
#define HI_ERR_PLAYER_WNDHWND 0x30008 //显示句柄错误
#define HI_ERR_STATE_IS_PLAYING 0x30009 //播放状态
#define HI_ERR_STATE_IS_STOP 0x30010 //停止状态
#define HI_ERR_PLAYER_STOP 0x30011 //停止播放失败
#define HI_ERR_PLAYER_DEC 0x30012 //解码失败
#define HI_ERR_PLAYER_SNAP 0x30013 //抓图失败
#define HI_ERR_PLAYER_PLAY 0x30014 //播放失败
#define HI_ERR_PLAYER_STOP_TALK 0x30015 //停止对讲失败
#define HI_ERR_PLAYER_START_TALK 0x30016 //开始对讲失败
#define HI_ERR_PLAYER_PAUSE 0x30017 //暂停失败
#define HI_ERR_PLAYER_SETRATE 0x30018 //设置播放速度失败
#define HI_ERR_PLAYER_ONEBYONE 0x30019 //单帧播放失败
#define HI_ERR_PLAYER_SETPOS 0x30020 //设置播放位置失败
#define HI_ERR_PLAYER_GETPOS 0x30021 //获取播放位置失败
#define HI_ERR_PLAYER_SETMUTE 0x30022 //设置静音失败
#define HI_ERR_PLAYER_GETMUTE 0x30023 //获取静音失败
#define HI_ERR_PLAYER_SETVOLUME 0x30024 //设置音量失败
#define HI_ERR_PLAYER_GETVOLUME 0x30025 //获取音量失败
#define HI_ERR_PLAYER_MEDIA_ATTR 0x30026 //设置播放属性失败
#define HI_ERR_CALLBACK_DRAW 0x32001 //画图回调注册失败
#define HI_ERR_CALLBACK_STATE 0x32002 //状态回调组成失败
#define HI_ERR_REC_RECORDING 0x30050 //录像状态
#define HI_ERR_REC_START_FAIL 0x30051 //开始录像失败
#define HI_ERR_REC_STOP_FAIL 0x30052 //关闭录像失败
#define HI_ERR_TALK_STARTING 0x30081 //对讲状态
#define HI_ERR_TALK_NOSTARTING 0x30082 //对讲关闭状态
#define HI_ERR_TALK_START_FAIL 0x30083 //打开对讲失败
#define HI_ERR_TALK_SEND_FAIL 0x30084 //对讲传输失败
#define HI_ERR_TALK_STOP_FAIL 0x30085 //停止对讲失败
#define HI_ERR_PLAYER_OPENFILE 0x30100 //打开文件失败
#define HI_ERR_PLAYER_CLOSEFILE 0x30100 //关闭文件失败
#define HI_ERR_NET_PLAY 0x31001 //开始网络传输失败
#define HI_ERR_NET_STOP 0x31002 //关闭网路传输失败
#define HI_ERR_ATTR_NOSUPPORT 0x31003 //不支持属性
IPCAMERA SDK 使用说明书
第19页共109页
第一部分SDK 使用说明
1.1 初始化SDK
HI_SDK_Init
初始化,使用下面SDK 接口前使用,仅在初始化SDK 使用
HI_S32 HI_SDK_Init (
);
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
HI_SDK_Cleanup
释放SDK,该函数放在最后释放
HI_S32 HI_SDK_Cleanup (
);
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
Remarks
HI_SDK_Init、HI_SDK_Cleanup 在一个程序中仅初始化一次,初始化Socket
1.2 用户注册
HI_SDK_Login
用户设备注册,返回句柄供用户对设备的操作
HI_HANDLE HI_SDK_Login (
const HI_CHAR* psHost,
const HI_CHAR* psUsername,
const HI_CHAR* psPassword,
HI_U16 u16Port,
HI_S32 * ps32Err
);
Parameters
psHost
[IN] 主机,可以是IP 地址也可以是域名
psUsername
[IN] 用户名
psPassword
[IN] 密码
u16Port
IPCAMERA SDK 使用说明书
第20页共109页
[IN] 端口号
ps32Err
[OUT] 输出错误信息
Return Values
成功将返回HI_HANDLE 句柄,失败返回0
HI_SDK_LoginExt
用户设备注册扩展接口,带超时输入,返回句柄供用户对设备的操作
HI_HANDLE HI_SDK_LoginExt (
const HI_CHAR* psHost,
const HI_CHAR* psUsername,
const HI_CHAR* psPassword,
HI_U16 u16Port,
HI_U32 u32TimeOut,
HI_S32 * ps32Err
);
Parameters
psHost
[IN] 主机,可以是IP 地址也可以是域名
psUsername
[IN] 用户名
psPassword
[IN] 密码
u16Port
[IN] 端口号
u32TimeOut
[IN] 超时时间,单位毫秒,默认10000 毫秒
ps32Err
[OUT] 输出错误信息
Return Values
成功将返回HI_HANDLE 句柄,失败返回0
HI_SDK_Logout
用户取消登录
HI_S32 HI_SDK_Logout t(
HI_HANDLE lHandle
);
Parameters
lHandle
IPCAMERA SDK 使用说明书
第21页共109页
[IN] 操作句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetConnectTime
设置连接超时时间,默认超时是5 秒,单位是毫秒
HI_S32 HI_SDK_SetConnectTimeout (
HI_HANDLE lHandle,t
HI_U32 u32Timeout
);
Parameters
lHandle
[IN] 操作句柄
u32Timeout
[IN] 超时时间,单位是毫秒
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetReconnect
设置自动重连间隔时间,默认为10 秒,0 为不重连,单位是毫秒
HI_S32 HI_SDK_SetReconnect (
HI_HANDLE lHandle,
HI_U32 u32Interval
);
Parameters
lHandle
[IN] 操作句柄
u32Interval
[IN] 自动重连间隔时间,单位是毫秒,默认时间是10 秒
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
1.3 实时预览
HI_SDK_RealPlay
实时数据
HI_S32 HI_SDK_RealPlay (
IPCAMERA SDK 使用说明书
第22页共109页
HI_HANDLE lHandle,
HI_VOID* pWnd,
HI_S_STREAM_INFO* pstruStreamInfo
);
Parameters
lHandle
[IN] 操作句柄
PWnd
[IN] 显示窗口句柄
pstruStreamInfo
[IN] 操作参数
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
// 开始流传输
typedef struct
{
HI_U32 u32Channel; //通道号,设置获取属性相对应
HI_BOOL blFlag; //为真连接主码流,假连接次码流
HI_U32 u32Mode; //网络连接模式
HI_U8 u8Type; //流数据类型,视频,音频,其他数据
} HI_S_STREAM_INFO;
// 设备通道号,目前仅支持一个通道
#define HI_CHANNEL_1 1
//#define HI_CHANNEL_2 2
//#define HI_CHANNEL_3 3
//#define HI_CHANNEL_4 4
// 连接网络连接模式,目前仅支持TCP
#define HI_STREAM_MODE_TCP 0
// 流数据类型,目前不支持心跳数据
// 次码流不支持报警数据和心跳数据
#define HI_STREAM_VIDEO_ONLY 0x01
#define HI_STREAM_AUDIO_ONLY 0x02
#define HI_STREAM_VIDEO_AUDIO 0x03
#define HI_STREAM_VIDEO_DATA 0x05
#define HI_STREAM_AUDIO_DATA 0x06
#define HI_STREAM_ALL 0x07
若需要捕获实时码流数据, 可以调用接口HI_SDK_SetRealDataCallBack 或
IPCAMERA SDK 使用说明书
第23页共109页
HI_SDK_SetDecCallBack 注册捕获码流数据的回调函数,并在回调函数中自行处理回调上来
的码流数据。
HI_SDK_RealPlayExt
实时数据
HI_S32 HI_SDK_RealPlayExt (
HI_HANDLE lHandle,
HI_VOID* pWnd,
HI_S_STREAM_INFO_EXT* pstruStreamInfo
);
Parameters
u32Handle
[IN] 操作句柄
pstruStreamInfo
[IN] 操作参数
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
Remarks
// 开始流传输
typedef struct
{
HI_U32 u32Channel; //通道号,设置获取属性相对应
HI_U32 u32Stream; //1:连接主码流,2:连接次码流3:第三码流
HI_U32 u32Mode; //网络连接模式
HI_U8 u8Type; //流数据类型,视频,音频,其他数据
} HI_S_STREAM_INFO_EXT;
u32Stream 参数:
#define HI_STREAM_1 0
#define HI_STREAM_2 1
#define HI_STREAM_3 2
// 设备通道号,摄像机仅支持一个通道,转发支持多通道
#define HI_CHANNEL_1 1
// 连接网络连接模式,目前仅支持TCP
#define HI_STREAM_MODE_TCP 0
// 流数据类型,目前不支持心跳数据
// 次码流不支持报警数据和心跳数据
#define HI_STREAM_VIDEO_ONLY 0x01
IPCAMERA SDK 使用说明书
第24页共109页
#define HI_STREAM_AUDIO_ONLY 0x02
#define HI_STREAM_VIDEO_AUDIO 0x03
#define HI_STREAM_VIDEO_DATA 0x05
#define HI_STREAM_AUDIO_DATA 0x06
#define HI_STREAM_ALL 0x07
HI_SDK_StopRealPlay
停止数据流
HI_S32 HI_SDK_StopRealPlay (
HI_HANDLE lHandle
);
Parameters
lHandle
[IN] 操作句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_MakeKeyFrame
动态创建一个I 帧
HI_S32 HI_SDK_MakeKeyFrame (
HI_HANDLE lHandle,
HI_U32 u32Channel
);
Parameters
lHandle
[IN] 操作句柄
u32Channel
[IN] 通道,11 表示主码流,12 表示次码流
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
1.4 摄像机属性设置
摄像机是否支持属性,可以通过获取HI_GET_PRODUCT_VENDOR 中sProduct 判断,
具体请参阅附录厂家代码和设备类型定义章节。
HI_SDK_SetConfig
设置摄像机参数
HI_S32 HI_SDK_SetConfig (
HI_U32 u32Handle
IPCAMERA SDK 使用说明书
第25页共109页
HI_U32 u32Command,
HI_VOID* pBuf,
HI_U32 u32BufLen
);
Parameters
u32Handle
[IN] 操作句柄
u32Command
[IN] 操作参数命令
宏定义宏定义值含义
HI_CMD_DISPLAY 0x1001 图像参数
HI_CMD_DISPLAY_EXT 0x1002 翻转
HI_CMD_INFRARED 0x1003 红外
HI_CMD_VIDEO_PARAM 0x1004 视频参数
HI_CMD_OSD_PARAM 0x1005 OSD 参数
HI_CMD_AUDIO_PARAM 0x1006 音频参数
HI_CMD_AUDIO_INPUT 0x1007 音频输入
HI_CMD_RESOLUTION 0x1008 图像分辨率
HI_CMD_FREQUENCY 0x1009 频率
HI_CMD_PTZ_PARAM 0x1010 云台信息
HI_CMD_MD_PARAM 0x1011 移动报警信息
HI_CMD_NET_INFO 0x1012 网络信息
HI_CMD_HTTP_PORT 0x1013 网页端口号
HI_CMD_SERVER_TIME 0x1017 设置摄像机时间
HI_CMD_REBOOT 0x1018 重启
HI_CMD_RESET 0x1019 恢复出厂设置
HI_CMD_NET_EXT 0x1022 设置网络参数
HI_CMD_ATTR_EXT 0x1026 控制输入报警
HI_NVR_CMD_NET_EXT 0x1050 NVR 网络参数
HI_NVR_CMD_RTSP_INFO 0x1051 NVR rtsp 参数
HI_NVR_CMD_USER 0x1052 NVR 用户参数
HI_NVR_CMD_CHANNEL_INFO 0x1053 NVR 通道参数
HI_NVR_CMD_RECORD_INFO 0x1056 NVR 通道录像参数
HI_NVR_CMD_RECORD_SYS 0x1057 NVR 录像系统参数
HI_NVR_CMD_TIME 0x1058 NVR 时间设置
HI_NVR_CMD_RESET 0x1059 NVR 恢复出厂设置
HI_NVR_CMD_REBOOT 0x1060 NVR 重启
HI_CMD_WIFI_PARAM 0x1030 WIFI 参数设置
HI_CMD_WIFI_SEARCH 0x1031 WIFI 搜索
HI_CMD_WIFI_CHECK 0x1035 WIFI check
IPCAMERA SDK 使用说明书
第26页共109页
HI_CMD_VIDEO_PARAM_EXT 0x1047 视频参数(扩展)
HI_CMD_AUDIO_PARAM_EXT 0x1048 音频参数(扩展)
HI_CMD_RESOLUTION_EXT 0x1049 分辨率参数(扩展)
HI_CMD_AUDIO_VOLUME_IN 0x1070 音频输入音量
HI_CMD_AUDIO_VOLUME_OUT 0x1071 音频输出音量
HI_CMD_QUANTUM_TIME 0x1072 报警时间段
HI_CMD_RELAYCTRL 0x1084 继电器控制
HI_CMD_EXT_ALARM 0x1085 手动触发外置报警
HI_CMD_PIR_ALARM 0x1086 Pir 报警
pBuf
[IN] 设置数据
u32BufLen
[IN] 数据长度
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
1、HI_CMD_DISPLAY
typedef struct HI_Display
{
HI_U32 u32Brightness; //亮度,范围[0~255]
HI_U32 u32Saturation; //饱和度,范围[0~255]
HI_U32 u32Contrast; //对比度,范围[0~255],高清[1~7]
HI_U32 u32Hue; //色度,范围[0~255],高清无
} HI_S_Display;
注:u32Brightness 值等于-1,将设置为默认值。色彩支持请参阅附录厂家代码和设
备类型定义的S 字段。
Example:
HI_S_Display sDisplay;
// sDisplay.u32Brightness = -1; //设置默认值
sDisplay.u32Brightness = 100;
sDisplay.u32Saturation = 100;
sDisplay.u32Contrast = 100;
sDisplay.u32Hue = 100;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_DISPLAY,
&sDisplay,
sizeof(HI_S_Display));
2、HI_CMD_DISPLAY_EXT
typedef struct HI_Display_Ext
{
IPCAMERA SDK 使用说明书
第27页共109页
HI_BOOL blFlip; //上下翻转
HI_BOOL blMirror; //左右翻转
HI_S32 s32Scene; //场景,自动、室内、室外
} HI_S_Display_Ext;
宏定义宏定义值含义
HI_SCENE_AUTO 0 自动
HI_SCENE_INDOOR 1 室内
HI_SCENE_OUTDOOR 2 室外
Example:
HI_S_Display_Ext sDisplayEx;
sDisplayEx.blFlip = HI_FALSE;
sDisplayEx.blMirror = HI_FALSE;
sDisplayEx.s32Scene = HI_SCENE_AUTO;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_DISPLAY_EXT,
&sDisplayEx,
sizeof(HI_S_Display_Ext));
注:设备支持请参阅附录厂家代码和设备类型定义的S 字段。
3、HI_CMD_INFRARED
typedef struct HI_Infrared
{
HI_S32 s32Infrared; //红外状态开关
} HI_S_Infrared;
宏定义宏定义值含义
HI_INFRARED_AUTO 0 自动
HI_INFRARED_ON 1 开
HI_INFRARED_OFF 2 关
Example:
HI_S_Infrared sInfrared;
sInfrared.s32Infrared = HI_INFRARED_AUTO;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_INFRARED,
&sInfrared,
sizeof(HI_S_Infrared));
注:设备支持请参阅附录厂家代码和设备类型定义的S 字段。
4、HI_CMD_VIDEO_PARAM
typedef struct HI_Video
{
HI_U32 u32Channel; //通道
HI_BOOL blFlag; //主次码流标志,0-次码流,1 主码流
IPCAMERA SDK 使用说明书
第28页共109页
HI_U32 u32Bitrate; //码率Kb
HI_U32 u32Frame; //帧率
HI_U32 u32Iframe; //主帧间隔(1-300)
HI_BOOL blCbr; //视频编码控制0-可变码率,1-固定码率
HI_U32 u32ImgQuality; //视频编码质量(1-6)
} HI_S_Video;
注:u32Channel 与HI_SDK_RealPlay 的参数HI_S_STREAM_INFO 中u32Channel
一致。获取和设置都应当相同。
Example:
HI_S_Video sVideo;
// 注:u32Channel 与HI_S_STREAM_INFO 一致
sVideo.u32Channel = HI_CHANNEL_1;
sVideo.blFlag = HI_TRUE;
sVideo.u32Bitrate = 1024;
sVideo.u32Frame = 25;
sVideo.u32Iframe = 50;
sVideo.blCbr = HI_FALSE;
sVideo.u32ImgQuality = 1;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_VIDEO_PARAM,
&sVideo,
sizeof(HI_S_Video));
5、HI_CMD_OSD_PARAM
typedef struct HI_OSD
{
HI_BOOL blEnTime; //叠加时间
HI_BOOL blEnName; //叠加名称
HI_CHAR sName[64]; //OSD 名称//最大18 字节
} HI_S_OSD;
Example:
HI_S_OSD sOSD;
sOSD.blEnTime = HI_TRUE;
sOSD.blEnName = HI_TRUE;
strcpy(sOSD. sName, “IPCAM”);
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_OSD_PARAM,
&sOSD,
sizeof(HI_S_OSD));
注:C5 设备类型的摄像机linux 下OSD 如果为中文OSD,必须以UTF-8 传入,获
取到的字符也是UTF-8
IPCAMERA SDK 使用说明书
第29页共109页
6、HI_CMD_AUDIO_PARAM
typedef struct HI_Audio
{
HI_U32 u32Channel; //通道
HI_BOOL blFlag; //主次码流标志,0-次码流,1 主码流
HI_BOOL blEnable; //是否采集音频
HI_U32 u32Type; //音频格式
} HI_S_Audio;
注:u32Channel 与HI_SDK_RealPlay 的参数HI_S_STREAM_INFO 中u32Channel
一致。获取和设置都应当相同。
u32Type 格式如下表:
宏定义宏定义值含义
HI_AUDIO_TYPE_G711 0 G711
HI_AUDIO_TYPE_G726 1 G726
HI_AUDIO_TYPE_AMR 2 AMR
Example:
HI_S_Audio sAudio;
// 注:u32Channel 与HI_S_STREAM_INFO 一致
sAudio.u32Channel = HI_CHANNEL_1;
sAudio.blFlag = HI_TRUE;
sAudio.blEnable = HI_TRUE;
sAudio.u32Type = HI_AUDIO_TYPE_G711;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_AUDIO_PARAM,
&sAudio,
sizeof(HI_S_Audio));
7、HI_CMD_AUDIO_INPUT
typedef enum HI_AudioInput
{
AUDIO_INPUT_MIC = 100, //麦克输入
AUDIO_INPUT_LINE = 10 //线性输入
} HI_E_AudioInput;
Example:
HI_S32 audioInput = AUDIO_INPUT_MIC;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_AUDIO_INPUT,
&audioInput,
sizeof(HI_S32));
8、HI_CMD_RESOLUTION
typedef struct HI_Resolution
{
IPCAMERA SDK 使用说明书
第30页共109页
HI_U32 u32Channel; //通道
HI_BOOL blFlag; //主次码流标志,0-次码流,1 主码流
HI_U32 u32Resolution; //清晰度
} HI_S_Resolution;
注:u32Channel 与HI_SDK_RealPlay 的参数HI_S_STREAM_INFO 中u32Channel
一致。获取和设置都应当相同。
u32Resolution 值如下表:
宏定义值含义
HI_RESOLUTION_VGA 0 VGA:640x480
HI_RESOLUTION_QVGA 1 QVGA:320x240
HI_RESOLUTION_QQVGA 2 QQVGA:160x120,160x112
HI_RESOLUTION_D1 3 D1:704x576,704x480
HI_RESOLUTION_CIF 4 CIF:352x288,352x240
HI_RESOLUTION_QCIF 5 QCIF:176x144,176x120,176x112
HI_RESOLUTION_720P 6 720P:1280x720
Example:
HI_S_Resolution sResolution;
// 注:u32Channel 与HI_S_STREAM_INFO 一致
sResolution.u32Channel = HI_CHANNEL_1;
sResolution.blFlag = HI_TRUE;
sResolution.u32Resolution = HI_RESOLUTION_CIF;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_RESOLUTION,
&sResolution,
sizeof(HI_S_Resolution));
注:分辨率设备支持请参阅附录厂家代码和设备类型定义的S 字段。
9、HI_CMD_FREQUENCY
typedef enum HI_Frequency
{
FREQ_50HZ_PAL = 50, //50HZ
FREQ_60HZ_NTSC = 60 //60HZ
} HI_E_Frequency;
Example:
HI_U32 sFrequency = FREQ_50HZ_PAL;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_FREQUENCY,
&sFrequency,
sizeof(HI_U32));
注:附录厂家代码和设备类型定义,目前不支持的设置频率的设备有S1,S2 字段。
10、HI_CMD_PTZ_PARAM
IPCAMERA SDK 使用说明书
第31页共109页
typedef struct HI_PTZ
{
HI_U32 u32Protocol; //协议
HI_U32 u32Address; //地址码,范围[0~255]
HI_U32 u32Baud; //波特率
HI_U32 u32DataBit; //数据位
HI_U32 u32StopBit; //停止位
HI_U32 u32Parity; //校验
} HI_S_PTZ;
u32Protocol 协议值如下表:
宏定义宏定义值含义
HI_PTZ_PRO_PELCOD 0 PELCO-D
HI_PTZ_PRO_PELCOP 1 PELCO-P
u32Baud 波特率数据如下表:
宏定义宏定义值含义
HI_PTZ_B110 110 110
HI_PTZ_B300 300 300
HI_PTZ_B1200 1200 1200
HI_PTZ_B2400 2400 2400
HI_PTZ_B4800 4800 4800
HI_PTZ_B9600 9600 9600
HI_PTZ_B19200 19200 19200
HI_PTZ_B38400 38400 38400
HI_PTZ_B57600 57600 57600
u32DataBit 数据位数据如下表:
宏定义宏定义值含义
HI_PTZ_DATA_5 5
HI_PTZ_DATA_6 6
HI_PTZ_DATA_7 7
HI_PTZ_DATA_8 8
u32StopBit 停止位数据如下表:
宏定义宏定义值含义
HI_PTZ_STOP_1 1
HI_PTZ_STOP_2 2
u32Parity 校验数据如下表:
宏定义宏定义值含义
HI_PTZ_PARITY_NONE 0 无
HI_PTZ_PARITY_ODD 1 奇校验
HI_PTZ_PARITY_EVEN 2 偶校验
Example:
HI_S_PTZ sPtz;
sPtz. u32Protocol = HI_PTZ_PRO_PELCOD;
sPtz. u32Address = 1;
IPCAMERA SDK 使用说明书
第32页共109页
sPtz. u32Baud = HI_PTZ_B9600;
sPtz. u32DataBit = HI_PTZ_DATA_8;
sPtz. u32StopBit = HI_PTZ_STOP_1;
sPtz. u32Parity = HI_PTZ_PARITY_NONE;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_PTZ_PARAM,
&sPtz,
sizeof(HI_S_PTZ));
11、HI_CMD_MD_PARAM
typedef struct HI_MD_PARAM
{
HI_U32 u32Channel; //通道
HI_U32 u32Area; //矩形区域(1~4)
HI_BOOL blEnable; //是否启用
HI_U32 u32Sensitivity; //灵敏度(0~100)
HI_U32 u32X; //x 坐标
HI_U32 u32Y; //y 坐标
HI_U32 u32Width; //矩形宽度
HI_U32 u32Height; //矩形高度
} HI_S_MD_PARAM;
Example:
HI_S_MD_PARAM sMdParam;
// 注:u32Channel 与HI_S_STREAM_INFO 一致
sMdParam.u32Channel = HI_CHANNEL_1;
sMdParam.u32Area = 1;
sMdParam.bEnable = HI_TRUE;
sMdParam.u32Sensitivity = 50;
sMdParam.u32X = 100;
sMdParam.u32Y = 100;
sMdParam.u32Width = 200;
sMdParam.u32Height = 200;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_MD_PARAM,
&sMdParam,
sizeof(HI_S_MD_PARAM));
注:次码流不支持移动侦测。
12、HI_CMD_NET_INFO
typedef struct tagHI_NETINFO
{
HI_CHAR aszServerIP[40]; //IP 地址
HI_CHAR aszNetMask[40]; //子网掩码
HI_CHAR aszGateWay[40]; //网关
IPCAMERA SDK 使用说明书
第33页共109页
HI_CHAR aszMacAddr[40]; //MAC 地址
HI_CHAR aszFDNSIP[40]; //first DNSIP
HI_CHAR aszSDNSIP[40]; //DNSIP
HI_S32 s32DhcpFlag; //DHCP
HI_S32 s32DnsDynFlag; //DNS 动态分配标识*/
}HI_S_NETINFO, *PHI_S_NETINFO;
Example:
HI_S_NETINFO sNetInfo;
strcpy(sNetInfo. aszServerIP, “192.168.1.88”);
… …
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_NET_INFO,
&sNetInfo,
sizeof(HI_S_NETINFO));
13、HI_CMD_HTTP_PORT
typedef struct HI_HTTPPORT
{
HI_U32 u32HttpPort;
} HI_S_HTTPPORT;
Example:
HI_S_HTTPPORT sHttpPort;
sHttpPort.u32HttpPort = 80;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_HTTP_PORT,
&sHttpPort,
sizeof(HI_S_HTTPPORT));
14、HI_CMD_SERVER_TIME
设置摄像机端时间
typedef struct hiSERVERTIME_INFO_S
{
HI_CHAR sTime[32]; //摄像机时间,格式2011.03.11.09.12.08
} HI_S_SERVERTIME;
sTime 为摄像机的时间,格式为2011.03.11.09.12.08,即2011-3-11 09:12:08
Example:
HI_S_SERVERTIME sServerTime;
memcpy(sServerTime.sTime, “2011.03.11.09.12.08” , sizeof(sServerTime.sTimezone));
HI_SDK_SetConfig ( lHandle,
HI_CMD_SERVER_TIME,
&sServerTime,
sizeof(HI_S_SERVERTIME));
15、HI_CMD_REBOOT
IPCAMERA SDK 使用说明书
第34页共109页
重启摄像机
Example:
HI_SDK_SetConfig (lHandle, HI_CMD_REBOOT,NULL,0);
16、HI_CMD_RESET
恢复出厂设置
Example:
HI_SDK_SetConfig (lHandle, HI_CMD_RESET,NULL,0);
17、HI_CMD_NET_EXT
typedef struct HI_NET_EXT
{
HI_S_NETINFO sNetInfo;
HI_S_HTTPPORT sHttpPort;
}HI_S_NET_EXT;
typedef struct HI_HTTPPORT
{
HI_U32 u32HttpPort;
} HI_S_HTTPPORT;
typedef struct tagHI_NETINFO
{
HI_CHAR aszServerIP[40]; //IP 地址
HI_CHAR aszNetMask[40]; //子网掩码
HI_CHAR aszGateWay[40]; //网关
HI_CHAR aszMacAddr[40]; //MAC 地址
HI_CHAR aszFDNSIP[40]; //first DNSIP
HI_CHAR aszSDNSIP[40]; //DNSIP
HI_S32 s32DhcpFlag; //DHCP
HI_S32 s32DnsDynFlag; //DNS 动态分配标识*/
}HI_S_NETINFO, *PHI_S_NETINFO;
Example:
HI_S_NET_EXT sNetExt;
strcpy(sNetExt.sNetInfo. aszServerIP, “192.168.1.88”);
… …
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_NET_EXT,
& sNetExt,
sizeof(HI_S_NET_EXT));
18、HI_CMD_ATTR_EXT
设置输入报警开关
typedef struct HI_ATTR_EXT
{
IPCAMERA SDK 使用说明书
第35页共109页
HI_U32 u32Enable; //1-启用,0-禁用
HI_U32 u32Flag; //0-关闭,1-打开
}HI_S_ATTR_EXT;
Example:
HI_S_ATTR_EXT sAttrExt;
sAttrExt.u32Enable = 1;
sAttrExt.u32Flag = 0;
HI_SDK_SetConfig ( lHandle,
HI_CMD_ATTR_EXT,
& sAttrExt,
sizeof(HI_S_ATTR_EXT));
19、HI_NVR_CMD_NET_EXT
设置NVR 网络参数
typedef struct HI_NET_EXT
{
HI_S_NETINFO sNetInfo;
HI_S_HTTPPORT sHttpPort;
}HI_S_NET_EXT;
typedef struct HI_HTTPPORT
{
HI_U32 u32HttpPort;
} HI_S_HTTPPORT;
typedef struct tagHI_NETINFO
{
HI_CHAR aszServerIP[40]; //IP 地址
HI_CHAR aszNetMask[40]; //子网掩码
HI_CHAR aszGateWay[40]; //网关
HI_CHAR aszMacAddr[40]; //MAC 地址
HI_CHAR aszFDNSIP[40]; //first DNSIP
HI_CHAR aszSDNSIP[40]; //DNSIP
HI_S32 s32DhcpFlag; //DHCP
HI_S32 s32DnsDynFlag; //DNS 动态分配标识*/
}HI_S_NETINFO, *PHI_S_NETINFO;
Example:
HI_S_NET_EXT sNetExt;
strcpy(sNetExt.sNetInfo. aszServerIP, “192.168.1.88”);
… …
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_NVR_CMD_NET_EXT,
& sAttrExt,
sizeof(HI_S_NET_EXT));
IPCAMERA SDK 使用说明书
第36页共109页
20、HI_NVR_CMD_USER
设置NVR 用户信息
typedef struct HI_USER
{
HI_CHAR sUsername[32]; //用户名,用户名只有admin、user 和guest
HI_CHAR sPassword[32]; //密码
} HI_S_USER;
Example:
HI_S_USER sUserInfo;
strcpy(sUserInfo.sUsername, "admin");
strcpy(sUserInfo. sPassword, "admin");
HI_SDK_SetConfig ( lHandle,
HI_NVR_CMD_USER,
& sUserInfo,
sizeof(HI_S_USER));
21、HI_NVR_CMD_CHANNEL_INFO
设置NVR 通道信息
typedef struct HI_CHN_INFO
{
HI_U32 u32Enable; //设置通道状态0-禁用,1-启用
HI_CHAR sHost[24]; //设备IP 地址
HI_BOOL bStream; //码流,在NVR 中暂时不起作用
HI_U32 u32Port; //端口
HI_U32 u32Chn; //通道,在NVR 中不支持
HI_CHAR sUsername[32]; //用户名
HI_CHAR sPassword[32]; //密码
}HI_S_CHN_INFO;
typedef struct hiNVR_CHN
{
HI_CHAR sName[32]; //通道名称,字符要求是UTF-8,
//例如中文字符要转成UTF-8
HI_S_CHN_INFO sChnInfo;
}HI_S_NVR_CHN;
Example:
HI_S_NVR_CHN sNvrChn;
strcpy(sNvrChnInfo.sChnInfo.sHost, “192.168.1.20”);
sNvrChn.sChnInfo.u32Port = 80;
sNvrChn.sChnInfo.u32Enable = 1;
… …
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_NVR_CMD_CHANNEL_INFO,
& sNvrChn,
sizeof(HI_S_NVR_CHN));
IPCAMERA SDK 使用说明书
第37页共109页
注:调用一次只能获取或设置一个通道,可以配合HI_SDK_SetChannel 设置NVR
的通道再来操作。
* 通道名称如果是宽字符,要求转换成UTF-8 格式,如果不是,设置将失败。获
取通道信息返回的名称也是宽字符也是UTF-8 格式的,需要转换。
22、HI_NVR_CMD_RECORD_INFO
设置NVR 通道录像信息
typedef struct HI_RECORD_INFO
{
HI_BOOL bStream; //通道录像码流,HI_TRUE-主码流,HI_FALSE-次码流
HI_U32 u32SetupAlarm; //联动录像开关,0-禁用,1-启用
HI_U32 u32InputAlarm; //输入报警联动开关,0-禁用,1-启用
HI_U32 u32MdAlarm; //移动侦测联动开关,0-禁用,1-启用
HI_CHAR sRecInfo[7][48+1]; //计划录像录像时间段,7 天,没半小时为一个
单元间隔,如星期一时间内的计划录像时间段
为:
strcpy(sRecInfo[1], ”PPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPNNNNNNNNNNPPPPPPPPPPPPPP
PPPPPPPPP”);启用P 代表计划录像,N 代表不录
像。
}HI_S_RECORD_INFO;
Example:
HI_S_RECORD_INFO sRecInfo;
sRecInfo.bStream = HI_TRUE;
… …
strcpy(sRecInfo.sRecInfo[0], ”PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPNNNNNNNNN
NPPPPPPPPPPPPPPPPPPPPPPP”); //星期天计划录像表
… …
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_NVR_CMD_RECORD_INFO,
& sRecInfo,
sizeof(HI_S_RECORD_INFO));
注:调用一次只能获取或设置一个通道,可以配合HI_SDK_SetChannel 设置
NVR 的通道再来操作。
23、HI_NVR_CMD_RECORD_SYS
设置NVR 全局信息
typedef struct HI_RECORD_SYS
{
HI_U32 u32RecLen; //录像文件时长[1-30 分钟]
HI_U32 u32AlarmLen; //报警延续时长[5-60 秒]
HI_U32 u32Cover; //磁盘满是否覆盖[0-否, 1-是]
IPCAMERA SDK 使用说明书
第38页共109页
HI_U32 u32PlanRecFlag; //计划录像开关[0-关, 1-开]
HI_U32 u32PreRec; //报警预录时长[1-5 秒]
HI_U32 u32RecType; //录像文件格式类型[1-264, 0-AVI]
HI_U32 u32DiskRemain; //磁盘剩余空间[1-10 G]
}HI_S_RECORD_SYS;
Example:
HI_S_RECORD_SYS sNvrRecSys;
sNvrRecSys.u32RecLen = 10;
sNvrRecSys.u32PreRec = 1;
sNvrRecSys.u32AlarmLen = 10;
… …
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_NVR_CMD_RECORD_SYS,
& sNvrRecSys,
sizeof(HI_S_RECORD_SYS));
24、HI_NVR_CMD_TIME
设置NVR 前端时间
typedef struct hiSERVERTIME_INFO_S
{
HI_CHAR sTime[32]; //NVR 时间,格式20110311091208
} HI_S_SERVERTIME;
sTime 为摄像机的时间,格式为20110311091208,即2011-3-11 09:12:08
Example:
HI_S_SERVERTIME sServerTime;
memcpy(sServerTime.sTime, “20110311091208” , sizeof(sServerTime.sTimezone));
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_NVR_CMD_TIME,
&sServerTime,
sizeof(HI_S_SERVERTIME));
25、HI_NVR_CMD_REBOOT
重启摄像机
Example:
HI_SDK_SetConfig (lHandle, HI_NVR_CMD_REBOOT, NULL, 0);
26、HI_NVR_CMD_RESET
恢复出厂设置
Example:
HI_SDK_SetConfig (lHandle, HI_NVR_CMD_RESET, NULL, 0);
27、HI_NVR_CMD_DISK_FORMAT
格式化硬盘
typedef struct HI_DISK_FORMAT
{
IPCAMERA SDK 使用说明书
第39页共109页
HI_S32 s32DiskNum; //硬盘分区,从1 开始,第一块硬盘既是1
}HI_DISK_FORMAT;
Example:
HI_DISK_FORMAT sDisFormat;
sDiskFormat.s32DiskNum = 1;
HI_SDK_SetConfig (lHandle,
HI_NVR_CMD_DISK_FORMAT,
&sDisFormat,
Sizeof(HI_DISK_FORMAT));
28、HI_CMD_WIFI_PARAM
Wifi 参数设置
#define WIFI_NET_INFRA 0
#define WIFI_NET_ADHOC1
#define WIFI_AUTH_NONE0
#define WIFI_AUTH_WEP 1
#define WIFI_AUTH_WPA 2
#define WIFI_AUTH_WPA2 3
#define WIFI_ENC_TKIP 0
#define WIFI_ENC_AES 1
typedef struct HI_WIFI_PARAM
{
HI_CHAR sSsID[32]; //wifi SSID
HI_CHAR sKey[32]; //wifi 密钥
HI_U32 u32Enable; //wifi 开关, 1-开启0-关闭
HI_U32 u32Auth; //加密方式
HI_U32 u32Enc; //密码类型
HI_U32 u32Mode; //连接模式,1-点对点,0-路由
}HI_S_WIFI_PARAM;
Example:
HI_S_WIFI_PARAM sWifi;
strcpy(sWifi.sSsID, “linksys”);
……
HI_SDK_SetConfig (lHandle,
HI_CMD_WIFI_PARAM,
& sWifi,
Sizeof(HI_S_WIFI_PARAM));
29、HI_CMD_WIFI_CHECK
Wifi check
Example:
HI_S_WIFI_PARAM sWifiParam;
//memset(&sWifiParam, 0, sizeof(HI_S_WIFI_PARAM));
IPCAMERA SDK 使用说明书
第40页共109页
strcpy(sWifiParam.sKey, "1234567890");
strcpy(sWifiParam.sSsID, "linksys");
sWifiParam.u32Mode = WIFI_NET_INFRA;
sWifiParam.u32Auth = WIFI_AUTH_WPA2;
sWifiParam.u32Enc = WIFI_ENC_AES;
s32Ret = HI_SDK_SetConfig( m_uiHandle,
HI_CMD_WIFI_CHECK,
&sWifiParam,
sizeof(HI_S_WIFI_PARAM));
if(HI_SUCCESS != s32Ret)
{
return;
}
HI_S32 s32Enable = 0;
s32Ret = HI_SDK_GetConfig(m_uiHandle,
HI_CMD_WIFI_CHECK,
&s32Enable,
sizeof(HI_S32));
if(HI_SUCCESS != s32Ret)
{
MessageBox ("check fail");
return;
}
s32Enable 等于1 表示check 成功,否则失败!
30、HI_CMD_VIDEO_PARAM_EXT
typedef struct HI_Video_Ext
{
HI_U32 u32Channel; //通道
HI_U32 u32Stream; // 0-次码流,1 主码流,2-第三码流
HI_U32 u32Bitrate; //码率Kb
HI_U32 u32Frame; //帧率
HI_U32 u32Iframe; //主帧间隔(1-300)
HI_BOOL blCbr; //视频编码控制0-可变码率,1-固定码率
HI_U32 u32ImgQuality; //视频编码质量(1-6)
} HI_S_Video_Ext;
注: u32Channel 与HI_NET_DEV_StartStream 的参数HI_S_STREAM_INFO 中
u32Channel 一致。获取和设置都应当相同。
Example:
HI_S_Video_Ext sVideo;
IPCAMERA SDK 使用说明书
第41页共109页
// 注:u32Channel 与HI_S_STREAM_INFO 一致
sVideo.u32Channel = HI_CHANNEL_1;
sVideo.u32Stream = HI_STREAM_1;
sVideo.u32Bitrate = 1024;
sVideo.u32Frame = 25;
sVideo.u32Iframe = 50;
sVideo.blCbr = HI_FALSE;
sVideo.u32ImgQuality = 1;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_VIDEO_PARAM_EXT,
&sVideo,
sizeof(HI_S_Video_Ext));
31、HI_CMD_AUDIO_PARAM_EXT
typedef struct HI_Audio_Ext
{
HI_U32 u32Channel; //通道
HI_U32 u32Stream; // 0-次码流,1 主码流,2-第三码流
HI_BOOL blEnable; //是否采集音频
HI_U32 u32Type; //音频格式
} HI_S_Audio_Ext;
注: u32Channel 与HI_NET_DEV_StartStream 的参数HI_S_STREAM_INFO 中
u32Channel 一致。获取和设置都应当相同。
u32Type 格式如下表:
宏定义宏定义值含义
HI_AUDIO_TYPE_G711 0 G711
HI_AUDIO_TYPE_G726 1 G726
Example:
HI_S_Audio_Ext sAudio;
// 注:u32Channel 与HI_S_STREAM_INFO 一致
sAudio.u32Channel = HI_CHANNEL_1;
sAudio.u32Stream = HI_STREAM_1;
sAudio.blEnable = HI_TRUE;
sAudio.u32Type = HI_AUDIO_TYPE_G711;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_AUDIO_PARAM_EXT,
&sAudio,
sizeof(HI_S_Audio_Ext));
32、HI_CMD_RESOLUTION_EXT
typedef struct HI_Resolution_Ext
{
HI_U32 u32Channel; //通道
HI_U32 u32Stream; // 0-次码流,1 主码流,2-第三码流
IPCAMERA SDK 使用说明书
第42页共109页
HI_U32 u32Resolution; //清晰度
} HI_S_Resolution_Ext;
注: u32Channel 与HI_NET_DEV_StartStream 的参数HI_S_STREAM_INFO 中
u32Channel 一致。获取和设置都应当相同。
u32Resolution 值如下表:
宏定义值含义
HI_RESOLUTION_VGA 0 VGA:640x480
HI_RESOLUTION_QVGA 1 QVGA:320x240
HI_RESOLUTION_QQVGA 2 QQVGA:160x120,160x112
HI_RESOLUTION_D1 3 D1:704x576,704x480
HI_RESOLUTION_CIF 4 CIF:352x288,352x240
HI_RESOLUTION_QCIF 5 QCIF : 176x144 , 176x120 ,
176x112
HI_RESOLUTION_720P 6 720P:1280x720
Example:
HI_S_Resolution_Ext sResolution;
// 注:u32Channel 与HI_S_STREAM_INFO 一致
sResolution.u32Channel = HI_CHANNEL_1;
sResolution. u32Stream = HI_STREAM_1;
sResolution.u32Resolution = HI_RESOLUTION_CIF;
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_RESOLUTION_EXT,
&sResolution,
sizeof(HI_S_Resolution_Ext));
注:分辨率设备支持请参阅附录厂家代码和设备类型定义的S 字段。
33、HI_CMD_AUDIO_VOLUME_IN
typedef struct HI_AudioVolume
{
HI_U32 u32AudioVolume; //音频音量,范围:1--100
} HI_S_AudioVolume;
Example:
HI_S_AudioVolume sAuVolume;
sAuVolume.u32AudioVolume = 80
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_AUDIO_VOLUME_IN,
&sAuVolume,
sizeof(HI_S_AudioVolume));
34、HI_CMD_AUDIO_VOLUME_OUT
typedef struct HI_AudioVolume
{
HI_U32 u32AudioVolume; //音频音量,范围:1--100
IPCAMERA SDK 使用说明书
第43页共109页
} HI_S_AudioVolume;
Example:
HI_S_AudioVolume sAuVolume;
sAuVolume.u32AudioVolume = 80
HI_SDK_SetConfig ( lHandle, // HI_SDK_GetConfig
HI_CMD_AUDIO_VOLUME_OUT,
&sAuVolume,
sizeof(HI_S_AudioVolume));
35、HI_CMD_RELAYCTRL
typedef struct HI_RELAYCTRL {
HI_BOOL bEnable; //是否开启继电器开启:HI_TRUE, 关闭:HI_FALSE
} HI_S_RelayCtrl;
36、HI_CMD_EXT_ALARM
手动触发一个外置报警
Example:
HI_S_ExtAlarm m_ExtAlarm;
m_ExtAlarm.bEnable=HI_TRUE;
HI_SDK_SetConfig (lHandle,
HI_NET_DEV_CMD_EXT_ALARM_SNAP,
&m_ExtAlarm,
Sizeof(HI_S_ExtAlarm);
37 HI_CMD_QUANTUM_TIME
设置报警时间段,计划录像时间段,计划抓拍时间段等
#define HI_QT_TYPE_ALARM 0
#define HI_QT_TYPE_PLAN 1
#define HI_QT_TYPE_SNAP 2
typedef struct HI_QUANTUM_TIME
{
HI_U32 u32QtType; //HI_QT_TYPE_ALARM,
HI_QT_TYPE_PLAN
HI_CHAR sDayData[7][48+1]; //P, N
}HI_S_QUANTUM_TIME;
Example:
HI_QUANTUM_TIME QuanTum;
HI_SDK_SetConfig (lHandle,
HI_CMD_QUANTUM_TIME,
&QuanTum,
Sizeof(HI_QUANTUM_TIME);
38 HI_CMD_PIR_ALARM
IPCAMERA SDK 使用说明书
第44页共109页
typedef struct HI_PIRALARM
{
HI_BOOL bEnable; //是否启用PIR 报警:0:关闭1:启用
HI_U32 u32Flag; //PIR 报警模式:0:常闭1:常开
}HI_S_PirAlarm;
Example:
…
HI_S_PirAlarm pir_alarm;
memset(&pir_alarm,0,sizeof(HI_S_PirAlarm));
pir_alarm.bEnable = HI_TRUE;
pir_alarm.u32Flag = 0;
HI_SDK_SetConfig ( lHandle,
HI_CMD_PIR_ALARM,
&pir_alarm,
sizeof(HI_S_PirAlarm));
HI_SDK_GetConfig
获取摄像机参数
HI_S32 HI_SDK_GetConfig (
HI_U32 u32Handle
HI_U32 u32Command,
HI_VOID* pBuf,
HI_U32 u32BufLen
);
Parameters
u32Handle
[IN] 操作句柄
u32Command
[IN] 操作参数命令
宏定义宏定义值含义
HI_GET_PRODUCT_VENDOR 0x1000 厂商信息
HI_CMD_DISPLAY 0x1001 图像参数
HI_CMD_DISPLAY_EXT 0x1002 上下翻白平衡
HI_CMD_INFRARED 0x1003 红外
HI_CMD_VIDEO_PARAM 0x1004 视频参数
HI_CMD_OSD_PARAM 0x1005 OSD 参数
HI_CMD_AUDIO_PARAM 0x1006 音频参数
HI_CMD_AUDIO_INPUT 0x1007 音频输入
HI_CMD_RESOLUTION 0x1008 图像分辨率
HI_CMD_FREQUENCY 0x1009 频率
HI_CMD_PTZ_PARAM 0x1010 云台信息
IPCAMERA SDK 使用说明书
第45页共109页
HI_CMD_MD_PARAM 0x1011 移动报警信息
HI_CMD_NET_INFO 0x1012 网络配置信息
HI_CMD_HTTP_PORT 0x1013 网页端口号
HI_CMD_DEVICE_INFO 0x1014 设备信息
HI_CMD_PRODUCTID 0x1015 产品ID
HI_CMD_USERNUM 0x1016 用户连接数
HI_CMD_SERVER_TIME 0x1017 获取摄像机时间
HI_CMD_NET_EXT 0x1022 获取网络参数
HI_CMD_ATTR_EXT 0x1026 获取输入报警参数
HI_NVR_CMD_NET_EXT 0x1050 NVR 网络参数
HI_NVR_CMD_RTSP_INFO 0x1051 NVR rtsp 参数
HI_NVR_CMD_USER 0x1052 NVR 用户参数
HI_NVR_CMD_CHANNEL_INFO 0x1053 NVR 通道信息
HI_NVR_CMD_SEARCH 0x1055 NVR 搜索NVR 网
络中的摄像机
HI_NVR_CMD_RECORD_INFO 0x1056 NVR 通道录像参数
HI_NVR_CMD_RECORD_SYS 0x1057 NVR 全局参数
HI_NVR_CMD_TIME 0x1058 NVR 时间参数
HI_NVR_CMD_RECORD_STATE 0x1061 NVR 录像状态
HI_NVR_CMD_DISK_INFO 0x1062 NVR 硬盘状态
HI_NVR_CMD_RECORD_STATE_EX 0x1064 NVR 录像状态
HI_CMD_WIFI_PARAM 0x1030 WIFI 参数设置
HI_CMD_WIFI_SEARCH 0x1031 WIFI 搜索
HI_CMD_WIFI_CHECK 0x1035 WIFI check
HI_CMD_VIDEO_PARAM_EXT 0x1047 视频参数(扩展)
HI_CMD_AUDIO_PARAM_EXT 0x1048 音频参数(扩展)
HI_CMD_RESOLUTION_EXT 0x1049 分辨率参数(扩展)
HI_CMD_AUDIO_VOLUME_IN 0x1070 音频输入音量
HI_CMD_AUDIO_VOLUME_OUT 0x1071 音频输出音量
HI_CMD_QUANTUM_TIME 0x1072 报警时间段
HI_CMD_PIR_ALARM 0x1086 PIR 报警
pBuf
[OUT] 获取数据
u32BufLen
[IN] 数据长度
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
各个命令对应的结构体同HI_SDK_SetConfig 中一致,其中HI_SDK_SetConfig 中没有
的属性如下:
IPCAMERA SDK 使用说明书
第46页共109页
1、HI_GET_PRODUCT_VENDOR
typedef struct HI_ProductVendor
{
HI_CHAR sProduct[32]; //产品ID
HI_CHAR sVendor[32]; //供应商ID
}HI_S_ProductVendor;
Example:
HI_S_ProductVendor sProduct;
HI_SDK_GetConfig ( lHandle,
HI_GET_PRODUCT_VENDOR,
&sProduct,
sizeof(HI_S_ProductVendor));
2、HI_CMD_DEVICE_INFO
typedef struct tagHI_DEVICE_INFO
{
HI_CHAR aszServerSerialNumber[40 + 1]; //设备序列号
HI_CHAR aszServerSoftVersion[64 + 1]; //软件版本
HI_CHAR aszServerName[40 + 1]; //服务器名称
HI_CHAR aszServerModel[40 + 1]; //型号
HI_CHAR aszStartDate[40 + 1]; //系统启动日期时间
HI_S32 s32ConnectState; //网络连接状态
}HI_DEVICE_INFO, *PHI_DEVICE_INFO;
Example:
HI_DEVICE_INFO sDeviceInfo;
HI_SDK_GetConfig ( lHandle,
HI_CMD_DEVICE_INFO,
&sDeviceInfo,
sizeof(HI_DEVICE_INFO));
3、HI_CMD_PRODUCTID
产品ID 用字符串表示。
Example:
HI_CHAR sID[64] = {0};
HI_SDK_GetConfig(lHandle, HI_CMD_PRODUCTID, sID, sizeof(sID));
4、HI_CMD_USERNUM
获取用户数据用到int 来获取即可。
Example:
int nNum = 0;
HI_SDK_GetConfig(lHandle, HI_CMD_USERNUM, &nNum, sizeof(int));
5、HI_CMD_SERVER_TIME
获取摄像机端时间
typedef struct hiSERVERTIME_INFO_S
IPCAMERA SDK 使用说明书
第47页共109页
{
HI_CHAR sTime[32]; //摄像机时间,格式20110311091208
} HI_S_SERVERTIME;
sTime 为摄像机的时间,格式为20110311091208,即2011-3-11 09:12:08
Example:
HI_S_SERVERTIME sServerTime;
HI_SDK_GetConfig ( lHandle,
HI_CMD_SERVER_TIME,
&sServerTime,
sizeof(HI_S_SERVERTIME));
6、HI_NVR_CMD_NET_EXT
获取NVR 网络参数
typedef struct HI_NET_EXT
{
HI_S_NETINFO sNetInfo;
HI_S_HTTPPORT sHttpPort;
}HI_S_NET_EXT;
typedef struct HI_HTTPPORT
{
HI_U32 u32HttpPort;
} HI_S_HTTPPORT;
typedef struct tagHI_NETINFO
{
HI_CHAR aszServerIP[40]; //IP 地址
HI_CHAR aszNetMask[40]; //子网掩码
HI_CHAR aszGateWay[40]; //网关
HI_CHAR aszMacAddr[40]; //MAC 地址
HI_CHAR aszFDNSIP[40]; //first DNSIP
HI_CHAR aszSDNSIP[40]; //DNSIP
HI_S32 s32DhcpFlag; //DHCP
HI_S32 s32DnsDynFlag; //DNS 动态分配标识*/
}HI_S_NETINFO, *PHI_S_NETINFO;
Example:
HI_S_NET_EXT sNetExt;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_NET_EXT,
& sAttrExt,
sizeof(HI_S_NET_EXT));
7、HI_NVR_CMD_USER
获取NVR 用户信息
typedef struct HI_USER
IPCAMERA SDK 使用说明书
第48页共109页
{
HI_CHAR sUsername[32]; //用户名,用户名只有admin、user 和guest
HI_CHAR sPassword[32]; //密码
} HI_S_USER;
typedef struct HI_USERINFO
{
HI_S_USER sUser[3]; //用户名只有admin、user 和guest
} HI_S_USERINFO;
Example:
HI_S_USERINFO sUserInfo;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_USER,
& sUserInfo,
sizeof(HI_S_USERINFO));
8、HI_NVR_CMD_CHANNEL_INFO
获取NVR 通道信息
typedef struct HI_CHN_INFO
{
HI_U32 u32Enable; //设置通道状态0-禁用,1-启用
HI_CHAR sHost[24]; //设备IP 地址
HI_BOOL bStream; //码流,在NVR 中暂时不起作用
HI_U32 u32Port; //端口
HI_U32 u32Chn; //通道,在NVR 中不支持
HI_CHAR sUsername[32]; //用户名
HI_CHAR sPassword[32]; //密码
}HI_S_CHN_INFO;
Example:
HI_S_CHN_INFO sNvrChnInfo;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_CHANNEL_INFO,
& sNvrChnInfo,
sizeof(HI_S_CHN_INFO));
注:调用一次只能获取或设置一个通道,可以配合HI_SDK_SetChannel 设置
NVR 的通道再来操作。
9、HI_NVR_CMD_RECORD_INFO
获取NVR 通道录像信息
typedef struct HI_RECORD_INFO
{
HI_BOOL bStream; //通道录像码流,HI_TRUE-主码流,HI_FALSE-次码流
HI_U32 u32SetupAlarm; //联动录像开关,0-禁用,1-启用
HI_U32 u32InputAlarm; //输入报警联动开关,0-禁用,1-启用
IPCAMERA SDK 使用说明书
第49页共109页
HI_U32 u32MdAlarm; //移动侦测联动开关,0-禁用,1-启用
HI_CHAR sRecInfo[7][48+1]; //计划录像录像时间段,7 天,没半小时为一个
单元间隔,如星期一时间内的计划录像时间段
为:
strcpy(sRecInfo[1], ”PPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPNNNNNNNNNNPPPPPPPPPPPPPP
PPPPPPPPP”);启用P 代表计划录像,N 代表不录
像。
}HI_S_RECORD_INFO;
Example:
HI_S_RECORD_INFO sRecInfo;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_RECORD_INFO,
& sRecInfo,
sizeof(HI_S_RECORD_INFO));
注:调用一次只能获取或设置一个通道,可以配合HI_SDK_SetChannel 设置
NVR 的通道再来操作。
10、HI_NVR_CMD_RECORD_SYS
获取NVR 全局信息
typedef struct HI_RECORD_SYS
{
HI_U32 u32RecLen; //录像文件时长[1-30 分钟]
HI_U32 u32AlarmLen; //报警延续时长[5-60 秒]
HI_U32 u32Cover; //磁盘满是否覆盖[0-否, 1-是]
HI_U32 u32PlanRecFlag; //计划录像开关[0-关, 1-开]
HI_U32 u32PreRec; //报警预录时长[1-5 秒]
HI_U32 u32RecType; //录像文件格式类型[1-264, 0-AVI]
HI_U32 u32DiskRemain; //磁盘剩余空间[1-10 G]
}HI_S_RECORD_SYS;
Example:
HI_S_RECORD_SYS sNvrRecSys;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_RECORD_SYS,
& sNvrRecSys,
sizeof(HI_S_RECORD_SYS));
11、HI_NVR_CMD_TIME
获取NVR 前端时间
typedef struct hiSERVERTIME_INFO_S
{
HI_CHAR sTime[32]; //NVR 时间,格式20110311091208
} HI_S_SERVERTIME;
IPCAMERA SDK 使用说明书
第50页共109页
sTime 为摄像机的时间,格式为20110311091208,即2011-3-11 09:12:08
Example:
HI_S_SERVERTIME sServerTime;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_TIME,
&sServerTime,
sizeof(HI_S_SERVERTIME));
12、HI_NVR_CMD_SEARCH
搜索与NVR 在一个局域网内的摄像机
typedef struct HI_DEVINFO
{
HI_CHAR sHost[32]; //IP 地址
HI_U32 u32Port; //端口
}HI_S_DEVINFO;
#define MAX_SEARCH_NUM 64 //最大搜索设备的书
typedef struct HI_SEARCH_INFO
{
HI_U32 u32Num; //返回设备的数量
HI_S_DEVINFO sDevInfo[MAX_SEARCH_NUM]; //设备信息
}HI_S_SEARCH_INFO;
Example:
HI_S_SEARCH_INFO sSearchInfo;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_SEARCH,
&sSearchInfo,
sizeof(HI_S_SEARCH_INFO));
13、HI_NVR_CMD_RECORD_STATE
HI_NVR_CMD_RECORD_STATE_EX
获取录像状态,两者的区别是EX 可以同时获取多个通道的状态
typedef struct HI_REC_STATE
{
HI_U32 u32link; //录像连接状态0-表示没有连接,1-表示连接
HI_U32 u32Record; //录像状态0-无录像,2-报警录像,3-计划录像
}HI_S_REC_STATE;
Example:
HI_S_REC_STATE sRecState;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_RECORD_STATE,
&sRecState,
sizeof(HI_S_REC_STATE));
IPCAMERA SDK 使用说明书
第51页共109页
如果想一次获取多通道状态,可以定义一个结构体如下:
typedef struct HI_STATES
{
HI_S_REC_STATE sRecState[16]; //16 个通道同时获取
}HI_S_STATES;
Example:
HI_S_STATES sRecState;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_RECORD_STATE_EX,
&sRecState,
sizeof(HI_S_STATES));
注:调用一次只能获取或设置一个通道,可以配合HI_SDK_SetChannel 设置NVR
的通道再来操作。
14、HI_NVR_CMD_DISK_INFO
获取硬盘信息
typedef struct HiDISK
{
HI_U32 u32Total; //硬盘总大小, 单位:KB
HI_U32 u32Free; //硬盘可用大小, 单位:KB
}HI_S_DISK;
#define MAX_DISK_NUM 20 //最大20 块硬盘
typedef struct HI_DISK_INFO
{
HI_S32 s32Num; //硬盘总数
HI_S_DISK sDisk[MAX_DISK_NUM]; //硬盘相关信息
}HI_S_DISK_INFO;
Example:
HI_S_DISK_INFO sDiskInfo;
HI_SDK_GetConfig ( lHandle,
HI_NVR_CMD_DISK_INFO,
& sDiskInfo,
sizeof(HI_S_DISK_INFO));
15、HI_CMD_WIFI_SEARCH
查找WIFI
#define WIFI_NET_INFRA 0
#define WIFI_NET_ADHOC1
#define WIFI_AUTH_NONE0
#define WIFI_AUTH_WEP 1
#define WIFI_AUTH_WPA 2
#define WIFI_AUTH_WPA2 3
IPCAMERA SDK 使用说明书
第52页共109页
#define WIFI_ENC_TKIP 0
#define WIFI_ENC_AES 1
typedef struct HI_WFPT
{
HI_CHAR sEssID[32];
HI_S32 s32Chn;
HI_S32 s32Rssi;
HI_U32 u32Enc;
HI_U32 u32Auth;
HI_U32 u32Net;
}HI_S_WFPT;
#define MAX_WFPT 64
typedef struct HI_WIFI_INFO
{
HI_S32 s32Num;
HI_S_WFPT sWfPt[MAX_WFPT];
}HI_S_WIFI_INFO;
Example:
HI_S_WIFI_INFO sWifiInfo;
memset(&sWifiInfo, 0, sizeof(HI_S_WIFI_INFO));
s32Ret = HI_SDK_GetConfig(m_uiHandle,
HI_CMD_WIFI_SEARCH,
&sWifiInfo,
sizeof(HI_S_WIFI_INFO));
if(HI_SUCCESS != s32Ret)
{
MessageBox("Wifi seach fail!");
return;
}
for(int i=0; i<sWifiInfo.s32Num; i++)
{
printf("SSID:%s, AUTH:%d, ENC:%d, NET:%d\n",
sWifiInfo.sWfPt[i].sEssID,
sWifiInfo.sWfPt[i].u32Auth,
sWifiInfo.sWfPt[i].u32Enc,
sWifiInfo.sWfPt[i].u32Net);
}
16 HI_NET_DEV_CMD_PIR_PARAM
IPCAMERA SDK 使用说明书
第53页共109页
typedef struct HI_PIRALARM
{
HI_BOOL bEnable; //是否启用PIR 报警:0:关闭1:启用
HI_U32 u32Flag; //PIR 报警模式:0:常闭1:常开
}HI_S_PirAlarm;
Example:
…
HI_S_PirAlarm pir_alarm;
memset(&pir_alarm,0,sizeof(HI_S_PirAlarm));
HI_S32 s32Ret = HI_SDK_GetConfig( lHandle,
HI_CMD_PIR_ALARM,
&pir_alarm,
sizeof(HI_S_PirAlarm));
1.5 预览解码效果控制
HI_SDK_SetPlayerBufNumber
设置网络延时和播放流畅度可以通过此接口来进行调节
HI_S32 HI_SDK_SetPlayerBufNumbe r(
HI_HANDLE lHandle,
HI_S32 s32BufNum
);
Parameters
lHandle
[IN] 操作句柄
s32BufNum
[IN] 所要设置的单视频播放时缓冲区最大的帧数,取值范围(高清[0-20],普通
[0-50]),SDK 默认的帧缓冲区大小为0
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
设置网络延时和播放流畅度可以通过此接口来进行调节。s32RBNum 值越大,播放的流
畅性越好,相对延时就大;s32RBNum 值越小,播放的延时就小,但是当网络不太顺畅的时
候,会有丢帧现象,影响播放的流畅性。
1.6 云台控制
摄像机是否支持云台属性,可以通过获取HI_GET_PRODUCT_VENDOR 中sProduct
IPCAMERA SDK 使用说明书
第54页共109页
的Z 字段判断,具体请参阅附录厂家代码和设备类型定义章节。
HI_SDK_PTZControl
云台控制操作,含有Z0 字段的设备不支持。
HI_S32 HI_SDK_PTZControl (
HI_HANDLE lHandle,
HI_U32 u32Command,
HI_U32 u32Speed
);
Parameters
lHandle
[IN] 操作句柄
u32Command
[IN] 云台控制命令
宏定义宏定义值含义
HI_CTRL_PTZ_STOP 0x3000 停止云台
HI_CTRL_PTZ_UP 0x3001 云台上仰
HI_CTRL_PTZ_DOWN 0x3002 云台下俯
HI_CTRL_PTZ_LEFT 0x3003 云台左转
HI_CTRL_PTZ_RIGHT 0x3004 云台右转
HI_CTRL_PTZ_ZOOMIN 0x3005 焦距变大(倍率变大)
HI_CTRL_PTZ_ZOOMOUT 0x3006 焦距变小(倍率变小)
HI_CTRL_PTZ_FOCUSIN 0x3007 焦点前调
HI_CTRL_PTZ_FOCUSOUT 0x3008 焦点后调
HI_CTRL_PTZ_APERTUREIN 0x3009 光圈变小
HI_CTRL_PTZ_APERTUREOUT 0x3010 光圈变大
HI_CTRL_PTZ_LIGHT_ON 0x3021 灯光开
HI_CTRL_PTZ_LIGHT_OFF 0x3022 灯光关
HI_CTRL_PTZ_WIPER_ON 0x3023 雨刷开
HI_CTRL_PTZ_WIPER_OFF 0x3024 雨刷关
HI_CTRL_PTZ_AUTO_ON 0x3025 自动开
HI_CTRL_PTZ_AUTO_OFF 0x3026 自动关
HI_CTRL_PTZ_HOME 0x3027 回到原点
HI_CTRL_PTZ_CRUISE_V 0x3028 上下巡航
HI_CTRL_PTZ_CRUISE_H 0x3029 左右巡航
u32Speed
[IN] 速度
#define HI_CTRL_PTZ_SPEED_MAX 0x3F //最大速度
#define HI_CTRL_PTZ_SPEED_MIN 0x00 //最小速度
Return Values
云台控制发送命令无返回值。
IPCAMERA SDK 使用说明书
第55页共109页
Remarks
通过厂商ID 的Z 字段判断是否支持该属性。HI_S_ProductVendor 中sProduct 值。
HI_SDK_PTZControlEx
云台控制操作扩展,单步执行。
HI_S32 HI_SDK_PTZControlEx (
HI_HANDLE lHandle,
HI_U32 u32Command,
);
Parameters
lHandle
[IN] 操作句柄
u32Command
[IN] 云台控制命令
宏定义宏定义值含义
HI_CTRL_PTZ_STOP 0x3000 停止云台
HI_CTRL_PTZ_UP 0x3001 云台上仰
HI_CTRL_PTZ_DOWN 0x3002 云台下俯
HI_CTRL_PTZ_LEFT 0x3003 云台左转
HI_CTRL_PTZ_RIGHT 0x3004 云台右转
HI_CTRL_PTZ_ZOOMIN 0x3005 焦距变大(倍率变大)
HI_CTRL_PTZ_ZOOMOUT 0x3006 焦距变小(倍率变小)
HI_CTRL_PTZ_FOCUSIN 0x3007 焦点前调
HI_CTRL_PTZ_FOCUSOUT 0x3008 焦点后调
HI_CTRL_PTZ_APERTUREIN 0x3009 光圈变小
HI_CTRL_PTZ_APERTUREOUT 0x3010 光圈变大
Return Values
云台控制发送命令无返回值。
Remarks
云台控制扩展用于单步执行单步移动。
HI_SDK_PTZPreset
云台预置点操作
HI_S32 HI_SDK_PTZPreset (
HI_HANDLE lHandle,
HI_U32 u32Command,
HI_U32 u32Preset
);
Parameters
IPCAMERA SDK 使用说明书
第56页共109页
lHandle
[IN] 操作句柄
u32Command
[IN] 云台预置点控制命令
宏定义宏定义值含义
HI_CTRL_PTZ_GOTO_PRESET 0x3015 转到预置点
HI_CTRL_PTZ_SET_PRESET 0x3016 设置预置点
HI_CTRL_PTZ_CLE_PRESET 0x3017 清除预置点
u32Preset
[IN] 预置点
#define HI_CTRL_PTZ_PRESET_MAX 255
#define HI_CTRL_PTZ_PRESET_MIN 0
Return Values
云台控制发送命令无返回值。
Remarks
通过厂商ID 的Z 字段判断是否支持该属性。HI_S_ProductVendor 中sProduct 值。
HI_SDK_TransPTZ
透明云台操作
HI_S32 HI_SDK_TransPTZ (
HI_HANDLE lHandle,
HI_CHAR* psBuf,
HI_U32 u32BufLen
);
Parameters
lHandle
[IN] 操作句柄
psBuf
[IN] 控制云台命令数据, 命令数据只能是128 个字节组成的串, 如
ff01100800041d。
u32BufLen
[IN] 云台控制码的长度,
#define HI_CTRL_PTZ_FT_BUF_LEN 128
Return Values
云台控制发送命令无返回值。
Remarks
透传函数通过845 口控制云台,只发送数据不接收数据,不同云台控制设备透传码不相
同,获取设备的透传码可查看设备相关说明书。
通过厂商ID 的Z 字段判断是否支持该属性。HI_S_ProductVendor 中sProduct 值。
IPCAMERA SDK 使用说明书
第57页共109页
1.7 实时预览数据回调
HI_SDK_SetRealDataCallBack
注册码流数据回调,注册后SDK 中将不解码显示
HI_S32 HI_SDK_SetRealDataCallBack (
HI_HANDLE lHandle,
HI_U32 u32Chn,
OnRealDataCallBack streamCallBack,
HI_VOID* pUserData
);
Parameters
lHandle
[IN] 操作句柄
u32Chn
[IN] 整形参数
streamCallBack
[IN] 码流数据回调函数
pUserData
[IN] 用户数据
Callback Function
typedef HI_S32 (*OnRealDataCallBack)(
HI_U32 u32Chn,
MEDIA_TYPE_E eStreamType,
HI_VOID* pStreamData,
HI_S32 s32DataNum,
HI_U32 s32Pts,
HI_S32 s32KeyFrame,
HI_VOID* pUserData
);
Callback Function Parameters
u32Chn
整形参数
eStreamType
数据类型,音视频数据或头文件数据
宏定义宏定义值含义
MEDIA_VIDEO 1 视频数据
MEDIA_AUDIO 2 音频数据
MEDIA_SYSTERM 4 系统头
pStreamData
数据包含帧头
IPCAMERA SDK 使用说明书
第58页共109页
s32DataNum
数据长度
s32Pts
时间戳
s32KeyFrame
视频关键帧1-I 帧,0-P 帧
pUserData
用户数据
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
eStreamType 类型为MEDIA_SYSTERM,pu8Buffer 的结构是由HI_S_SysHeader
结构组成:
typedef struct
{
HI_U32 u32Width; //视频宽
HI_U32 u32Height; //视频高
} HI_S_VideoHeader;
typedef struct
{
HI_U32 u32Format; //音频格式
} HI_S_AudioHeader;
宏定义宏定义值含义
HI_AUDIO_TYPE_G711 0 G711
HI_AUDIO_TYPE_G726 1 G726
HI_AUDIO_TYPE_AMR 2 AMR
音频采集:8K,16 位,单声道
typedef struct
{
HI_U32 u32SysFlag;
HI_S_VideoHeader struVHeader;
HI_S_AudioHeader struAHeader;
} HI_S_SysHeader;
其中u32SysFlag 为宏定义#define HI_SYS_FLAG 0x53565848。
eStreamType 类型为MEDIA_VIDEO,pu8Buffer 是H264 的码流;
eStreamType 类型为MEDIA_AUDIO,pu8Buffer 是音频数据,如果用非海思解码库,
要将头部4 字节的去掉。
IPCAMERA SDK 使用说明书
第59页共109页
HI_SDK_SetDecCallBack
注册解码数据回调
HI_S32 HI_SDK_SetDecCallBack (
HI_HANDLE lHandle,
HI_U32 u32Chn
OnDecCallBack CallBack,
HI_VOID* pUserData
);
Parameters
lHandle
[IN] 操作句柄
u32Chn
[IN] 整形参数
CallBack
[IN] 解码数据回调函数
pUserData
[IN] 用户数据
Callback Function
typedef LONG (*OnDecCallBack)(
HI_U32 u32Chn,
const FRAME_INFO_S *pFrameInfo,
HI_VOID *pUserData
);
Callback Function Parameters
u32Chn
整形参数
pFrameInfo
帧类型
typedef struct hiFRAME_INFO_S
{
HI_U8* pY; //解码后视频数据Y 分量
HI_U8* pU; //解码后视频数据U 分量
HI_U8* pV; //解码后视频数据V 分量
long nWidth; //视频宽
long nHeight; //视频高
long nType; //data type:YUV420
long nYPich;
long nUVPich;
HI_U64 u64Pts;
}
FRAME_INFO_S;
IPCAMERA SDK 使用说明书
第60页共109页
pData
解码数据回调
pUserData
用户数据
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetMessageCallBack
注册报警信息数据回调
HI_S32 HI_SDK_SetMessageCallBack (
HI_HANDLE lHandle,
HI_U32 u32Chn
OnMessageCallBack CallBack,
HI_VOID * pUserData
);
Parameters
lHandle
[IN] 操作句柄
u32Chn
[IN] 整形参数
CallBack
[IN] 报警信息数据回调函数
pUserData
[IN] 用户数据
Callback Function
typedef LONG (*OnMessageCallBack)(
HI_U32 u32Chn,
MD_TYPE_E eDataType,
HI_U8* pu8Buffer,
HI_U32 u32Length,
HI_VOID* pUserData
);
Callback Function Parameters
u32Chn
整形参数
eDataType
数据类型
宏定义宏定义值含义
HI_MOTION_DETECTION 0 移动侦测报警
HI_INPUT_ALARM 1 输入报警
IPCAMERA SDK 使用说明书
第61页共109页
HI_KEEP_ALIVE 2 心跳包
pu8Buffer
数据。如果为HI_MOTION_DETECTION,数据将以HI_S_ALARM_MD 结构存储:
typedef struct
{
HI_U32 u32Area; //区域
HI_U32 u32X; //x 坐标
HI_U32 u32Y; //y 坐标
HI_U32 u32Width; //矩形宽
HI_U32 u32Height; //矩形高
} HI_S_ALARM_MD;
u32Area 最大为4,数据如下:
宏定义宏定义值含义
HI_MOTION_AREA_1 1 区域1
HI_MOTION_AREA_2 2 区域2
HI_MOTION_AREA_3 3 区域3
HI_MOTION_AREA_4 4 区域4
u32Length
数据长度,HI_MOTION_DETECTION,两个区域同时就有:
u32Length = 2*sizeof(HI_S_ALARM_MD)
u32DataType
用户数据
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetEventCallBack
事件数据回调
HI_S32 HI_SDK_SetEventCallBack (
HI_HANDLE lHandle,
HI_U32 u32Chn,
OnEventCallBack eventCallBack,
HI_VOID* pUserData
);
Parameters
lHandle
[IN] 操作句柄
u32Chn
[IN] 整形参数
eventCallBack
[IN] 事件数据回调函数
pUserData
[IN] 用户数据
IPCAMERA SDK 使用说明书
第62页共109页
Callback Function
typedef LONG (*OnEventCallBack) (
HI_U32 u32Chn,
EVENT_TYPE_E eEventType,
HI_VOID* pEventData,
HI_S32 s32DataNum,
HI_VOID* pUserData
);
Callback Function Parameters
u32Chn
整形参数
eEventType
事件类型
宏定义宏定义值含义
EVENT_LIVE_STOP 0 停止实时预览
EVENT_LIVE_PAUSE 1 暂停实时预览
EVENT_LIVE_PLAY 2 实时预览
EVENT_TALK_STOP 3 停止对讲
EVENT_TALK_PLAY 4 开始对讲
EVENT_TALK_ABNORM 5 对讲异常
EVENT_REC_STOP 6 停止录像
EVENT_REC_PLAY 7 开始录像
EVENT_REC_ABNORM 8 录像异常
EVENT_PLAYBACK_READ 9 回放就绪
EVENT_PLAYBACK_PLAY 10 开始回放
EVENT_PLAYBACK_PAUSE 11 暂停回放
EVENT_PLAYBACK_STOP 12 停止回放
EVENT_NET_CONNECTING 13 正在连接
EVENT_NET_CONNECTED 14 连接成功
EVENT_NET_DISCONNECT 15 连接失败
EVENT_NET_ABNORMAL 16 异常断开
EVENT_NET_RECONNECT 17 重新连接
EVENT_NET_CONNECTFAIL 18 连接失败
EVENT_REALDATA_STOP 19 捕获实时数据
EVENT_REALDATA_PLAY 20 停止捕获数据
pEventData
事件数据
s32DataNum
事件数据长度
pUserData
用户数据
IPCAMERA SDK 使用说明书
第63页共109页
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
事件回调与网络线程在一个线程当中,如果处理窗口消息可以用WINDOWS 窗口消息
机制,如POSTMESSAGE 等;其他可以用线程处理。
1.8 预览声音控制
HI_SDK_SetVolume
设置音量大小
HI_S32 HI_SDK_SetVolume (
HI_HANDLE lHandle,
AUDIO_DIRECT_E eDir,
HI_S32 s32Volume
);
Parameters
u32Handle
[IN] 操作句柄
eDir
[IN] AUDIO_OUT 输出音频,AUDIO_IN 为输入音频(MIC)
s32Volume
[IN] 音频大小,范围[0,100]
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetVolume
获取当前音量大小
HI_S32 HI_SDK_GetVolume (
HI_HANDLE lHandle,
AUDIO_DIRECT_E eDir,
HI_S32* pVolume
);
Parameters
u32Handle
[IN] 操作句柄
eDir
[IN] AUDIO_OUT 输出音频,AUDIO_IN 为输入音频(MIC)
pVolume
[OUT] 音频大小,范围[0,100]
IPCAMERA SDK 使用说明书
第64页共109页
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetMute
设置静音/监听模式
HI_S32 HI_SDK_SetMute (
HI_HANDLE lHandle,
AUDIO_DIRECT_E eDir,
AUDIO_MUTE_E eMute
);
Parameters
u32Handle
[IN] 操作句柄
eDir
[IN] AUDIO_OUT 输出音频,AUDIO_IN 为输入音频(MIC)
eMute
[IN] AUDIO_MUTE_ON 静音状态,AUDIO_MUTE_OFF 监听状态
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetMute
得到静音/监听状态
HI_S32 HI_SDK_GetMute (
HI_HANDLE lHandle,
AUDIO_DIRECT_E eDir,
AUDIO_MUTE_E* pMute
);
Parameters
u32Handle
[IN] 操作句柄
eDir
[IN] AUDIO_OUT 输出音频,AUDIO_IN 为输入音频(MIC)
pMute
[OUT] AUDIO_MUTE_ON 静音状态,AUDIO_MUTE_OFF 监听状态
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
IPCAMERA SDK 使用说明书
第65页共109页
1.9 录像
HI_SDK_StartRecord
开始录像,录像支持两种格式:ASF 和自定义复合流录像,通过接口参数eFileFormat
控制录像类型。
HI_S32 HI_SDK_StartRecord (
HI_HANDLE lHandle,
HI_CHAR * pFilePath,
FILE_FORMAT_E eFileFormat,
MEDIA_TYPE_E eFlag,
HI_S32 s32FileTime
);
Parameters
lHandle
[IN] 操作句柄
pFilePath
[IN] 录像文件路径
eFileFormat
[IN] 文件格式, 目前支持AVI(FILE_FORMAT_AVI) 录像格式、
SF(FILE_FORMAT_ASF)录像格式和复合流(FILE_FORMAT_NUDE_STREAM) 录像格式。
eFlag
[IN] 录像形式,音频、视频、音视频,参考枚举MEDIA_TYPE_E
s32FileTime
[IN] 录像时间长度,单位是秒,默认是0,0 表示无限制。
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
复合流录像:抓取实时数据,按顺序保存到文件中,文件格式前面部分包含了一个
HI_S_SysHeader 结构体的文件头,紧接着是HI_S_AVFrame 结构体,保存了数据块的大小、
类型等信息,然后就是数据块,通过HI_S_AVFrame 中长度值定义数据块大小。结构如下:
HI_S_SysHeader
HI_S_AVFrame
数据块
HI_S_AVFrame
数据块
...................
HI_S_AVFrame
数据块
HI_S_AVFrame
数据块
保存后的数据可以用SDK 中的函数HI_SDK_Playback 或者播放库提供的
IPCAMERA SDK 使用说明书
第66页共109页
HI_PLAYER_OpenFile 接口播放。
HI_SDK_StopRecord
停止录像
HI_S32 HI_SDK_StopRecord (
HI_HANDLE lHandle
);
Parameters
lHandle
[IN] 操作句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
1.10 抓拍
HI_SDK_CapturePicture
抓拍BMP 图,包括实时预览和文件回放
HI_S32 HI_SDK_CapturePicture (
HI_U32 u32Handle,
HI_CHAR* pszFilePath
);
Parameters
u32Handle
[IN] 操作句柄
pszFilePath
[IN] 抓拍路径
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_CaptureJPEGPicture
抓拍JPG 图,包括实时预览和文件回放
HI_S32 HI_SDK_CaptureJPEGPicture (
HI_HANDLE lHandle,
HI_CHAR* sFilePath
);
Parameters
lHandle
[IN] 操作句柄
IPCAMERA SDK 使用说明书
第67页共109页
sFilePath
[IN] 抓拍路径
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SnapYUVData
抓解码后的YUV 数据
HI_S32 HI_SDK_SnapYUVData(
HI_HANDLE lHandle,
HI_YUV_INFO_S* pYUVInfo,
HI_S32 nYUVType,
HI_S32 *pNeedSize
);
Parameters
lHandle
[IN] 操作句柄
pYUVInfo
[IN][OUT] 存放YUV数据。
nYUVType
[IN] 指定抓取的YUV 类型,扩展用,恒为0,目前只支持YUV420 格式。
pNeedSize
[OUT] 存放YUV所需内存的大小,不能为空。
Return Values
成功返回HI_SUCCESS,失败返回HI_FAILURE。
如果pYUVInfo 为空,函数返回HI_FAILURE,pNeedSize 返回YUV 数据所需内存的大小。
具体用法如下:
Char * filename = “.......”.;
HI_S32 nNeedSize = 0;
HI_YUV_INFO_S yuv;
memset(&yuv,0,sizeof(HI_YUV_INFO_S));
yuv.nDataLen = 1920*1080 * 3/2;
yuv.pData = (HI_U8*)malloc(yuv.nDataLen);
HI_S32 s32Ret = HI_FAILURE;
if(yuv.pData)
{
if(HI_SDK_SnapYUVData(m_sCamInfo[m_u32CurScr].lHandle,&yuv,0,&nNeedSize)
== HI_SUCCESS)
{
//yuv,do some thing here
IPCAMERA SDK 使用说明书
第68页共109页
Save_File(filename,yuv.pData,nNeedSize);
}
free(yuv.pData);
}
HI_SDK_SnapJpeg
网络抓拍
HI_S32 HI_SDK_SnapJpeg (
HI_HANDLE lHandle,
HI_U8* pu8Data,
HI_S32 s32BufLen,
HI_S32 *pSize
);
Parameters
lHandle
[IN] 操作句柄
pu8Data
[IN] 内存数据,JPG 格式
s32BufLen
[IN] 申请内存数据的长度,不能小于1024 字节
pSize
[IN] 返回数据大小
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
Remarks
网络抓拍每秒抓拍最多抓取2 张图片。
网络抓拍实现抓取网络图像, 保存JPG 格式的数据到内存中, 接口再登录
(HI_SDK_Login)成功后即可使用,申请的内存在外部进行,申请内存大小不能小于:
#define HI_SDK_SNAP_BUF_LEN_MIN 1024
具体用法如下:
char *sData = (char*)malloc(1024*1024);
int nSize = 0;
s32Ret = HI_SDK_SnapJpeg(m_lHandle, (HI_U8*)sData, 1024*1024, &nSize);
if(s32Ret == HI_SUCCESS)
{
FILE *fp = fopen("D:\\photo.jpg", "wb+");
if( !fp )
free(sData);
IPCAMERA SDK 使用说明书
第69页共109页
fwrite((const char*)sData, 1, nSize, fp);
fclose( fp );
}
free(sData);
sData = NULL;
1.11 图像叠加显示
HI_SDK_InputDrawData
添加要叠加的图像信息、类型
HI_S32 HI_SDK_InputDrawData (
HI_HANDLE lHandle,
DRAW_INFO_S* pstrDrawData,
HI_S32 s32StrSize,
HI_S32 s32DrawState
);
Parameters
lHandle
[IN] 操作句柄
pstrDrawData
[IN] 信息缓冲
s32StrSize
[IN] 信息缓冲大小
s32DrawState
[IN] 显示类型,DRAW_STATE 和EVENT_STATE 两种类型
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_ClearDrawData
清除指定的叠加图像信息
HI_S32 HI_SDK_ClearDrawData (
HI_HANDLE lHandle,
HI_CHAR* pDrawData,
HI_S32 s32DrawState
);
Parameters
lHandle
[IN] 操作句柄
pDrawData
[IN] 信息缓冲
s32DrawState
IPCAMERA SDK 使用说明书
第70页共109页
[IN] 显示类型,DRAW_STATE 和EVENT_STATE 两种类型
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SelectPic
设置鼠标所在位置为焦点,该函数调用DRAW 回调处理叠加的图像
HI_S32 HI_SDK_SelectPic (
HI_HANDLE lHandle,
CPoint point
);
Parameters
lHandle
[IN] 操作句柄
point
[IN] 当前鼠标所在的坐标
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_MouseMove
鼠标移动时调用该函数,函数调用DRAW 回调更新MD 区域坐标
HI_S32 HI_SDK_MouseMove (
HI_HANDLE lHandle,
UINT nFlags,
CPoint point,
CRect rcRect
);
Parameters
lHandle
[IN] 操作句柄
nFlags
[IN] 按键标记
point
[IN] 当前鼠标所在的坐标
rcRect
[IN] 窗口坐标
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
IPCAMERA SDK 使用说明书
第71页共109页
HI_SDK_SetDrawCallBack
注册绘图回调,当鼠标移动对MD 坐标信息修改时,调用该回调函数更新MD 属性
HI_S32 HI_SDK_SetDrawCallBack (
HI_HANDLE lHandle,
HI_U32 u32Chn,
OnDrawCallBack callBack,
HI_VOID* pUserData
);
Parameters
lHandle
[IN] 操作句柄
u32Chn
[IN] 整形参数
OnDrawCallBack
[IN] 事件数据回调函数
pUserData
[IN] 用户数据
Callback Function
typedef LONG (*OnDrawCallBack) (
HI_U32 u32Chn,
RECT rcDrawRect,
HI_CHAR* pszName,
HI_VOID* pUserData
);
Callback Function Parameters
u32Chn
整形参数
rcDrawRect
图标新坐标
pszName
图标的名称
pUserData
用户数据
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_EnablePic
显示隐藏叠加图像
HI_S32 HI_SDK_EnablePic (
HI_HANDLE lHandle,
IPCAMERA SDK 使用说明书
第72页共109页
HI_CHAR* pszName,
HI_S32 s32EnableValue,
HI_S32 s32DrawState
);
Parameters
lHandle
[IN] 操作句柄
pszName
[IN] 名称
s32EnableValue
[IN] 显示隐藏,0 为隐藏,1 为显示
s32DrawState
[IN] 显示类型,DRAW_STATE 和EVENT_STATE 两种类型
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetPicInfo
获取图像高宽
HI_S32 HI_SDK_GetPicInfo (
HI_HANDLE lHandle,
HI_S32* pHeight,
HI_S32* pWidth
);
Parameters
lHandle
[IN] 操作句柄
pHeight
[OUT] 高度
pWidth
[OUT] 宽度
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetPostDrawCallBackEx
注册自绘回调
HI_SDK_SetPostDrawCallBackEx(
HI_HANDLE lHandle,
HI_U32 32Chn,
IPCAMERA SDK 使用说明书
第73页共109页
HISDK_PostDrawCallBackEx callback,
HI_VOID * pUserData
);
Parameters
lHandle
[IN] 操作句柄
u32Chn
[IN] 整形参数
callback
[IN] 自绘回调
pUserData
[IN] 用户数据,默认为NULL
Callback Function
typedef HRESULT (HISDK_CALLBACK *HISDK_PostDrawCallBackEx)(
HI_VOID * lRes,
HI_VOID * hDc,
HI_S32 s32ImageWidth,
HI_S32 s32ImageHeight,
HI_S32 s32WndWidth,
HI_S32 s32WndHeight,
HI_S32 s32Offx,
HI_S32 s32Offy,
HI_U64 u64TimeStamp,
HI_VOID * pPara
);
Callback Function Parameters
lRes
SDK 内部使用,保留.
hDc
自绘用HDC 指针
s32ImageWidth
图像宽度
s32ImageHeight
图像高度
s32WndWidth
窗体宽度
s32WndHeight
窗体高度
s32Offx
水平偏移
s32Offy
垂直偏移
IPCAMERA SDK 使用说明书
第74页共109页
u64TimeStamp
时间戳
pUserData
用户数据
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
如果Callback 不为NULL,SDK 将不向摄像机端发送音频数据,发送音频数据可以通
1.12 语音对讲转发
HI_SDK_StartVoiceCom
打开对讲
HI_S32 HI_SDK_StartVoiceCom (
HI_HANDLE lHandle,
HI_U32 u32Chn,
OnVoiceDataCallBack callback,
HI_VOID * pUserData
);
Parameters
lHandle
[IN] 操作句柄
u32Chn
[IN] 整形参数
Callback
[IN] 语音回调,默认为NULL
pUserData
[IN] 用户数据,默认为NULL
Callback Function
typedef LONG (*OnVoiceDataCallBack) (
HI_U32 u32Chn,
HI_U8* pBuf,
HI_S32 s32Size,
HI_U32 u32TimeStamp,
HI_VOID *pUserData
);
Callback Function Parameters
u32Chn
整形参数
pBuf
IPCAMERA SDK 使用说明书
第75页共109页
音频数据
s32Size
音频数据大小
u32TimeStamp
时间戳
pUserData
用户数据
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
如果Callback 不为NULL,SDK 将不向摄像机端发送音频数据,发送音频数据可以通
过HI_SDK_VoiceComSendData 函数发送
HI_SDK_StopVoiceCom
关闭对讲
HI_S32 HI_SDK_StopVoiceCom (
HI_HANDLE lHandle,
);
Parameters
lHandle
[IN] 操作句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_VoiceComSendData
将采集回来的数据发送给对方
HI_S32 HI_SDK_VoiceComSendData (
HI_HANDLE lHandle,
HI_CHAR* psBuf,
HI_U32 u32BufLen,
HI_U64 u64Pts
);
Parameters
lHandle
[IN] 操作句柄
psBuf
[IN] 发送数据
u32BufLen
IPCAMERA SDK 使用说明书
第76页共109页
[IN] 数据长度
U64Pts
[IN] 时间戳
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
对讲采集回来的数据要求是8K,16 位,单声道G726 压缩数据,具体用法请参阅Demo
中的用法。
非海思解码库编码的音频需要在每个音频包前加入4 个字节
G726:0x00 0x01 0x14 0x00
G711:0x00 0x01 0x50 0x00
1.13 录像回放
HI_SDK_Playback
回放
HI_HANDLE HI_SDK_Playback (
HI_CHAR* psFilePath,
HI_VOID* pWnd
);
Parameters
psFilePath
[IN] 文件路径
pWnd
[IN] 回放窗口句柄
Return Values
成功将返回回放操作句柄HI_HANDLE,失败将返回0。
HI_SDK_StopPlayback
关闭回放
HI_S32 HI_SDK_StopPlayback (
HI_HANDLE lPlayHandle
);
Parameters
lPlayHandle
[IN] HI_SDK_Playback 返回的操作句柄
Return Values
IPCAMERA SDK 使用说明书
第77页共109页
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_PlayBackControl
控制回放
HI_S32 HI_SDK_PlayBackControl (
HI_HANDLE lPlayHandle,
PBCTRL_TYPE_E s32Command,
HI_S32 s32Value,
HI_S32 *s32OutValue
);
Parameters
lPlayHandle
[IN] HI_SDK_Playback 返回的操作句柄
s32Command
[IN] 命令操作
定义定义值含义
PB_CTRL_PLAY 0 播放
PB_CTRL_STOP 1 停止
PB_CTRL_PAUSE 2 暂停
PB_CTRL_RATE 3 调整速度
PB_CTRL_FRAME 4 单帧
PB_CTRL_SETPOS 5 设置播放位置
PB_CTRL_GETPOS 6 获取播放位置
PB_CTRL_MUTE 7 静音/监听
PB_CTRL_VOLUME 8 设置音量
PB_CTRL_GETTIME 9 获取播放时间
s32Value
[IN] 设置操作值
s32OutValue
[OUT] 获取操作得到的值
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
1.14 解码操作
HI_SDK_PauseDecode
暂停解码,视频不显示
HI_S32 HI_SDK_PauseDecode (
HI_HANDLE lHandle
);
IPCAMERA SDK 使用说明书
第78页共109页
Parameters
lHandle
[IN] 操作句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_ResumeDecode
恢复解码,恢复从I 帧开始解码
HI_S32 HI_SDK_ResumeDecode (
HI_HANDLE lHandle
);
Parameters
lHandle
[IN] 操作句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
1.15 设置操作通道
用户登录后,在不用请求音视频流的情况下,可以设置设备端的参数,默认设置的是第
一通道。如果前端设备是多通道的设备(如NVR),可以调用HI_SDK_SetChannel 设置为当
前通道,即可对通道进行参数设置,云台控制等操作。
HI_SDK_SetChannel
设置当前操作通道
HI_S32 HI_SDK_SetChannel (
HI_U32 u32Handle,
HI_U32 u32Channel
);
Parameters
u32Handle
[IN] 操作句柄
u32Channel
[IN] 通道+码流,通道从1 开始,格式:通道*10 + 1 或通道*10 + 2,1 代表主码
流,2 代表次码流,如11 即第一通道主码流,92 第九通道次码流
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
IPCAMERA SDK 使用说明书
第79页共109页
HI_SDK_GetChannel
获取当前操作通道
HI_S32 HI_SDK_GetChannel (
HI_U32 u32Handle
);
Parameters
u32Handle
[IN] 操作句柄
Return Values
返回值返回的是通道,通道从1 开始,格式:通道*10 + 1 或通道*10 + 2,1 代表主码
流,2 代表次码流,如11 即第一通道主码流,92 第九通道次码流
1.16 其他
HI_SDK_GetSDKVersion
获取SDK 版本号
HI_S32 HI_SDK_GetSDKVersion (
HI_CHAR* pVersion
);
Parameters
pVersion
[OUT] SDK 版本号
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetPlayRate
获取预览播放平均码流帧率
HI_S32 HI_SDK_GetPlayRate (
HI_HANDLE lHandle,
HI_S32 *pFrameRate,
HI_S32 *pBitRate
);
Parameters
lHandle
[IN] 操作句柄
pFrameRate
[OUT] 帧率
pBitRate
IPCAMERA SDK 使用说明书
第80页共109页
[OUT] 码率
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetState
获取播放、对讲、录像状态
HI_S32 HI_SDK_GetState (
HI_HANDLE lHandle,
STATE_ID_E eStateID,
HI_S32 * pState
);
Parameters
lHandle
[IN] 操作句柄
eStateID
[IN] 类型
typedef enum hiSTATE_ID_E
{
STATE_ID_PLAY = 0, //文件或流播放标志
STATE_ID_REC, //录像标志
STATE_ID_TALK, //对讲标志
STATE_ID_SERVER_USERNUM, //用户连接数
STATE_ID_BUTT
} STATE_ID_E;
pState
[OUT] 状态
STATE_ID_E 对应的枚举如下:
1、STATE_ID_PLAY
typedef enum hiPLAY_STATE_E
{
PLAY_STATE_PAUSE = 0, //暂停
PLAY_STATE_PLAY, //播放
PLAY_STATE_AUDIO, //音频
PLAY_STATE_VIDEO, //视频
PLAY_STATE_STOP, //停止
PLAY_STATE_BUTT
} PLAY_STATE_E;
2、STATE_ID_REC
typedef enum hiREC_STATE_E
{
REC_STATE_RUN = 0, //正在录像
REC_STATE_STOP, //停止录像
IPCAMERA SDK 使用说明书
第81页共109页
REC_STATE_BUTT
} REC_STATE_E;
3、STATE_ID_TALK
typedef enum hiTALK_STATE_E
{
TALK_STATE_RUN = 0, //正在对讲
TALK_STATE_STOP, //停止对讲
TALK_STATE_BUTT
} TALK_STATE_E;
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetPlayerHandle
获取播放器句柄,包括实时预览和文件回放
HI_S32 HI_SDK_GetPlayerHandle (
HI_HANDLE lHandle,
HI_VOID** ppPlayerHandle
);
Parameters
lHandle
[IN] 操作句柄
ppPlayerHandle
[OUT] 播放库句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetDrawWnd
改变播放时显示的窗口
HI_S32 HI_SDK_SetDrawWnd (
HI_HANDLE lHandle,
HI_VOID* pWnd
);
Parameters
lHandle
[IN] 操作句柄
pWnd
[IN] 窗口句柄
Return Values
IPCAMERA SDK 使用说明书
第82页共109页
成功返回HI_SUCCESS,失败返回错误代码。
Remark
如果在播放时要将播放窗口换到另一个播放窗口,可以直接用改接口,只要将要显示的
窗口句柄与相应的操作句柄关联起来即可。如果pWnd 为空时,DDRAW 将销毁,即将不对
视频进行显示;只有再次设置pWnd 为非空时,才能再次显示。
HI_SDK_GetSupportAttr
获取摄像机支持属性
HI_S32 HI_SDK_GetSupportAttr (
HI_HANDLE lHandle,
HI_S_SUPPORT* pSupport
);
Parameters
lHandle
[IN] 操作句柄
pSupport
[OUT] HI_S_SUPPORT 结构体
typedef struct tagHI_SUPPORT
{
HI_U32 u32Operation; //操作属性,如夜视效果白平衡等等
HI_U32 u32Reslution; //主码流支持分辨率
HI_U32 u32Reslution1; //次码流支持分辨率
HI_U32 u32FrameMax; //最大帧数
HI_U32 u32BitRateMin; //主码流最小码率
HI_U32 u32BitRateMax; //主码流最大码率
HI_U32 u32BitRateMin1; //次码流最小码率
HI_U32 u32BitRateMax1; //次码流最大码率
}HI_S_SUPPORT;
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remarks
SUPPORTATTR_NIGHTVISION_SET_FLAG (0x000000001<<1) //夜视
SUPPORTATTR_WHITEBALANCE_FLAG (0x000000001<<3) //白平衡
SUPPORTATTR_FLIP_FLAG (0x000000001<<4) //翻转
SUPPORTATTR_MIRROR_FLAG (0x000000001<<5) //镜像
SUPPORTATTR_BRIGHTNESS_FLAG (0x000000001<<6) //亮度
SUPPORTATTR_SATURATION_FLAG (0x000000001<<7) //饱和度
SUPPORTATTR_CONTRAST_FLAG (0x000000001<<8) //对比度
SUPPORTATTR_HUE_FLAG (0x000000001<<9) //色度
SUPPORTATTR_SUBSTREAM_FLAG (0x000000001<<10) //次码流
IPCAMERA SDK 使用说明书
第83页共109页
SUPPORTATTR_POWERFREQ_FLAG (0x000000001<<11) //频率
Example:
HI_S_SUPPORT sSupport;
HI_SDK_GetSupportAttr( lHandle, &sSupport );
if( sSupport.u32Operation |= SUPPORTATTR_SUBSTREAM_FLAG )
//支持夜视效果
if( sSupport.u32Operation |= SUPPORTATTR_FLIP_FLAG )
//支持翻转效果
if( sSupport.u32Operation |= SUPPORTATTR_POWERFREQ_FLAG )
//支持频率设置
… …
if( sSupport.u32Reslution |= (0x00000001<<HI_RESOLUTION_VGA) )
//主码流支持VGA 分辨率
if( sSupport.u32Reslution |= (0x00000001<<HI_RESOLUTION_CIF) )
//主码流支持CIF 分辨率
HI_SDK_SetAutoAdjust
设置播放画面的显示比例
HI_S32 HI_SDK_SetAutoAdjust (
HI_HANDLE lHandle,
);
Parameters
lHandle
[IN] 操作句柄
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetAutoAdjust
获取播放画面的显示比例
HI_S32 HI_SDK_GetAutoAdjust (
HI_HANDLE lHandle,
);
Parameters
lHandle
[IN] 操作句柄
Return Values
HI_SUCCESS 表示当前显示为自动调节状态,HI_ FAILURE 表示非自动调节状态。
IPCAMERA SDK 使用说明书
第84页共109页
HI_SDK_GetMediaAttr
获取设置播放音视频属性参数
HI_S32 HI_SDK_GetMediaAttr (
HI_HANDLE lHandle,
STREAM_ATTR_S *pStreamInfo
);
Parameters
lHandle
[IN] 操作句柄
pStreamInfo
[OUT] STREAM_ATTR_S 结构体
typedef struct tagPLAYERSDK_ATTR_VIDEO_STREAM_S
{
PLAYERSDK_VIDEO_FORMAT_E eVEncode; //视频格式
long lHeight; //video height
long lWidth; //video width
long lBitRate; //video bit rate
long lFrameRate; //video frame rate
}PLAYERSDK_ATTR_VIDEO_STREAM_S;
//audio attr
typedef struct tagPLAYERSDK_ATTR_AUDIO_S
{
PLAYERSDK_AUDIO_FORMAT_E eAEncode; //audio encode format
long lSamplesPerSec; //audio's samples per second
long lBitsPerSample; //bits per sample
long lBitRate; //audio's bit rate
long lBlockAlign; //if block align
long lChannels; //audio's channels
long lFrameFlag; //audio's frame flag
long length; //audio's size
void *pReserved;
}PLAYERSDK_ATTR_AUDIO_S;
//frame image info
typedef struct hiSTREAM_ATTR_S
{
PLAYERSDK_ATTR_VIDEO_STREAM_S struVAttr;
PLAYERSDK_ATTR_AUDIO_S struAAttr;
} STREAM_ATTR_S;
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
IPCAMERA SDK 使用说明书
第85页共109页
Remarks
Example:
STREAM_ATTR_S struStreamInfo;
HI_SDK_GetMediaAttr(.lHandle, &struStreamInfo);
HI_SDK_DisplayAll
显示区域电子放大
HI_S32 HI_SDK_DisplayAll (
HI_HANDLE lHandle,
HI_S32 s32Left,
HI_S32 s32Top,
HI_S32 s32Right,
HI_S32 s32Bottom,
HI_BOOL bDisplayAll
);
Parameters
lHandle
[IN] 操作句柄
s32Left
[IN] 相对于显示屏幕的左上角坐标(x)
s32Top
[IN] 相对于显示屏幕的左上角坐标(y)
s32Right
[IN] 相对于显示屏幕的右下角坐标(x)
s32Bottom
[IN] 相对于显示屏幕的右下角坐标(y)
bDisplayAll
[IN] 是否显示整个图像,HI_TRUE—显示全部,HI_FALSE—使用区域放大功能
默认值HI_TRUE,设置显示区域必须使用HI_FALSE;
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remark
函数的功能在SDK 内部显示动态电子放大,输入的坐标是相对窗口显示坐标。
HI_SDK_SetDisplayMode
设置显示模式
HI_S32 HI_SDK_SetDisplayMode (
HI_HANDLE hHandle,
IPCAMERA SDK 使用说明书
第86页共109页
PLAYER_DISPLAYMODE_E eDisplayMode
);
Parameters
lHandle
[IN] 操作句柄
eDisplayMode
[IN] 显示模式
typedef enum hiPLAYER_DISPLAYMODE_E
{
PLAYER_DPY_D3D = 0, //D3D 模式
PLAYER_DPY_DDRAW, //Ddraw 模式
}PLAYER_DISPLAYMODE_E;
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_GetDisplayMode
获取当前显示模式
HI_S32 HI_SDK_GetDisplayMode (
HI_HANDLE hHandle,
PLAYER_DISPLAYMODE_E *pDisplayMode
);
Parameters
lHandle
[IN] 操作句柄
pDisplayMode
[OUT] 显示模式
typedef enum hiPLAYER_DISPLAYMODE_E
{
PLAYER_DPY_D3D = 0, //D3D 模式
PLAYER_DPY_DDRAW, //Ddraw 模式
}PLAYER_DISPLAYMODE_E;
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
HI_SDK_SetDisplayCallback
设置D3D 显示模式下叠加标志
HI_S32 HI_SDK_SetDisplayCallback (
HI_HANDLE hHandle,
HI_BOOL bDrawCallback
IPCAMERA SDK 使用说明书
第87页共109页
);
Parameters
lHandle
[IN] 操作句柄
bDrawCallback
[IN] 启动D3D 叠加标志
Return Values
成功返回HI_SUCCESS,失败返回错误代码。
Remark
播放库为了适应在WIN7 以及以上版本的需求,修改了默认显示方式,设置成D3D
并保留了Ddraw 模式。如果当前显示模式为D3D 模式, 需要从回调函数
HI_SDK_SetDrawCallBack 中调用画图句柄进行图像叠加(比如画报警框,叠加文字等),
需要将D3D 模式打开,此函数功能为打开回调标志。
IPCAMERA SDK 使用说明书
第88页共109页
第二部分OCX 控件接口
2.1、功能简介
客户端OCX 提供图像实时预览、客户端抓拍、客户端录像、视频参数显示及设置、移
动参数显示及设置、对讲、云台控制、本地回放等功能。
IE 主界面、图像参数配置和移动参数配置界面共用一个控件。其中移动参数配置界面将调
用接口SetUseMDPage。可参考IE 网页代码调用OCX 接口。
使用方法:
使用控件必须注册,如果是从网页上下载的控件安装后就已经注册,如果不是要手工注
册,如用命令regsvr32+控件名称进行注册。
从网页上下载空间并安装控件, 在C:\WINDOWS\system32 目录下会有
WebClientPlus.ocx 空间以及有关的库文件。调用控件的方法是以组件形式插入到工程目录
中(根据开发环境的不同,调用方法不同),这样就可以使用相关的接口。工程开发完成后,
打包需要选择OCX 控件自注册。
手动注册OCX 控件:
1、在网页中调用OCX 控件方法如下:
<SCRIPT type=text/JavaScript>
if (navigator.appName.indexOf("Microsoft Internet Explorer") != -1)
{
document.open();
document.write('<object
classid="clsid:42B182F9-3F08-484E-9913-07193A5D36A5"
codebase="WebClientPlus.ocx#version=3,0,1,1" id="DHiMPlayer" align="absbottom"
viewastext>');
document.write('<p align="left" style="font-size:14px">');
document.write(' <span id="t5"> 警告信息显示如下:
</span><br>');
document.write(' <span id="t6">1. 您的电脑没有安装浏览视频控件。<br>2. 您已经安
IPCAMERA SDK 使用说明书
第89页共109页
装控件但版本是不最新, 请重新安装控件。<br><br> 请点击</span><a
href="/web/ClientOCXPlus_Setup.exe" id="t7">下载控件</a>');
document.write(' <span id="t8">然后点击</span> <b id="t9"> 运行</b> <span
id="t10">安装控件,重新刷新网页,浏览视频。</span></p>');
document.write('<param name="_Version" value="65536"> <param
name="_ExtentX" value="10954"> <param name="_ExtentY" value="6826">');
document.write('<param name="_StockProps" value="0">');
document.write('<embed src="65536" _version="65536" _extentx="10954"
_extenty="6826" _stockprops="0" align="center" height="0" width="0">
</object>');
document.close();
}
</SCRIPT>
其中
clsid:42B182F9-3F08-484E-9913-07193A5D36A5 为OCX 的Clsid;
codebase="WebClientPlus.ocx 为OCX 的名称;
version=3,0,1,1 OCX 版本号
调用接口:
DHiMPlayer.SetUrl(url,80,streamnum,name0,password0);
DHiMPlayer.SetWndPos(0, 0, w, h);
DHiMPlayer.Play();
2、OCX 在开发环境中使用(以VC++ 6.0 为例)
效果图:
1) 新建基于对话框的mfc 工程,名称为hiPlayer;
IPCAMERA SDK 使用说明书
第90页共109页
2) 右键对话框选择”Insert ActiveX Control…”,出现对话框Insert ActiveX
Control;
3) 选择已经注册好的OCX 控件(必须注册OCX),在对话框中将显示出OCX 控件;
4) 为OCX 控件添加成员变量CwebClient m_hiPlayer;
5) 在OnOK 按钮消息中输入如下:
void CHiPlayerDlg::OnOK()
{
m_hiPlayer.SetUrl("192.168.1.22", 80, 11, "admin", "admin");
//第一通道主码流-11 第一通道次码流-12
m_hiPlayer.Play();
//CDialog::OnOK();
}
IPCAMERA SDK 使用说明书
第91页共109页
6) 编译即可运行。
注:不同的开发环境调用OCX 控件的方法不同,具体就开发环境而定。
7) 点击控件消息,在MFC ClassWizard 中选择控件,在Messages:出现三个事件:
OnLBClick(左击)、OnLDbClick(双击)和OnRBClick(右击)三个事件,双击添加事件,
在事件中添加代码。(版本在3.0.2.2 以上才支持)
2.2、调用顺序
SetWndPos
SetUrl
Play
2.3、接口说明
2.3.1 设置播放窗口位置
设置播放窗口位置
long SetWndPos (
long lLeft,
long lTop,
long lRight,
long lBottom
);
Parameters
IPCAMERA SDK 使用说明书
第92页共109页
lLeft
[IN] 左侧坐标
lTop
[IN] 顶部坐标
lRight
[IN] 右侧坐标
lBottom
[IN] 底部坐标
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.2 设置URL
设置URL
long SetUrl (
LPCTSTR sHost,
long lPort,
long lChn,
LPCTSTR sUser,
LPCTSTR sPwd
);
Parameters
sHost
[IN] 主机地址
lPort
[IN] 端口号
lChn
[IN] 通道码流(通道*10+码流,如:第一通道的主码流为1*10+1=11;次码流
1*10+2=12),通道应用于转发服务器,如果非转发,通道为1,即主码流为11,次码流为
12
sUser
[IN] 用户名
sPwd
[IN] 密码
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.3 连接预览画面
连接预览画面
long Play(
);
IPCAMERA SDK 使用说明书
第93页共109页
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.4 获取连接状态
获取连接状态
long GetPlayState (
);
Return Values
返回3 表示无音频视频,即没有连接,2 表示只有音频没有视频,1 表示只有视频没有
音频。
2.3.5 停止预览
停止预览
long Stop (
);
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.6 设置静音/监听
设置静音/监听
long Mute (
);
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.7 获取音频状态
获取音频状态
BOOL GetMuteState (
);
Return Values
HI_SUCCESS 表示静音,HI_ FAILURE 表示监听。
2.3.8 开始停止录像
开始停止录像
long Record (
long lMode
IPCAMERA SDK 使用说明书
第94页共109页
);
开始录像,指定路径和文件名
long RecordExt (
LPCTSTR lpCstrFilename
);
停止录像
long StopRecord (
);
Parameters
lMode
[IN] 未使用
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.9 获取录像状态
获取音频状态
BOOL GetRecState (
);
Return Values
HI_SUCCESS 表示正在录像,HI_ FAILURE 表示没有录像。
2.3.10 抓拍
抓拍,弹出保存对话框
long Snapshot (
);
不弹出保存对话框
long SnapshotEx (
);
自定路径和文件名
long SnapshotExt (
HI_U32 u32Type,
LPCTSTR lpCstrFilename
);
u32Type:0 表示JPG 格式,1 表示BMP 格式
lpCstrFilename:路径+文件名
IPCAMERA SDK 使用说明书
第95页共109页
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.11 设置录像抓拍保存路径
设置录像抓拍保存路径,调用接口将出现选择目录对话框
long SetRecordPath (
);//弹出选择路径窗口
设置录像抓拍保存路径,指定路径
long SetRecordPathEx (
LPCTSTR lpStrPath
);//传递路径
获取录像抓拍保存路径
BSTR GetRecordPath (
);
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
注:SetRecordPath 将弹出选择路径对话框,SetRecordPathEx(控件版本在3.0.2.2 以上才支
持)传递路径的方法。
2.3.12 打开关闭对讲
打开关闭对讲
long Talk (
);
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.13 获取对讲状态
获取对讲状态
BOOL GetTalkState (
);
Return Values
HI_SUCCESS 表示正在对讲,HI_ FAILURE 表示停止对讲。
2.3.14 打开播放器
打开播放器
long PlayBack (
IPCAMERA SDK 使用说明书
第96页共109页
);
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.15 云台控制
云台控制
long PtzControl (
long lType,
long lSpeed
);
Parameters
lType
[IN] 操作类型
值含义
0 停止云台
1 云台上仰
2 云台下俯
3 云台左转
4 云台右转
5 焦距变大(倍率变大)
6 焦距变小(倍率变小)
7 灯光开
8 灯光关
9 雨刷开
10 雨刷关
11 自动开
12 自动关
13 焦点前调
14 焦点后调
15 光圈变大
16 光圈变小
lSpeed
[IN] 参数
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.16 云台预置点调用
云台预置点调用
long PTZPreset (
IPCAMERA SDK 使用说明书
第97页共109页
long lType,
long lPreset
);
Parameters
lType
[IN] 预置点类型(0-调整到预置点,1-设置预置点,2-清除预置点)
lPreset
[IN] 参数,范围[0,255]
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.17 云台透传
云台透传
long PtzControl (
LPCTSTR sCode,
long lSize
);
Parameters
sCode
[IN] 控制云台命令数据,命令数据只能是64 个字节组成的串,如ff01100800041d。
lSize
[IN] 控制云台命令数据长度
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.18 鼠标操作云台
启用/禁用控件鼠标操作云台功能
long SetUsePtzCtrl (
long lEnable
);
Parameters
lEnable
[IN] 启用/禁用控件鼠标操作云台功能,0 禁用,1 启用
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
IPCAMERA SDK 使用说明书
第98页共109页
2.3.19 打开关闭移动侦测区域设置
打开关闭移动侦测区域设置
long OpenMDSetPage (
long lFlag
);
Parameters
lFlag
[IN] 0 表示为正常播放状态,1 表示移动侦测编辑状态
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.20 显示隐藏编辑区域
显示隐藏编辑区域
long EnablePic (
long s32MDNum,
long s32EnableValue,
long s32Width,
long s32Height,
long s32X,
long s32Y
);
Parameters
s32MDNum
[IN] MD 区域(1~4)
s32EnableValue
[IN] 显示隐藏标志(1-显示,2-隐藏)
s32Width
[IN] MD 宽
s32Height
[IN] MD 高
s32X
[IN] MD x 坐标
s32Y
[IN] MD y 坐标
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
Remark
该函数只有在打开移动侦测区域设置后设置才能生效。
IPCAMERA SDK 使用说明书
第99页共109页
2.3.21 获取编辑区域属性
获取编辑区域属性
long GetPic (
long s32MDNum,
long s32Flag,
);
Parameters
s32MDNum
[IN] MD 区域(1~4)
s32Flag
[IN] 获取坐标标志(0-width,1-height,2-x,3-y)
Return Values
返回相应的坐标值
2.3.22 保存视频流属性
保存视频流属性到配置文件中
long SetStreamNum (
long lStreamNum
);
Parameters
lStreamNum
[IN] 视频流属性
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.23 获取视频流属性
从配置文件中获取视频流属性
long GetStreamNum (
);
Return Values
11 表示主码流,12 表示次码流。
2.3.24 请求视频流
请求视频流,播放的时候摄像机不发送视频数据(设置后重连生效)
long PauseVideo (
long lVideoTag
);
IPCAMERA SDK 使用说明书
第100页共109页
Parameters
lVideoTag
[IN] 标志,0-请求视频,1-不请求视频
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.25 请求音频流
请求视频流,播放的时候摄像机不发送音频数据(设置后重连生效)
long PauseAudio (
long lAudioTag
);
Parameters
lAudioTag
[IN] 标志,0-请求音频,1-不请求音频
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
2.3.26 获取显示是否为正常比例
获取显示比例,0 表示拉伸模式,1 表示自动调节比例
long GetAutoAdjust (
);
Return Values
0 表示拉伸模式,1 表示自动调节比例
2.3.27 设置自动调节模式
设置画面显示比例
long SetAutoAdjust (
long lType
);
Parameters
lType
[IN] 比例模式,0-拉伸,1-自动调节
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
IPCAMERA SDK 使用说明书
第101页共109页
第三部分搜索SDK 说明
Version:1.0.0.2
3.1、编程导引
启动搜索
HI_VSCP_DEVSCLI_Search()
搜索回调函数得到数据
PTR_VSCP_DEVS_Search_RPNProcFN
设置网络摄像机参数
HI_VSCP_DEVSCLI_Cmd()
库去初始化
HI_VSCP_DEVSCLI_Deinit()
注册搜索结果回调函数
HI_VSCP_DEVSCLI_RegistSearchProc()
注册本地PC 的IP 地址
HI_VSCP_DEVSCLI_Register_IP()
库初始化
HI_VSCP_DEVSCLI_INIT()
3.2、数据结构
设备流信息:
typedef struct {
HI_CHAR aszIP[HI_VSCP_IP_STRSIZE + 1]; /*IP 地址*/
HI_CHAR aszMASK[HI_VSCP_IP_STRSIZE + 1]; /*子网掩码*/
HI_CHAR aszMAC[HI_VSCP_MAC_STRSIZE + 1]; /*MAC 地址*/
HI_CHAR aszGTW[HI_VSCP_IP_STRSIZE + 1]; /*网关地址*/
HI_S32 s32Dhcp; /* DHCP, 1 为开启,0 为关闭*/
HI_S32 s32DnsFlag; /* DNS 设置标志,1 为自动,0 为手动*/
HI_CHAR aszFdns[HI_VSCP_IP_STRSIZE + 1]; /*首选DNS */
HI_CHAR aszSdns[HI_VSCP_IP_STRSIZE + 1]; /* 备用DNS */
} HI_S_VSCP_NETINFO;
typedef struct {
HI_CHAR aszDevID[HI_VSCP_DEVID_STRSIZE + 1]; //设备ID,随机生成的32 个字符
IPCAMERA SDK 使用说明书
第102页共109页
HI_CHAR aszDevMDL[HI_VSCP_DEVNAME_STRSIZE + 1]; //设备型号
HI_CHAR aszSwVersion[HI_VSCP_SWVER_STRSIZE + 1]; //软件版本
HI_CHAR aszDevName[HI_VSCP_DEVNAME_STRSIZE + 1]; //设备名
HI_CHAR aszHttpPort[HI_VSCP_IP_STRSIZE + 1]; //HTTP 监听端口
HI_S_VSCP_NETINFO struNetInfo;
} HI_S_VSCP_DEVINFO;
发送命令目标设备信息:
typedef struct{
HI_CHAR* pszDevID; //设备标识,设备唯一标识。该参数可通过搜索获得
HI_CHAR* pszUserName; //用户名
HI_CHAR* pszPasswd; //密码
} HI_S_VSCP_DEVSCLI_DevInfo;
3.3、接口说明
3.3.1 初始化设备搜索
初始化
HI_S32 HI_VSCP_DEVSCLI_INIT (
const HI_CHAR* pszListenIP,
HI_U16 u16Port,
HI_U32 u32TimeOut,
HI_VOID** ppvHandle
);
Parameters
pszListenIP
[IN] 用于处理搜索应答的多播IP。固定为"239.255.255.250"
u16Port
[IN] 用于处理搜索应答的多播端口号。固定为"8002"
u32TimeOut
[IN] 搜索超时值。单位:秒
ppvHandle
[IN] 输出搜索对象句柄
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
3.3.2 去初始化设备搜索
去初始化
HI_S32 HI_VSCP_DEVSCLI_Deinit (
HI_VOID* pvHandle
);
Parameters
IPCAMERA SDK 使用说明书
第103页共109页
pvHandle
[IN] 输出搜索对象句柄
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
3.3.3 注册搜索响应处理函数
注册搜索响应处理函数
HI_S32 HI_VSCP_DEVSCLI_Deinit (
HI_VOID* pvHandle,
PTR_VSCP_DEVS_Search_RPNProcFN pfunSearchRProc,
HI_VOID* pvUserData
);
Parameters
pvHandle
[IN] 搜索对象句柄
pfunSearchRProc
[IN] 搜索应答处理回调函数
pvUserData
[IN] 用户数据。该参数将通过搜索应答处理回调函数送出
Callback Function
typedef HI_S32 (*PTR_VSCP_DEVS_Search_RPNProcFN) (
const HI_VOID* pvHandle,
HI_CHAR* pszRNPCode,
HI_S_VSCP_DEVINFO* pstruDevInfo,
HI_VOID* pvUserData
}
Callback Function Parameters
pvHandle
未用
pszRNPCode
返回值
pstruDevInfo
设备信息
pvUserData
用户数据
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
Remarks
IPCAMERA SDK 使用说明书
第104页共109页
由于参数pstruDevInfo 指向的通道及码流属性由SDK 内部分配空间,上层应用程序
需在是使用完该参数后,调用free 函数释放此空间。具体实现参考SDK 提供的DEMO 源
码。
3.3.4 注册命令响应处理函数
注册命令响应处理函数
HI_S32 HI_VSCP_DEVSCLI_RegistCmdProc (
HI_VOID* pvHandle,
PTR_VSCP_DEVS_Cmd_RPNProcFN pfunCmdRProc,
HI_VOID* pvUserData
);
Parameters
pvHandle
[IN] 搜索对象句柄
pfunCmdRProc
[IN] 命令响应处理函数
pvUserData
[IN] 用户数据。该参数将通过命令响应处理回调函数送出
Callback Function
typedef HI_S32 (*PTR_VSCP_DEVS_Cmd_RPNProcFN) (
const HI_VOID* pvHandle,
HI_CHAR* pszRNPCode,
HI_S_VSCP_DEVSCLI_Cmd_ResponsInfo* pstruResponseInfo,
HI_VOID* pvUserData
}
Callback Function Parameters
pvHandle
未用
pszRNPCode
返回值。当包含200 时设置成功否则失败
pstruResponseInfo
未用
pvUserData
用户数据
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
3.3.5 注册接收搜索应答的本地IP
注册接收搜索应答的本地IP
IPCAMERA SDK 使用说明书
第105页共109页
HI_S32 HI_VSCP_DEVSCLI_Register_IP (
HI_CHAR aaszIP[][HI_VSCP_IP_STRSIZE+1],
HI_U32 u32Num
);
Parameters
aaszIP
[OUT] 本地IP 地址列表
u32Num
[OUT] 本地IP 地址数量
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
3.3.6 发送搜索命令
发送搜索命令
HI_S32 HI_VSCP_DEVSCLI_Search (
HI_VOID* pvHandle
);
Parameters
pvHandle
[IN] 搜索对象句柄
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
3.3.7 发送设置命令
发送设置命令
HI_S32 HI_VSCP_DEVSCLI_Cmd (
HI_VOID* pvHandle,
const HI_S_VSCP_DEVSCLI_DevInfo *pstruDEV,
HI_S32 s32Cmd,
const HI_VOID* pData
);
Parameters
pvHandle
[IN] 搜索对象句柄
PstruDEV
[IN] 设备信息
s32Cmd
[IN] 设置类型
IPCAMERA SDK 使用说明书
第106页共109页
#define HI_VSCP_CMD_NET 0x01 //网络基本参数设置
#define HI_VSCP_CMD_PORT 0x02 //端口号
pData
[IN] 设置参数
1、HI_VSCP_CMD_NET:HI_S_VSCP_NETINFO 结构体
typedef struct {
HI_CHAR aszIP[HI_VSCP_IP_STRSIZE + 1]; //IP 地址
HI_CHAR aszMASK[HI_VSCP_IP_STRSIZE + 1]; //子网掩码
HI_CHAR aszMAC[HI_VSCP_MAC_STRSIZE + 1]; //MAC 地址
HI_CHAR aszGTW[HI_VSCP_IP_STRSIZE + 1]; //网关地址
HI_S32 s32Dhcp; //DHCP, 1 为开启,0 为关闭
HI_S32 s32DnsFlag; //DNS 设置标志,1 为自动,0 为手动
HI_CHAR aszFdns[HI_VSCP_IP_STRSIZE + 1]; //首选DNS
HI_CHAR aszSdns[HI_VSCP_IP_STRSIZE + 1]; //备用DNS
} HI_S_VSCP_NETINFO;
2、HI_VSCP_CMD_PORT:char str[16]
Return Values
HI_SUCCESS 表示成功,HI_ FAILURE 表示失败。
IPCAMERA SDK 使用说明书
第107页共109页
附录
Ⅰ、文件夹列表
Lib 存放库文件,里面含有libNetLib.so, NetLib.lib, NetLib.dll 三个文件;
Include 存放头文件;
VC_demo 存放mfc Demo;
Bin 执行文件存放路径。
Ⅱ、厂家代码和设备类型定义
1. 厂商代码
用于识别生产厂家。
可以通过专用工具修改。用户只能读,不能修改。
ACSII 码,32 个字节长度。
2. 设备类型
用于识别设备类型,不同的设备功能不同。
可以通过专用工具修改。用户只能读,不能修改。
ACSII 码,32 个字节长度。
每个字段2 个字节。第一个字节代表字段总类型,第二个字段代表字段子类型。
字段1 字段2 字段3 字段4 字段5 字段6 字段7 保留字段
芯片制式镜头云台类型网络类型平台类型语言类型
‘C’ ‘F’ ‘S’ ‘Z’ ‘N’ ‘P’ ‘L’
1). 芯片字段’C’
芯片的类型
‘0’ Hi3510
‘1’ Hi3512
‘5’ GM
‘6’ Hi3518
注:C5、C6 芯片有3 码流,每个码流不能修改分辨率
2). 制式字段’F’
视频输入制式,当前值如下:
‘0’ PAL 和NTS 都支持
‘1’ PAL(704x576, 352x288, 176x144)最大25 帧
‘2’ NTSC(704x480, 352x240, 176x120)最大30 帧
3). 镜头字段‘S’
感光芯片的类型,如下:
‘0’ OV7725 红外控制亮度,对比度,饱和度,色度,室内,室外,红外开关,
上下反转,左右镜像。主码流:VGA, QVGA, QQVGA 次
IPCAMERA SDK 使用说明书
第108页共109页
码流:QVGA, QQVGA
‘1’ CCDOSP 亮度,对比度,饱和度,色度。
主码流:D1,CIF,QCIF 次码流:CIF,QCIF
‘2’ CCD 亮度,对比度,饱和度,色度。
主码流:D1,CIF,QCIF 次码流:CIF,QCIF
‘3’ MT9D131 亮度,对比度(1-7),饱和度,上下反转,左右镜像。
主码流:720P(最大30 帧) 次码流:QVGA
‘4’ HDCCD 主码流:720P(最大30 帧) 次码流:QVGA
‘5’ 630D 亮度(0-6),对比度(0-8),饱和度(0-6)。
主码流:720P(最大30 帧) 次码流:Q720P
‘6’ 630C 亮度(0-4),对比度(0-4),饱和度(0-2)。
主码流:720P(最大30 帧) 次码流:Q720P
‘7’ CMOS 720P 亮度,对比度(1-7),饱和度,上下反转,左右镜像。
C0 C1:
主码流:720P(最大30 帧),Q720P 次码流:Q720P,
QQ720P
C5:
主码流:720P;第二码流:Q720P;第三码流:QQ720P
‘8’ 633 亮度(0-6),对比度(0-8),饱和度(0-6)。
C0 C1:
主码流:720P(最大30 帧),Q720P 次码流:Q720P,
QQ720P
C5:
主码流:720P;第二码流:Q720P;第三码流:QQ720P
‘9’ CMOS 200M 亮度,对比度(1-7),饱和度,上下反转,左右镜像。
C0 C1:
主码流:720P(最大30 帧),Q720P 次码流:Q720P,
QQ720P
UXGA(最大15 帧),VGA 次码流,QVGA
C5:
主码流:720P;第二码流:Q720P;第三码流:QQ720P
‘a’ CCD 960 无图像设置
主码流:928x576, 464x288, 224x144
次码流:464x288, 224x144
‘c’ 亮度(0-100),对比度(0-100),饱和度(0-100),上下反转,
左右镜像。
720P 模式:
主码流:720P;第二码流:Q720P;第三码流:QQ720P
960P 模式:
主码流:960P;第二码流:VGA;第三码流:QVGA
‘e’ 亮度(0-100),对比度(0-100),饱和度(0-255),上下反转,
左右镜像。
主码流:720P;第二码流:Q720P;第三码流:QQ720P
‘f’ 亮度(0-100),对比度(0-100),饱和度(0-255),上下反转,
IPCAMERA SDK 使用说明书
第109页共109页
左右镜像。
720P 模式:
主码流:720P;第二码流:Q720P;第三码流:QQ720P
960P 模式:
主码流:960P;第二码流:VGA;第三码流:QVGA
4). 云台字段‘Z’
云台的类型,如下:
‘0’ 小球上,下,左,右,上下巡航,左右巡航,回到中心位置,
预置调用(最多8 个)。没有串口设置。
‘1’ 白色球上,下,左,右,预置调用(最多8 个)。固定串口设置。
‘2’ 变焦球上,下,左,右,变焦,预置调用(最多8 个)。固定串
口设置。
‘3’ 标准上,下,左,右,雨刷,灯光,预置调用设置。可以设
置串口。
‘4’ 变倍小球上,下,左,右,上下巡航,左右巡航,回到中心位置,
拉近,拉远。
5). 网络字段‘N’
网络类型,如下:
‘0’ 支持有线
‘1’ 支持WIFI
‘2’ 支持EVDO
‘3’ 支持TD
‘4’ 支持WCDMA
6). 平台字段‘P’
平台类型,如下:
‘0’ 无平台
7). 语言字段‘L’
语言类型,如下:
‘0’ 中文
‘1’ 英文
8). 保留字段用于以后扩展
同类文章排行
- 32700磷酸铁锂60AH产品规格书参数
- 32650/32700磷酸铁锂电池和18650三元锂电池哪个好?
- 18650锂电池和32650磷酸铁锂电池有什么区别,优点
- 32650磷酸铁锂电池与18650三元锂电池到底那个好?
- DS-2CD7A427FWD-XZ(S)(/JM)人脸识别
- 海康威视监控球机有4G一体的么?
- 太阳能监控阴天或者雨天供电不足需要加大电池
- 海康威视太阳能监控消耗一天要多少4G流量?
- 海康威视低功耗4G球机太阳能监控DS-NACN54220I-DG
- 海康太阳能iDS-NJCN58225IH-AW/GLT(D)水尺读取摄像机
最新资讯文章
- 太阳能储能供电长时间不使用注意事项
- 太阳能储能供电系统如何增加BMS管理
- 什么是储能电池的BMS管理系统
- 太阳能供电系统家用和工程项目有什么区别
- 太阳能储能供电系统家用有什么要求
- 家用储能锂电池供电系统出口有什么要求和资质
- 机架式储能锂电池和堆叠式储能锂电池有什么区
- 家用储能锂电池用磷酸铁锂电池怎么样
- 太阳能供电一体化设备
- 大单体和32700磷酸铁锂电池有什么区别
- 32650和32700磷酸铁锂电池有什么区别
- 磷酸铁锂电池好还是三元电池好
- 未来太阳能供电发展是什么样的
- 太阳能通信基站储能供电系统的优势。
- 一般家用供电需要多大的太阳能储能系统
- 冬天对太阳能供电系统有哪些影响
- 太阳能监控供电系统中的电池能用多久
- 家用太阳能储能供电系统设计方案
- 太阳能供电系统在智慧交通应用分析,及市场前
- 智慧太阳能监控供电系统阴天能正常工作么