Skip to content
目录

HTTP接口 ​

1、所有接口均基于 POST 方法。

2、请求和响应均使用 JSON 格式,需要显式设置请求HTTP标头 Content-Type 为 application/json ,字符编码使用 UTF-8 。接口返回 JSON 数据格式如下:

typescript
{
    error?: string, // 错误信息
    data?: any
}

拿到接口返回的 JSON 数据后,应该首先根据 error 字段判断接口调用是否成功。

3、所有接口都需要携带如下签名参数:

  • user_name 用户名,字符串类型

  • unix_timestamp UNIX时间戳(毫秒数),字符串类型,用于防重放

  • 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 。

流媒体NodeNVR3

获取通道列表 ​

接口地址:/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~255

  • name 预置点名称,字符串类型

返回的 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 开始时间,格式yyyyMMddHHmmss

  • end_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分钟。

技术支持:13352865103(柯工,微信同号)