鹤梦信息帮助中心
硬件接入SDK相关问题

1.简介

1.1 编制说明

本文档使用对象为设备厂商,主要说明厂商通过设备侧SDK接入牵心平台。


1.2 摄像头要求

摄像头厂商集成牵心SDK相关要求如下:

Linux/Unix环境,需要支持标准GCC指令,需要支持标准POSIX库,需要有集成openssl加密库等基础环境;

1、 需要有大于16M,最好能32M的内存空间可供SDK使用;

2、 需要大约2M的FLASH空间用来存放SDK相关的库文件;

3、 需要大约1M的空间用来存放SDK中记录的配置项相关文件。


1.3 名词解释


1.4 概述

为了保证设备能够被观看、被控制,关键数据可以被存储。SDK提供以下基本功能:

1. 媒体数据传输

高效、实时的传送音视频数据,保证视频的流畅性和及时性。

2. 设备的各种配置记录

记录用户对设备的各种设置,主要包括设备,镜头,传感器等

3. 录像的存储和回放

录制音视频数据,支持用户对某个时间或视频的点播回放

4. 云视频上传

根据业务需求, 将视音频数据上传到云端,实现更加可靠的存储

5. 控制命令的分发等

将用户的各种控制指令分发到各个模块

对外提供的结构主要在头文件如下:

文件名称

描述

zj_cameraiot.h

摄像头设备相关的IoT事件能力和硬件能力接口,如:图形侦测报警、声音报警、设备指示灯控制、蜂鸣器控制、本地录制等

zj_camera.h

与音视频相关接口

zj_channel.h

用户自定义消息的接受和发送

zj_log.h

日志相关接口

zj_network.h

网络相关的接口

zj_ota.h

固件升级相关接口

zj_power.h

电源及节能设备相关的接口

zj_system.h

与软件相关的接口,如初始化、注销等

zj_type.h

使用的数据结构定义

zj_err.h

与服务器之间通信的错误码定义

zj_iothub.h

管理IOT HUB扩展能力,包括HUB的通信、协议转换等

zj_upload.h

获取默认时间,如果厂商没有实现NTP服务,可以使用此文件提供的接口。


2 标识要求

2.1 CTEI

CTEI码,设备唯一码,摄像机厂家获得该信息后写入摄像机。

3 厂商接入流程

3.1 接入简介

设备方提供交叉编译工具,并按照平台方要求实现设备功能接口,平台方编译提供应用程序功能库供设备方调用整合到设备程序中。

各模块关系图如下所示:

1、 平台方用设备方提供的交叉编译工具生成应用程序库提供给设备方。

2、 设备方按平台方要求实现公共接口,用于获取设备音视频及控制设备相关参数等功能。

3、 设备方主程序整合平台方提供的应用程序库,并调用相关接口,启动平台方的应用程序服务。

4、 第三方库ssl需要厂商编译链接(如需要平台方编译,需要提供移植流程示例及源码)

3.2 SDK目录结构

├── include                         //头文件

├── zj_camera.h

├── zj_cameraiot.h

├── zj_channel.h

├── zj_err.h

├── zj_log.h

├── zj_network.h

├── zj_ota.h

├── zj_power.h

├── zj_system.h

└── zj_type.h

├── libcommon.so                                       //核心动态库

├── libcos.so                                                  //系统库动态库

├── libthirdparty.so                                     //第三方库动态库

└── static

├── libcommon.a                                //核心静态库

├── libcos.a                                           //系统静态库

└── libthirdparty.a                              //第三方静态库

4 接口说明

4.1 接口使用流程

SDK启动流程:

1、 调用ZJ_Init() 初始化SDK

2、 设置日志模式和设置日志等级

3、 配置音视频参数、能力集回调接口注册

4、 调用ZJ_Start()启动SDK并分配资源

5、 调用ZJ_Stop()停止SDK运行

6、 调用ZJ_Destory()释放SDK资源

4.2 SDK系统相关接口

4.2.1 设备初始化


4.2.2 启动SDK


4.2.3 停止SDK


4.2.4 释放sdk的内存资源


4.2.5 设置CTEI


4.2.6 设置固件版本号

4.2.7 设置自定义平台


4.2.8 设置企业的信息

4.2.9 设置设备类型

4.2.10设置设备的4G卡号

4.2.11设置4G卡的能力

4.2.12 设置4GIMEI

4.2.13 设备状态回调函数设置

4.2.13.1 回调接口定义


4.2.13.2 回调函数定义

4.2.14 设备重启回调函数设置

4.2.14.1 回调接口定义

4.2.14.2 回调函数定义

4.2.15 系统时间获取与设置回调函数设置

4.2.15.1 回调接口定义


4.2.15.2 回调函数定义

设置时间回调接口


Ø 获取时间回调接口


4.2.16 设置默认的时间和时区,当固件层没有ntp的时候使用

4.2.16.1 回调接口定义


4.2.16.2 回调函数定义

默认时间和时区回调函数

4.2.17设置系统内存空闲值等级

4.2.18 设置摄像机名称回调

4.2.18.1 回调接口定义

4.2.18.2 回调函数定义

4.2.19 设置设备恢复出厂设置回调函数

4.2.19.1 回调接口定义

4.2.19.2 回调函数定义


4.2.20 设置设备加密能力


4.2.21 获取设备DID

4.2.22 设备DID控制

4.2.23 获取设备名称


4.2.24 设置设备名称


4.2.25 获取当前生效的套餐


4.2.26 查询设备入组状态


4.2.27 获取设备的用户信息


4.2.28 低功耗设备获取保活服务器地址


4.2.29 设置设备的区域和时区信息


4.3 音视频相关接口

4.3.1 摄像头能力集设置接口

以下为摄像头能力集设置函数, 不设置默认为不支持。

4.3.1.1 设置码流数量


4.3.1.2 设置语音对讲能力


4.3.1.3 设置PTZ能力


4.3.1.4 设置PTZ云台速度设置标志


4.3.1.5 OSD设置能力支持


4.3.1.6 预置点设置能力支持


4.3.1.7 设置分辨率能力集


4.3.1.8 设置视频编码能力


4.3.1.9 设置麦克风是否支持


4.3.1.10 设置IRLed红外灯控制模式


4.3.1.11 设置SD卡能力支持


4.3.1.12 设置图像翻转能力支持


4.3.1.13 设置外挂云台PTZ支持


4.3.1.14 设置镜头最大数量


4.3.1.15 设置镜头信息


4.3.1.16 设置摄像头当前IR工作模式


4.3.1.17 设置RingTone能力


4.3.2 摄像头参数和业务接口

4.3.2.1 设置画面翻转回调接口

4.3.2.1.1 回调接口定义

4.3.2.1.2 回调函数定义

4.3.2.2 设置红外灯开关控制回调接口

4.3.2.2.1 回调接口定义

4.3.2.2.2 回调函数定义

4.3.2.3 设置摄像头编码开关回调接口

4.3.2.3.1 回调接口定义

4.3.2.3.2 回调函数定义

4.3.2.4 设置摄像头PTZ回调接口

4.3.2.4.1 回调接口定义

4.3.2.4.2 回调函数定义

ZJ_PFUN_CAMERA_ONPTZ


ZJ_PFUN_CAMERA_PTZ_GETPOINT


ZJ_PFUN_CAMERA_PTZ_GOTOPOINT


ZJ_PFUN_CAMERA_PTZ_AUTOCHECK


ZJ_PFUN_CAMERA_CRUISE_START


ZJ_PFUN_CAMERA_PTZ_STOP


4.3.2.5 设置摄像头定速巡航回调接口

4.3.2.5.1 回调接口定义

4.3.2.5.2 回调函数定义

ZJ_PFUN_CAMERA_CRUISE_START


ZJ_PFUN_CAMERA_CRUISE_STOP


4.3.2.6 设置录像状态回调接口

4.3.2.6.1 回调接口定义

4.3.2.6.2 回调函数定义

ZJ_PFUN_CAMERA_RECORD_STATUS


4.3.2.7 设置红外灯当前模式接口


4.3.2.8 设置摄像机当前状态


4.3.2.9 开始摄像机录像


4.3.2.10 停止当前录像


4.3.2.11 设置摄像机水印设置回调接口

4.3.2.11.1 回调接口定义

4.3.2.11.2 回调函数定义

ZJ_PFUN_CAMERA_OSDSETTING


4.3.2.12 设置媒体存储路径接口


4.3.2.13 设置声音文件存储路径接口


4.3.2.14 设置SD卡操作回调接口

4.3.2.14.1 回调接口定义

4.3.2.14.2 回调函数定义

SD卡格式化回调


获取SD卡容量回调


SD卡自检测回调


4.3.2.15 切换前置摄像头回调接口

4.3.2.15.1 回调接口定义

4.3.2.15.2 回调函数定义

ZJ_PFUN_SWITCH_LEN


4.3.2.16 摄像机宽动态开关回调接口

4.3.2.16.1 回调接口定义

4.3.2.16.2 回调函数定义

ZJ_PFUN_SET_WIDE_DYNAMIC_CAM


4.3.2.17 自定义声音报警回调接口

4.3.2.17.1 回调接口定义

4.3.2.17.2 回调函数定义

ZJ_PFUN_DELSOUNDFILE


4.3.2.17.3 回调函数定义

ZJ_PFUN_GETSOUNDFILES


4.3.2.18 上报门铃状态


4.3.2.19 中继设备回调接口

4.3.2.19.1 回调接口定义

4.3.2.19.2 回调函数定义

Ø ZJ_PFUN_SETRELAYDEVAWAKE


4.3.2.20 获取当前所有实时视频会话的TTL 时间


4.3.2.21 设置视频逐行扫描频率接口

4.3.2.21.1 回调接口定义

4.3.2.21.2 回调函数定义

Ø ZJ_PFUN_CAMERA_SCANFREQUERY


4.3.3 双向语音相关接口

4.3.3.1 语音对讲接收回调接口

4.3.3.1.1 回调接口定义

4.3.3.1.2 回调函数定义

摄像头逆向流传入回调接口


4.3.3.2 通过句柄获取音频参数


4.3.3.3 通过句柄获取音频数据


4.3.4 音频采集编码相关接口

4.3.4.1 设置音频编码参数


4.3.4.2 写音频数据


4.3.4.3 重新设置音频编码参数


4.3.4.4 设置音频编码开关回调接口

4.3.4.4.1 回调接口定义

4.3.4.4.2 回调函数定义

音频编码开关回调


4.3.4.5 设置音频采集音量调节

4.3.4.5.1 回调接口定义

4.3.4.5.2 回调函数定义

设置音频采集音量调节


4.3.4.6 设置摄像机声音音量


4.3.4.7 设置采集声音音量开关


4.3.4.8 获取采集声音状态


4.3.5 视频采集编码相关接口

4.3.5.1 设置码流编码参数


4.3.5.2 设置码流广角镜头圆心半径信息


4.3.5.3 设置码流广角镜头扭曲度信息


4.3.5.4 设置码流视频编码参数


4.3.5.5 写入码流接口(以Frame帧写入)


4.3.5.6 写入码流接口(以NAL格式写入)


4.3.5.7 重置编码参数


4.3.5.8 设置视频编码开关回调接口

4.3.5.8.1 回调接口定义

4.3.5.8.2 回调函数定义

视频编码开关回调


4.3.5.9 设置视频编码参数调接口

4.3.5.9.1 回调接口定义

4.3.5.9.2 回调函数定义

视频编码开关回调


4.3.5.10 强制编码I帧回调接口

4.3.5.10.1 回调接口定义

4.3.5.10.2 回调函数定义

4.3.5.11 设置获取图片回调接口

4.3.5.11.1 回调接口定义

4.3.5.11.2 回调函数定义




4.4 设备IoT事件能力相关接口

4.4.1 添加IoT设备

4.4.1.1.1 回调接口定义

4.4.1.1.2 回调函数定义

Ø ZJ_PFUN_AIIOT_START



Ø ZJ_PFUN_AIIOT_STOP



Ø ZJ_PFUN_AIIOT_GETINPUT



Ø ZJ_PFUN_AIIOT_OUTPUT



Ø ZJ_PFUN_AIIOT_SETPROP



Ø ZJ_PFUN_AIIOT_CHECKEVENT



4.4.2 设置IoT设备的默认属性接口



4.4.3 IOT设备输入信号接口



4.4.4 IOT设备事件输入接口



4.4.5 设置默认录像属性接口



4.4.6 设置本地抓图默认属性接口


4.4.7 设置当前iot设备的工作状态



4.4.8 IOT设备人脸列表输入接口



4.4.9 设置人脸回调接口



4.4.10 设置默认的IOT策略



4.4.11 设置人脸自动录入功能



4.4.12 删除标签信息



4.4.13 删除标签信息



4.4.14 JSON参数参考

1、 固件设置iot Prop回调接口:

typedef int (*ZJ_PFUN_AIIOT_SETPROP)(unsigned int uiAIIoTType, unsigned long long uiAIIoTID, unsigned char* pstProp);

备注:厂商需要注册、实现此回调函数,sdk通过此接口设置iot属性到固件,其中,设置固件属性入参:pstProp以一个JSON字符串传递

例如:

{"Motion":{"Sensitive":"20","Status":"1","Trace":"0","Interval":"60"},

"Human":{"Sensitive":"20","Status":"1","Trace":"0","Interval":"60"}

}

2、 向固件输入控制信号

typedef int (*ZJ_PFUN_AIIOT_OUTPUT)(unsigned int uiAIIoTType, unsigned long long uiAIIoTID, unsigned char* pSignalValue,ST_ZJ_TRIGGER_INFO* pstTriggerInf);

备注厂商需要注册、实现此回调函数,sdk通过此接口,向固件输入控制信号,例如:蜂鸣器、白光灯等

控制型号的属性值通过参数pSignalValue来传递, pstTriggerInf参数可为空。

例如:

白光灯控制:{"CtrlType":"1","Duration":"30"}

蜂鸣器控制:{"CtrlType":"1","AlarmType":"1000"}





4.5 发送与接收自定义消息接口

4.5.1 发送自定义消息接口


4.5.2 接收自定义消息回调接口

4.5.2.1 回调接口定义



4.5.2.2 回调函数定义



4.6 网络相关接口

4.6.1 设置设备网络状态信息



4.6.2 设置获取WIFI列表和设置WIFI的回调函数

4.6.2.1 回调接口定义



4.6.2.2 回调函数定义

Ø 设置WIFI回调接口



Ø 获取WIFI列表回调接口



Ø 获取当前网络详情



4.6.3 设置设备网络错误状态



4.6.4 设置WiFi配网能力



4.6.5 设置二维码配网信息


4.6.6 设置声波配网信息


4.6.7 启用无感配网


4.6.8 无感配网回调接口




4.7 固件升级相关接口

OTA升级流程

1、设备注册ZJ_SetOtaCBFuncs相关函数。

2SDK收到升级请求,调用pFunNewVersionCb回调函数通知设备有新版固件需要升级,设备需要准备充足的资源。

3、设备准备完成调用ZJ_StartUpdate接口通知SDK开始升级。

4SDK调用pFunVersonDataDownCb回调接口将升级包数据传给设备,设备应做好缓存。

5、升级包数据下载完成,SDK调用pFunCoverImageNotice回调函数,通知设备升级包是否校验通过,校验通过设备进行覆盖升级,否则删除缓存数据重启设备。

6、设备通过ZJ_SetBurnningProgress接口上报烧录进度。

7、烧录成功重启设备。

4.7.1 设置设备升级能力



4.7.2 设置设备升级状态回调函数

4.7.2.1 回调接口定义




4.7.2.2 回调函数定义

Ø 设备版本状态回调接口



Ø 设备版本下载回调接口



Ø 设备停止升级接口



4.7.3 设备开始升级接口



4.7.4 设备开始升级状态



4.7.5 设置OTA升级能力



4.8 设备电源相关接口

4.8.1 设置设备电源类型



4.8.2 设置设备唤醒能力




4.8.3 设置设备当前是否充电(仅对电池类设备)



4.8.4 设置进入休眠回调接口

4.8.4.1 回调接口定义



4.8.4.2 回调函数定义

Ø 设备进入休眠回调接口



4.8.5 设置设备当前电池余量



4.9 日志相关接口

4.9.1 设置调试模式


4.9.2 设置日志等级



4.9.3 日志输出



4.9.4 日志打开标志


4.9.5 通知设备开始收集日志

4.9.5.1 回调接口定义


4.9.5.2 回调函数定义

Ø 日志收集回调接口


4.9.6 日志搜集状态设置接口




4.10 AI相关接口

4.10.1 设置是否支持AI能力



4.10.2 设置AI底库图片数量最大值



4.10.3 设置当前AI底库图片数量



4.11 在线升级新SDK时使用,三方迁移

4.11.1 第三方厂商打开录像文件回调接口

4.11.1.1 回调接口定义



4.11.1.2 回调函数定义

Ø 第三方厂商打开录像文件回调



4.11.2 第三方厂商关闭录像文件回调接口

4.11.2.1 回调接口定义



4.11.2.2 回调函数定义

Ø 第三方厂商关闭录像文件回调



4.11.3 读取第三方厂商一帧录像数据回调接口

4.11.3.1 回调接口定义



4.11.3.2 回调函数定义

Ø 读取第三方厂商一帧录像数据回调



4.11.4 跳转到第三方厂商指定录像时间回调接口

4.11.4.1 回调接口定义



4.11.4.2 回调函数定义

Ø 跳转第三方厂商录像时间回调



4.11.5 获取第三方厂商录像音视频参数回调接口

4.11.5.1 回调接口定义



4.11.5.2 回调函数定义

Ø 获取第三方录像音视频参数



4.11.6 第三方厂商添加录像日期



4.11.7 第三方厂商添加录像文件



4.11.8 第三方厂商添加事件日期



4.11.9 第三方厂商添加事件文件




4.12 获取默认时间

如果厂商没有实现NTP服务,可以使用以下SDK提供的接口。

4.12.1 获取ZJ_SetBreakAlarmAbility默认时间回调接口定义



4.12.2 获取默认时间回调函数定义



4.12.3 向服务器发起获取默认时间请求



4.12.4 获取默认时间超时,取消相应操作






5 数据结构

5.1 枚举定义

5.1.1 系统平台定义

/**

  * 系统平台定义。

  */

typedef enum enum_zj_os_type

{

    EN_ZJ_OS_TYPE_LINUX     = 1,

    EN_ZJ_OS_TYPE_IOS       = 2,

    EN_ZJ_OS_TYPE_ANDRIOD   = 3,

    EN_ZJ_OS_TYPE_ANDRIODTV = 4,

    EN_ZJ_OS_TYPE_WINDOWS   = 5,

    EN_ZJ_OS_TYPE_RTOS      = 6

}EN_ZJ_OS_TYPE;


5.1.2 设置设备类型

/**

  * 设置设备类型:1.摄像机;2.分体门铃;3.单体门铃;4.NVR

  */

typedef enum enum_ZJ_DEV_TYPE

{

    EN_ZJ_DEV_TYPE_CAMERA                   = 0X01,     //摄像机

    EN_ZJ_DEV_TYPE_DOORBELL_SPLIT           = 0X02,     //分体门铃

    EN_ZJ_DEV_TYPE_DOORBELL_SINGLE          = 0X03,     //单体门铃

EN_ZJ_DEV_TYPE_NVR                      = 0X04      //NVR

EN_ZJ_DEV_TYPE_EDR                      = 0X05              //EDR

EN_ZJ_DEV_TYPE_SOLAR_PANEL              = 0x06      //太阳能设备

}EN_ZJ_DEV_TYPE;

5.1.3 设备初始化状态

/**

  * 设备初始化状态。分别为:初始化、配置加载、网络初始化、注册、登录、绑定、运行。

  */

typedef enum enum_ZJ_DEVICE_STATUS

{

    EN_ZJ_DEVICE_STATUS_INIT           = 0,

    EN_ZJ_DEVICE_STATUS_LOADCONF,      //SDK初始化加载配置成功

    EN_ZJ_DEVICE_STATUS_NETWORK,       //网络连接完成

    EN_ZJ_DEVICE_STATUS_REGIST,         //设备注册

    EN_ZJ_DEVICE_STATUS_LOGIN,         //设备登录服务成功

    EN_ZJ_DEVICE_STATUS_BIND,          //设备绑定(解绑)完成

    EN_ZJ_DEVICE_STATUS_PROCESS       //设备完成上线

}EN_ZJ_DEVICE_STATUS;

5.1.4 设备内存富余级别

/*

 * 设备内存富余级别

 */

typedef enum enum_ZJ_DEVICE_MEM_ABILITY

{


//内存余量可以存储3个以上完整GOP

   EN_ZJ_DEVICE_MEM_ABILITY_RICH      = 0,

//内存余量适中,可以存储1个以上完整GOP

   EN_ZJ_DEVICE_MEM_ABILITY_MID     = 1,

//内存余量不足,只可以存在一个完整帧

   EN_ZJ_DEVICE_MEM_ABILITY_POOR    = 2

}EN_ZJ_DEVICE_MEM_ABILITY;

5.1.5 设备升级状态

/*

 * 设备升级状态。

 */

typedef enum enum_ZJ_DEVICE_UPDATE_STATUS

{

    EN_ZJ_DEVICE_UPDATE_STATUS_NOUPDATE      = 0, //不需要升级

    EN_ZJ_DEVICE_UPDATE_STATUS_NEEDUPDATE    = 1, //有新版本需要升级

EN_ZJ_DEVICE_UPDATE_STATUS_MUSTUPDATE    = 2 //强制升级,系统版本不兼容需要强制升级

}

5.1.6 网络类型

// 网络类型

typedef enum enum_ZJ_NETWORK_TYPE{

    EN_ZJ_NETWORK_TYPE_NONET                = 0x00,     // 无网络

    EN_ZJ_NETWORK_TYPE_WIRED                = 0x01,     // 有线连接

    EN_ZJ_NETWORK_TYPE_WIFI                 = 0x02,     // WIFI连接

    EN_ZJ_NETWORK_TYPE_AP                   = 0x04,     // AP连接

    EN_ZJ_NETWORK_TYPE_SIM                  = 0x08,     // 移动网络

}EN_ZJ_NETWORK_TYPE;

5.1.7 WIFI信息

//定义WIFI列表元素

typedef struct stru_ZJ_WIFI_INFO{

    int     iSigStrength;              //信号强度

    int     iConnectFlag;             //是否当前连接 1.是;0.不是

    char    acWifiSSID[32];           //最长31字节WiFiSSID

}ST_ZJ_WIFI_INFO;


5.1.8 当前网络详情结构

// 定义当前网络详情结构

typedef struct stru_ZJ_NETWORK_INFO{

        int             iNetType;

    int             iSignalType;            // 2: 2G 3: 3G 4: 4G

        int             iSigStrength;

    unsigned char   aucNetmask[64];        //子网掩码

    unsigned char   aucGateway[64];         //默认网关

        unsigned char     aucIPAddr[64];

        unsigned char     aucMacAddr[64];

        unsigned char     aucWIFISSID[32];

}ST_ZJ_NETWORK_INFO;

5.1.9 网络连接错误状态

//网络连接状态

typedef enum enum_ZJ_NETWORK_ERR_STATUS{

    EN_ZJ_NETWORK_ERR_STATUS_PWDERR       = 0x01, //WIFI密码错误

    EN_ZJ_NETWORK_ERR_STATUS_NOSIGNAL    = 0x02  //信号中断

}EN_ZJ_NETWORK_ERR_STATUS;


5.1.10 OTA升级的模式

//支持OTA升级的模式

typedef enum enum_ZJ_OTA_ABILITY{

        // SD卡升级,用户将升级包拷贝到SD卡,然后将SD卡插入设备完成升级

EN_ZJ_OTA_ABILITY_SDCARD              = 0x01,

//本地升级,用户与设备连接在同一个局域网,完成升级;

EN_ZJ_OTA_ABILITY_LOCALUPDATE    = 0x02,

//远程升级,用户与设备不在同一个局域网,完成升级;设备需要更多的空间存放升级包;

    EN_ZJ_OTA_ABILITY_REMOTEUPDATE = 0x04

}EN_ZJ_OTA_ABILITY;


5.1.11 WIFI配置模式

// 支持WIFI配置模式

typedef enum enum_ZJ_SETWIFI_ABILITY{

    EN_ZJ_SETWIFI_ABILITY_AP                           = 0x01, //支持AP配网

    EN_ZJ_SETWIFI_ABILITY_SOUND                          = 0x02,//支持声波配网

    EN_ZJ_SETWIFI_ABILITY_SMARTLINK          = 0x04,//支持SMARTLINK配网

    EN_ZJ_SETWIFI_ABILITY_QRCODE                = 0x08,//支持二维码配网

    EN_ZJ_SETWIFI_ABILITY_WIRED                   = 0x10 //支持有线配网

}EN_ZJ_SETWIFI_ABILITY;


5.1.12 设备休眠唤醒能力

//设备休眠唤醒能力

typedef enum enum_ZJ_AWAKE_ABILITY{

    EN_ZJ_AWAKE_ABILITY_NOTSUPPORT       = 0x00, //不支持休眠

    EN_ZJ_AWAKE_ABILITY_LOCALAWAKE       = 0x01, //支持本地唤醒

    EN_ZJ_AWAKE_ABILITY_REMOTEAWAKE   = 0x02 //支持远程唤醒

}EN_ZJ_AWAKE_ABILITY;


5.1.13 对讲支持能力

//声音对讲支持能力

typedef enum enum_ZJ_VOICEPLAY_ABILITY{

    EN_ZJ_VOICEPLAY_ABILITY_NOSUPPORT        = 0x00, //不支持对讲

    EN_ZJ_VOICEPLAY_ABILITY_SIMPLEX             = 0x01, //单工

    EN_ZJ_VOICEPLAY_ABILITY_DUPLEX             = 0x02 //双工

}EN_ZJ_VOICEPLAY_ABILITY;


5.1.14 摄像机PTZ支持能力

//摄像机PTZ支持能力

typedef enum enum_ZJ_CAMERA_PTZ_ABILITY{

    EN_ZJ_CAMERA_PTZ_ABILITY_P          = 0x01,  //支持P操作

    EN_ZJ_CAMERA_PTZ_ABILITY_T          = 0x02,  //支持T操作

    EN_ZJ_CAMERA_PTZ_ABILITY_Z          = 0x04   //支持Z操作

}EN_ZJ_CAMERA_PTZ_ABILITY;


5.1.15 摄像机PTZ转动能力

//摄像机PTZ转动

typedef enum enum_ZJ_CAMERA_PTZ_CONTROL{

    EN_ZJ_CAMERA_PTZ_CONTROL_UP         = 1,

    EN_ZJ_CAMERA_PTZ_CONTROL_DOWN       = 2,

    EN_ZJ_CAMERA_PTZ_CONTROL_LEFT       = 3,

    EN_ZJ_CAMERA_PTZ_CONTROL_RIGHT      = 4,

}EN_ZJ_CAMERA_PTZ_CONTROL;

5.1.16 巡航预置点定义

//巡航预置点定义

typedef struct stru_ZJ_CAMERA_CRUISE_PRESET{

    int         Idx;               //预置点序号

    int         iX;                //预置点位移X

    int         iY;                 //预置点位移Y

    int         iDwellTime;        //停留时间

    int         iSpeed;            //云台转速

}ST_ZJ_CAMERA_CRUISE_PRESET;


5.1.17 摄像机分辨率支持能力集

//摄像机分辨率支持能力集

typedef enum enum_ZJ_CAMERA_RESOLUTION_ABILITY{

  EN_ZJ_CARERA_RESOLUTION_ABILITY_360P = 0x0001, //支持640*360分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_480P = 0x0002, //支持640*480分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_720P = 0x0004, //支持1280*720分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_960P = 0x0008, //支持1280*960分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_1080P = 0x0010, //支持1920*1080分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_1200P = 0x0020, //支持1600*1200分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_300W = 0x0040, //支持2048*1536分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_400W = 0x0080, //支持2500*1600分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_500W = 0x0100, //支持2560*1920分辨率

  EN_ZJ_CARERA_RESOLUTION_ABILITY_4K = 0x0200, //支持3840*2160分辨率 800W像素

  EN_ZJ_CARERA_RESOLUTION_ABILITY_8K = 0x0400, //支持7680*4320分辨率 3200W像素

}EN_ZJ_CARERA_RESOLUTION_ABILITY;


5.1.18 摄像机编码帧率定义

//摄像机编码帧率定义

typedef enum enum_ZJ_CAMERA_BITRATE_TYPE{

    EN_ZJ_CAMERA_BITRATE_TYPE_96K       = 1,

    EN_ZJ_CAMERA_BITRATE_TYPE_128K      = 2,

    EN_ZJ_CAMERA_BITRATE_TYPE_196K      = 3,

    EN_ZJ_CAMERA_BITRATE_TYPE_256K      = 4,

    EN_ZJ_CAMERA_BITRATE_TYPE_384K      = 5,

    EN_ZJ_CAMERA_BITRATE_TYPE_512K      = 6,

    EN_ZJ_CAMERA_BITRATE_TYPE_768K      = 7,

    EN_ZJ_CAMERA_BITRATE_TYPE_1024K     = 8,

    EN_ZJ_CAMERA_BITRATE_TYPE_1536K     = 9,

    EN_ZJ_CAMERA_BITRATE_TYPE_2048K     = 10,

    EN_ZJ_CAMERA_BITRATE_TYPE_2560K     = 11,

    EN_ZJ_CAMERA_BITRATE_TYPE_3072K     = 12,

    EN_ZJ_CAMERA_BITRATE_TYPE_4096K     = 13

}EN_ZJ_CAMERA_BITRATE_TYPE;


5.1.19 红外灯支持能力

//红外灯支持能力

typedef enum enum_ZJ_CAMERA_IRLED_ABILITY{

    EN_ZJ_CAMERA_IRLED_ABILITY_NOSUPPORT          = 0x00, //不支持红外灯

    EN_ZJ_CAMERA_IRLED_ABILITY_NOCONTROL         = 0x01, //不支持红外灯开关控制,只能通过感光器自动开关控制

    EN_ZJ_CAMERA_IRCUR_ABILITY_CANCONTROL      = 0x02, //支持红外灯命令开关控制

}EN_ZJ_CAMERA_IRLED_ABILITY;


5.1.20 图像侦测报警能力

//图像侦测报警能力

typedef enum enum_ZJ_MOTION_ABILITY{

    EN_ZJ_MOTION_ABILITY_NOSUPPORT            = 0x00, //不支持侦测

    EN_ZJ_MOTION_ABILITY_NORMAL               = 0x01, //普通运动侦测

    EN_ZJ_MOTION_ABILITY_NORMALTRACE          = 0x02, //普通运动跟踪

    EN_ZJ_MOTION_ABILITY_HUMAN               = 0x03, //人形侦测

    EN_ZJ_MOTION_ABILITY_HUMANTRACE           = 0x04  //人形追踪

}EN_ZJ_MOTION_ABILITY;


5.1.21 摄像机视频编码类型

//摄像机视频编码类型

typedef enum enum_ZJ_VIDEOENC_TYPE{

    EN_ZJ_VIDEOENC_TYPE_JPEG              = 0x01, //JPEG图片编码模式

    EN_ZJ_VIDEOENC_TYPE_H264             = 0x02, //H264编码类型

    EN_ZJ_VIDEOENC_TYPE_H265             = 0x04  //H265编码类型

}EN_ZJ_VIDEOENC_TYPE;

5.1.22 音频编码类型

//音频编码类型

typedef enum enum_ZJ_AUDIOENC_TYPE{

    EN_ZJ_AUDIOENC_TYPE_PCM16       = 0x01,

    EN_ZJ_AUDIOENC_TYPE_G711A       = 0x02,

    EN_ZJ_AUDIOENC_TYPE_G711U       = 0x04,

    EN_ZJ_AUDIOENC_TYPE_AAC         = 0x08,

    EN_ZJ_AUDIOENC_TYPE_MP3         = 0x10

}EN_ZJ_AUDIOENC_TYPE;

5.1.23 镜头类型

//镜头类型

typedef enum enum_ZJ_CAMERA_LENS_TYPE{

    EN_ZJ_CAMERA_LENS_TYPE_NORMAL       = 0x00,

    EN_ZJ_CAMERA_LENS_TYPE_360            = 0x01,

    EN_ZJ_CAMERA_LENS_TYPE_720            = 0x02

}EN_ZJ_CAMERA_LENS_TYPE;


5.1.24 视频编码参数

//视频编码参数

typedef struct stru_ZJ_VIDEO_PARAM{

    unsigned int uiResolution;          //分辨率,见分辨率定义

    unsigned int uiEncodeType;       //编码格式

    unsigned int uiSmartEncFlag;       //0.不支持Smart编码;1.支持Smart编码

    unsigned int uiQuality;            //编码质量

    unsigned int uiBitrate;             //码率,见码率定义

    unsigned int uiFramerate;         //帧率

    unsigned int uiFrameInterval;      //I帧间隔

}ST_ZJ_VIDEO_PARAM;


5.1.25 音频参数描述

// 音频参数描述

typedef struct stru_ZJ_AUDIO_PARAM{

    unsigned int uiEncodeType;    //编码格式

    unsigned int uiSampleRate;    //采样率

    unsigned int uiChannel;       //声道数

    unsigned int uiDepth;         //深度

}ST_ZJ_AUDIO_PARAM;


5.1.26 广角镜头圆心半径信息描述

//广角镜头圆心半径信息描述

typedef struct str_ZJ_VIDEO_CIRCLE

{

    unsigned int uiRadius;    //半径

    double doubleAngle;    //角度

    unsigned int uiCc1x;    //圆心坐标X

    unsigned int uiCc1Y;    //圆心坐标Y

    unsigned int uiCc2x;      // 720度双目

    unsigned int uiCc2Y;      // 720度双目

}ST_ZJ_VIDEO_CIRCLE;


5.1.27 扭曲度描述

// 扭曲度描述

typedef struct str_ZJ_VIDEO_DISTORTION

{

    double fx;       // 镜头光轴与图像圆心的水平偏移

    double fy;       // 镜头光轴与图像圆心的垂直偏移

    double a;       // 桶形畸变校正参数

    double b;       // 枕形畸变校正参数

    double scale;     // 图像缩放因子

}ST_ZJ_VIDEO_DISTORTION;


5.1.28 视频编码帧类型

//视频编码帧类型

typedef enum enum_ZJ_VIDEO_FRAME_TYPE{

    EN_ZJ_VIDEO_FRAME_TYPE_UNKNOW     = 0, //未知帧类型,需要去检测

    EN_ZJ_VIDEO_FRAME_TYPE_I                    = 1, //I

    EN_ZJ_VIDEO_FRAME_TYPE_P                    = 2, //P

}EN_ZJ_VIDEO_FRAME_TYPE;



5.1.29 图片类型定义

// 图片类型定义。普通图片,中等大小图片,小图,ICON图片;

typedef enum enum_ZJ_PICTURE_TYPE{

    EN_ZJ_PICTURE_NORMAL                   = 0,   //码流同等尺寸

    EN_ZJ_PICTURE_MIDDLE                = 1,   //码流缩放一倍尺寸

    EN_ZJ_PICTURE_SMALL                 = 2,   //320*240尺寸

    EN_ZJ_PICTURE_ICON                 = 3    //64*48尺寸

}EN_ZJ_PICTURE_TYPE;


5.1.30 TF卡状态返回

//TF卡状态

typedef enum enum_tfcard_status

{

    EN_TFCARD_STATUS_OK              = 0,  // tf 卡正常

    EN_TFCARD_STATUS_UNKNOWNSYSTEM   = 1,  // tf 卡正常,但是文件系统不支持

    EN_TFCARD_STATUS_NOTFCAR         = 2,  // TF 卡不存在

    EN_TFCARD_STATUS_FORMATTING      = 3,  // TF 卡正在格式化

    EN_TFCARD_STATUS_SYSTEMERR       = 4   // TF 卡文件系统损坏,需要人工修复

}EN_TFCARD_STATUS;

5.1.31 IR模式

//  IR模式。自动模式,红外模式,全彩模式。

typedef enum enum_ZJ_IRMODE{

    EN_ZJ_IRMODE_AUTO                  = 0,  //自动模式

    EN_ZJ_IRMODE_IR                      = 1,  //红外模式

    EN_ZJ_IRMODE_FULLCOLOR             = 2   //全彩模式

}EN_ZJ_IRMODE;


5.1.32 关键帧编码质量参数

// 关键帧编码质量参数

typedef enum enum_ZJ_KEYFRAME_QUALITY{

    EN_ZJ_KEYFRAME_QUALITY_NORMAL       = 1, // 标准质量

    EN_ZJ_KEYFRAME_QUALITY_LOW           = 2, // 低质量

}EN_ZJ_KEYFRAME_QUALITY;


5.1.33 AIIoT类型

//定义AIIoT类型,包括报警器、信号采集检测器、控制器;

typedef enum enum_ZJ_AIIOT_TYPE{

    EN_ZJ_AIIOT_TYPE_REMOTECTRLER               = 0,        //遥控器

    EN_ZJ_AIIOT_TYPE_DOORSWITCH                 = 1,        //门磁

    EN_ZJ_AIIOT_TYPE_SMOKETRANSDUCER         = 2,        //烟雾传感器

    EN_ZJ_AIIOT_TYPE_GASSENSOR                = 3,  //燃气 探测 传感器

    EN_ZJ_AIIOT_TYPE_LIGHTSWITCH                = 4,        //电灯

    EN_ZJ_AIIOT_TYPE_CURTAIN                    = 5,        //窗帘

    EN_ZJ_AIIOT_TYPE_JACK                       = 6,        //插座

    EN_ZJ_AIIOT_TYPE_PIR                        = 7,        //人体 红外

    EN_ZJ_AIIOT_TYPE_WATER                      = 8,        //水浸

    EN_ZJ_AIIOT_TYPE_ERG                        = 9,        //紧急

    EN_ZJ_AIIOT_TYPE_ALARMBEER                  = 10,       //警号


    EN_ZJ_AIIOT_TYPE_JCAKHVAC                   = 11,       //空调插座

    EN_ZJ_AIIOT_TYPE_MULTISWITCH                = 12,       //多路开关

    EN_ZJ_AIIOT_TYPE_SHUTTERMOTOR               = 13,   //卷帘 电动机

    EN_ZJ_AIIOT_TYPE_GLASSBROKENSENSOR         = 20, //玻璃破碎 传感器

    EN_ZJ_AIIOT_TYPE_INFRAREDSENSOR             = 23,     //红外 对射

    EN_ZJ_AIIOT_TYPE_BATTERYVALVE               = 24,       //电磁阀门

    EN_ZJ_AIIOT_TYPE_AIRFLOWSENSOR              = 25,   //气流传感器

    EN_ZJ_AIIOT_TYPE_MULTICTR                   = 32,     //多功能控制

    EN_ZJ_AIIOT_TYPE_INTELLOCK                  = 33,       //智能锁

    EN_ZJ_AIIOT_TYPE_DOORBELL                   = 34,       //门铃

        EN_ZJ_AIIOT_TYPE_COSENSOR                   = 40,  //一氧化碳探测器


        EN_ZJ_AIIOT_TYPE_MOTION                     = 1000,    //运动检测

        EN_ZJ_AIIOT_TYPE_INNER_DOORBELL             = 1001,    //内置 门铃

    EN_ZJ_AIIOT_TYPE_RECORD               = 1002, //录像 不需要注册IOT

    EN_ZJ_AIIOT_TYPE_INNER_PIR            = 1003,  //内置人体红外探测器

    EN_ZJ_AIIOT_TYPE_VOICEALARMDETECT         = 1004,  //声音报警检测

    EN_ZJ_AIIOT_TYPE_SNAPSHORT = 1005,  //SnapShot截图 不需要注册IOT

    EN_ZJ_AIIOT_TYPE_PTZ            = 1006,      //PTZ 不需要用注册IOT

    EN_ZJ_AIIOT_TYPE_INNER_LAMP     = 1007,      //内置白光灯

    EN_ZJ_AIIOT_TYPE_INNER_STATELAMP  = 1008,      //内置状态指示灯

    EN_ZJ_AIIOT_TYPE_BUZZER             = 1009,      //内置蜂鸣器

    EN_ZJ_AIIOT_TYPE_CLOUDRECORD            = 1010,      // 云端录像

    EN_ZJ_AIIOT_TYPE_CLOUDSNAP          = 1011,      // 云端截图

    EN_ZJ_AIIOT_TYPE_CAMERA              = 1012,      // 摄像机 开关

    EN_ZJ_AIIOT_TYPE_EVENT                    = 1013,      // 事件记录

    EN_ZJ_AIIOT_TYPE_DNSET       = 1014,      // 强制白天晚上,和自动

    EN_ZJ_AIIOT_TYPE_FORCEREMOVE                = 1015,       // 强拆

    EN_ZJ_AIIOT_TYPE_STAY                       = 1016        // 逗留

}EN_ZJ_AIIOT_TYPE;


5.1.34 EVENTID类型

//区分MOTION中不同的检测类型

typedef enum enum_zj_motion_event_type

{

    EN_ZJ_MOTION_EVENT_MOTION               = 0X00,         //移动侦测事件类型

    EN_ZJ_MOTION_EVENT_HUMAN                = 0X01,         //人形侦测事件类型

    EN_ZJ_MOTION_EVENT_FACE                 = 0X02,         //人脸侦测事件类型

    EN_ZJ_MOTION_EVENT_FENCE_MOTION_IN      = 0X03,         //电子围栏移动侦测进入事件

    EN_ZJ_MOTION_EVENT_FENCE_MOTION_OUT     = 0X04,         //电子围栏移动侦测离开事件

    EN_ZJ_MOTION_EVENT_FENCE_HUMAN_IN       = 0X05,         //电子围栏移动人形进入事件

    EN_ZJ_MOTION_EVENT_FENCE_HUMAN_OUT      = 0X06,         //电子围栏移动人形离开事件

    EN_ZJ_MOTION_EVENT_FENCE_FACE_IN        = 0X07,         //电子围栏移动人脸进入事件

    EN_ZJ_MOTION_EVENT_FENCE_FACE_OUT       = 0X08,         //电子围栏移动人脸离开事件

    EN_ZJ_MOTION_EVENT_CAR                  = 0X09,         //车辆识别

    EN_ZJ_MOTION_EVENT_CAR_DISCERN          = 0X10,         //车牌识别事件

    EN_ZJ_MOTION_EVENT_MOTION_OVERLINE      = 0X11,         //运动物体越线

    EN_ZJ_MOTION_EVENT_HUMAN_OVERLINE       = 0X12,         //人形越线

    EN_ZJ_MOTION_EVENT_FACE_OVERLINE        = 0X13          //人脸越线


}EN_ZJ_MOTION_EVENT_TYPE;

5.1.35 DID控制类型

typedef enum enum_ZJ_CTRLDEVICEID_TYPE{


    EN_ZJ_CTRLDID_NODE                  = 0,

    EN_ZJ_CTRLDID_CLEAR                 = 1,//更换DID

    EN_ZJ_CTRLDID_QUERY                = 2,//查询DID

    EN_ZJ_CTRLDID_EXITGROUP       = 3//DID解绑用户与设备关系

}EN_ZJ_CTRLDEVICEID_TYPE;


5.1.36 人脸相关的信息

typedef struct ZJ_HUMANFACE_NODE

{

    unsigned char aucFaceId[64];

    unsigned char aucFaceLabelId[64];

    struct ZJ_HUMANFACE_NODE *pstNextNode;

}ZJ_HUMANFACE_NODE;


typedef struct ZJ_HUMANFACE_LABLE_NODE

{

    unsigned int  uiMaxFaceCnt;

    unsigned int  *pucFaceDes;

    unsigned char aucFaceLabeName[64];

    unsigned char aucFaceLabelId[64];

    struct ZJ_HUMANFACE_LABLE_NODE *pstNextNode;

}ZJ_HUMANFACE_LABLE_NODE;

6 关于设备重启

由于设备重启会影响到用户实时视频观看和云存的丢失,设备端尽量避免定时自动重启,更不允许设备定时准点自动重启。

若设备确实需要周期性自动重启,需要随机打散重启时间,避免所有设备在同一时间周期性冲击平台接口,自动重启设计为间隔714天、00:30:00 04:00:00之间随机时间点,具体要求如下:

1、重启日周期:从设备启动或重启后第7到第14天,随机一天,避免所有设备在同一天重启。公式如下: 重启日周期=7+N N07的系统随机数。

2、时间点:00:30:00 04:00:00之间,随机一秒,避免重启的设备在同一秒重启。公式如下:时间点=T T00:30:00 04:00:00之间随机秒数(即1800 14400之间随机数)。

举例:设备启动或重启日期为2020/02/05,若随机数N=3、随机数T=3672,则设备在第10 01:01:12自动重启,即2020/02/15 01:01:12自动重启。



请加我的企业微信
鹤梦信息客服