HTTP接口
1、所有接口均基于 POST 方法。
2、请求和响应均使用 JSON 格式,需要显式设置请求HTTP标头 Content-Type 为 application/json ,字符编码使用 UTF-8 。接口返回 JSON 数据格式如下:
typescript
{
error?: string, // 错误信息
data?: any
}拿到接口返回的 JSON 数据后,应该首先根据 error 字段判断接口调用是否成功。
3、所有接口都需要携带如下签名参数:
user_name用户名,字符串类型unix_timestampUNIX时间戳(毫秒数),字符串类型,用于防重放signature签名,字符串类型
其中 signature 需要使用国密 sm3 算法生成。生成算法如下:
typescript
sm3(`${user_name}|${sm3(pwd)}|${url}|${unix_timestamp}`)其中的 url 是指接口的相对地址,例如:/api/getchannels 。
4、内置接口API测试工具,访问地址:http://{ip}:{port}/apitest.html ,测试工具代码文件在 nodenvr3/wwwroot/apitest.html 。

获取通道列表
接口地址:/api/getchannels 。
无额外参数。
返回的 data 数据是一个通道对象数组。通道对象结构以及关联的枚举如下:
typescript
/**
* 平台通道
*/
export type Channel = {
/**
* 平台通道国标ID
*/
channel_id: string;
/**
* 平台通道名称
*/
channel_name: string;
/**
* 是否在线 0:不在线 1:在线
*/
online: number;
/**
* 接入协议
*/
protocol: AccessProtocol;
/**
* 流传输方式
*/
transport: 'TCP' | 'UDP';
/**
* 是否支持回放 0:不支持 1:支持
*/
has_playback: number;
/**
* 云台控制(对象列表)
*/
ptz: PtzType[];
};
/**
* 接入协议
*/
export enum AccessProtocol {
/**
* GB28181
*/
Gb28181 = 'gb28181',
/**
* RTSP
*/
Rtsp = 'rtsp',
/**
* ONVIF
*/
Onvif = 'onvif',
/**
* 海康综合安防平台
*/
Hkisc = 'hkisc',
/**
* 大华物联综合平台
*/
Dhicc = 'dhicc',
/**
* 大华视频云
*/
Dhdcc = 'dhdcc'
}
/**
* 云台类型
*/
export enum PtzType {
/**
* 转动
*/
Rotate = 1,
/**
* 焦距
*/
Zoom = 2,
/**
* 焦点
*/
Focus = 3,
/**
* 光圈
*/
Iris = 4
}云台控制
接口地址:/api/ptz 。
额外参数如下:
channel_id通道ID,字符串类型cmd云台控制命令,枚举类型,定义如下:
typescript
/**
* 云台控制命令
*/
export enum PtzCommand {
/**
* 上
*/
Up = 1,
/**
* 下
*/
Down = 2,
/**
* 左
*/
Left = 3,
/**
* 右
*/
Right = 4,
/**
* 上左
*/
UpLeft = 5,
/**
* 上右
*/
UpRight = 6,
/**
* 下左
*/
DownLeft = 7,
/**
* 下右
*/
DownRight = 8,
/**
* 焦距变大
*/
ZoomIn = 9,
/**
* 焦距变小
*/
ZoomOut = 10,
/**
* 焦点前移
*/
FocusNear = 11,
/**
* 焦点后移
*/
FocusFar = 12,
/**
* 光圈扩大
*/
IrisEnlarge = 13,
/**
* 光圈缩小
*/
IrisReduce = 14
}speed云台控制速度,取值范围[0,10],其中0表示停止。
返回的 data 数据为空。
获取预置点列表
接口地址:/api/getpresets 。
额外参数如下:
channel_id通道ID,字符串类型
返回的 data 数据是一个预置点对象数组。预置点对象结构如下:
typescript
/**
* 预置点
*/
export type Preset = {
/**
* 预置点编号
*/
token: string,
/**
* 预置点名称
*/
name: string,
}设置预置点
接口地址: /api/setpreset 。
额外参数如下:
channel_id通道ID,字符串类型token预置点编号,字符串类型的整数,一般为1~255name预置点名称,字符串类型
返回的 data 数据为空。
跳转到预置点
接口地址: /api/gopreset 。
额外参数如下:
channel_id通道ID,字符串类型token预置点编号,字符串类型的整数,一般为1~255
返回的 data 数据为空。
删除预置点
接口地址: /api/removepreset 。
额外参数如下:
channel_id通道ID,字符串类型token预置点编号,字符串类型的整数,一般为1~255
返回的 data 数据为空。
查询录像记录
接口地址: /api/queryrecords 。
额外参数如下:
channel_id通道ID,字符串类型start_time开始时间,格式yyyyMMddHHmmssend_time结束时间,格式yyyyMMddHHmmss,时间区间最大为1天
返回的 data 数据是一个录像时间段对象数组,录像时间段对象结构如下所示:
typescript
/**
* 录像时间段
*/
export interface RecordTimestamp {
/**
* 录像开始时间,格式yyyy-MM-dd HH:mm:ss
*/
start: string;
/**
* 录像结束时间,格式yyyy-MM-dd HH:mm:ss
*/
end: string;
}截图
接口地址: /api/snapshot 。
额外参数如下:
channel_id通道ID,字符串类型
返回的 data 数据是图片文件的相对路径,字符串类型,有效期10分钟。
手动录像
接口地址: /api/manualrecording 。
额外参数如下:
channel_id通道ID,字符串类型duration录像时长,单位秒,最长30分钟
返回的 data 数据是录像文件的相对路径,字符串类型,有效期10分钟。
文档中心