1. 概述

​ Sigmstar当前是记录仪行业的主流SOC之一,原厂提供了基本协议框架和标准,但在落地是各个方案商有一定的扩展,给APP的适配带来了一定的复杂性;

​ 由于记录仪行业的业务本质上是可以标准化的,故本文档会拟定一个‘6帧探’适配的标准文档,如果有方案商想采用本APP作为公版使用的,有统一的标准将会带来双方更大适配便利性,也会给行业带来更大的效率提升;

2. 标准适配

标准适配分为三类:

  1. 视频流播放的标准化:进行预览的协议格式、回放的文件格式等;
  2. 控制命令的标准化:进行拍照、录像、设置项的查询和设置;
  3. 事件通知的标准化:设备发生事件变化,比如TF插拔等;

2.1 视频预览协议和地址

视频预览当前支持RTSP协议,编码格式支持H.264(推荐)、H.265、MJPEG; 播放器使用RTSP地址进行预览码流的播放,样例如下:

rtsp://192.168.1.1/liveRTSP/av4

根据对接经验,这个地址不同方案商、不同设备型号、以及同一个设备的前后路都可能不一样:

当前RTSP地址的定义标准如下:

2.1.1 单路摄像头:

  1. 从接口“Camera.Preview.*”中进行查询:

    http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Preview.*
    
    0
    OK
    
    Camera.Preview.RTSP.av=4
    
    Camera.Preview.Source.1.Camid=front
    

其中:

  • Camera.Preview.RTSP.av指定当前预览的av通道;对应的值将会作为RTSP协议的参数,当前对应关系如下:
    "1":av1
    "2":v1
    "3":av2
    "4":av4
    "5":v3
    "6":v2
    如果有需要,可以通知我们继续补充对应关系

比如:

“Camera.Preview.RTSP.av=3” 对应RTSP地址为:rtsp://192.168.1.1/liveRTSP/av2
“Camera.Preview.RTSP.av=4” 对应RTSP地址为:rtsp://192.168.1.1/liveRTSP/av4

2.1.2 双路摄像头

是否支持双路摄像头现在有两种机制,选其一即可:

  • 方式一:通过Camera.Menu.中查询到的key:Camera.Menu.RearStarus的值判断:*ON-设备有后路镜头,OFF-设备没有后路镜头;
http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Menu.*

……
Camera.Menu.RearStarus=OFF
……
  • 方式二: 通过接口“Camera.Preview.*”中进行查询

如果 Camera.Preview.RTSP.av 的值有两个,则认为当前有两路摄像头:

http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Preview.*

0
OK

Camera.Preview.RTSP.av=4/5

Camera.Preview.Source.1.Camid=front
  • 对应的RTSP地址根据av=4/5的顺序来区分,分别对应av的值:
    • 前路镜头的播放地址front:rtsp://192.168.1.1/liveRTSP/av4
    • 后路镜头的播放地址rear:rtsp://192.168.1.1/liveRTSP/av5

注意:当前是在看哪一路,app需要从设备查询获取到,Camera.Preview.*中返回的Camid中指示当前观看:

  • Camera.Preview.Source.1.Camid指定当前的是前路还是后路, front为前路, rear为后路,单镜头设备默认为font;

2.1.3 多路摄像头

当前多路的场景越来越多,该方案是对上述方案的补充,最终>=2路的摄像头都可以采用此方案

1. 查询

​ 通过接口“Camera.Preview.*”中进行查询

​ 如果 Camera.Preview.RTSP.av 的值有>=2个,则认为当前有多路摄像头

http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Preview.*

0
OK
Camera.Preview.RTSP.av=4/5/7/8/9
Camera.Preview.Source.1.Camid=front
  • Camera.Preview.RTSP.av=4/5/7/8/9中av的值以"/"分割,有几个值就表示当前有几个摄像头,比如上面有4、5、7、8、9 五个值,就是5个摄像头;

  • Camera.Preview.Source.1.Camid=front Camid的值是哪个表示当前app正常预览的时哪路摄像头;其中注意点:

    • 切换摄像头时的指令参数:前三个摄像头固定为 fornt、rear、mid,大于三路的部分用AV的值,比如上8、9 ,切换摄像头指令:
    • 预览RTSP地址的指令参数为av对应的值;

举例:

    //第1个摄像头
    setcamid&property=Camera.Preview.Source.1.Camid&value=front  // 切换摄像头指令
    rtsp://ip/liveRTSP/av4                                                                            // rtsp播放地址

    //第2个摄像头
    setcamid&property=Camera.Preview.Source.1.Camid&value=rear
    rtsp://ip/liveRTSP/av5

    //第3个摄像头
    setcamid&property=Camera.Preview.Source.1.Camid&value=mid
    rtsp://ip/liveRTSP/av7

    //第4个摄像头
    setcamid&property=Camera.Preview.Source.1.Camid&value=8
    rtsp://ip/liveRTSP/av8

    //第5个摄像头
    setcamid&property=Camera.Preview.Source.1.Camid&value=9
    rtsp://ip/liveRTSP/av9
2. 摄像头插拔变化

​ 通过udp的socket(端口是49142),推送消息:

CAM_NUM_CHANGE=4

其中‘4’,是当前变化后的摄像头总个数;收到该消息后,app会主动查询get&property=Camera.Preview.*,获取当前最新摄像头的情况和当前预览的摄像头ID;

3. 文件列表的获取

当文件列表获取仅支持4路获取,分别对应的字段是dir、reardir、middir、outsidedir,超过4路的,暂时不支持文件列表的获取;

action=dir&property=Normal&format=all&backward=1&count=20&from=0
action=reardir&property=Normal&format=all&backward=1&count=20&from=0
action=middir&property=Normal&format=all&backward=1&count=20&from=0
action=outsidedir&property=Normal&format=all&backward=1&count=20&from=0

其中:

  • dir:前路

  • reardir:后路

  • middir:中路

  • outsidedir:对外(第4路)

2.3 视频回放

视频回放是指APP不用先下载视频,直接播放TF卡上的视频文件,这块的要求主要以下几点,基本上目前方案商都满足:

  • 设置支持http server,且server支持http range;
  • 如果是MP4格式的文件,最好将moov的box放在文件头部,而不是文件尾部,这样会加快播放器获取MP4文件索引信息;

目前我们支持的视频格式有:MP4(推荐)、TS、MOV、AVI,其中只有MP4支持文件编辑,APP内部有文件封装转化功能,当前会自动转换TS到MP4;

2.4 接口命令的标准化

进行拍照、录像、设置项的查询和设置;

接口的组成部分:

  1. 固定部分: http://192.168.1.1/cgi-bin/Config.cgi?action=

  2. 操作类型: get / set

  3. 操作的属性:

    1. 查询类(get):比如:property=Camera.Menu.SDInfo,带上“Camera.Menu.” 前缀
    2. 设置类(set):比如:property=Video&value=recordoff; 指定操作的属性key和对应的value;

样例如下:

2.4.1 查询类的接口样例

请求:

http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Menu.SDInfo

响应:

0
OK
Get SD Status
SD0INFO=1
Camera.Menu.SDInfo=ON

注意:响应内容的格式分为三类

1) 0:对应该请求的错误码,如果正常返回,返回0,非0,表示该接口异常(比如不支持该命令) 2) OK:为响应结果的文字描述,当前APP未使用; 3) 结果信息:以key=value的形式,每行一个值,如果有多个值用多行表示; APP在处理时,会首先解析第一行(固定在第一行)的值是否为0 或 非0 的数字;然后解析剩余行是否有key-value这种结构,如果有则进行解析,其他非key-value结构的行app不解析,不处理;

2.4.2 操作类的接口样例

样例:停止录像

请求:

http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Video&value=recordoff

响应:

0
OK

注意:操作类接口只关注第一行(固定第一行):对应该请求的错误码,如果正常返回,返回0,非0,表示该操作异常;对应操作失败;

2.5 接口标准定义

APP和设备命令操作对接涉及到两个变化的点需要对齐,标准化旨在对齐这些变化的点:

  • 设置或查询操作的“属性key”,比如上面停止录像中的property=Video中的Video;
  • 设置或查询操作对应的”选项参数“,比如对录像操作的参数: recordon/recordoff; 循环录制的时长参数 : "1MIN", "3MIN", "5MIN"

2.5.1 两种接口对接方式

2.5.1.1 对接方式的区别

注意:当前Sigmstar的接口定义有两种方式:

  • 方式一(推荐):设备端在cammenu.xml中定义,这种方式设备端可以灵活定义设置项的“选项参数”值,比如:循环录制文件时长参数,A设备是 1,3,5分钟;B设备是1,2,3分钟,这种不同的设备需求,cammenu.xml中定义不同即可,APP根据连接的不同设备中的cammenu.xml的定义来给用户显示和对设备进行设置操作;
  • 方式二:APP端写死所有的设置项的“属性key” 和 ”选项参数“; APP和设备端定义必须完全一一对应,且这些项的字符串完全一致,功能才能正常;本文档的一个很重要的作用就是规范大家都定义成一致,让功能能够正常运行起来;

方式一也是有约束的,设备可以灵活定义设置中 ”选项参数“,但是设置项本身的”属性key“要和本规范文档定义一致;

方案二是”选项参数“和设置项本身的”属性key“这两点都要完全一致,功能才正常;

我们用设置项[循环录制时长]举例如下:

  • A设备中cammenu.xml的定义:

    <menu title="LOOPING VIDEO" id="LoopingVideo"> 
        <item id="1MIN">1 min</item>
        <item id="3MIN">3 min</item>
        <item id="5MIN">5 min</item>
      </menu>
    

    这里面的‘LoopingVideo’必须要和本文档规范定义一致;但是其中的item设备可以灵活定义,比如例子中B设备可以改为1,2,3MIN,APP也能正确适配:

    <menu title="LOOPING VIDEO" id="LoopingVideo"> 
        <item id="1MIN">1 min</item>
        <item id="3MIN">2 min</item>
        <item id="5MIN">3 min</item>
      </menu>
    
  • 如果是方案二,APP端写死的:"1MIN", "3MIN", "5MIN",则APP显示给用户和下发给设备的参数就固定为 "1MIN", "3MIN", "5MIN",B设备侧无法自行灵活修改这个”选项参数“列表;

    所以我们推荐方案商后面采用方式一来和APP进行对接;如果方案商采用方式二,且和下面的文档规范定义不一致的,需要联系我们单独进行适配处理;

2.5.1.2 对接方式的选择

方式一满足的条件:

如果上述两点满足,我们则认为使用方式一对接接口;否则是采用方式二(按APP上固定的“属性key” 和 ”选项参数“)进行对接;

举例:

http://192.168.1.1:80/cgi-bin/Config.cgi?action=get&property=Camera.Menu.*

……
Camera.Menu.menuXML=ON
……
  • 下载的cammenu.xml内容样例:

    <?xml version="1.0"?>
    <camera xmlns="urn:schemas-ait-dvr:device-1-0">
      <version>0.1</version>
      <menu title="VIDEO RESOLUTION" id="Videores"> <!-- 录制分辨率/帧率 -->
        <item id="1080P30fps">1080P 30fps</item>
        <item id="720P30fps">720P 30fps</item>
      </menu>
      <menu title="CAPTURE RESOLUTION" id="Imageres"> <!-- 照片像素 -->
        <item id="3M">3M Pixels</item>
        <item id="2M">2M Pixels</item>
        <item id="1D2M">1.2M Pixels</item>
      </menu>
      <menu title="SoundRecord" id="SoundRecord"> <!-- 麦克风 -->
        <item id="OFF">OFF</item>
        <item id="ON">ON</item>
      </menu>
      <menu title="Volume" id="Volume"> <!-- 外放音量 -->
        <item id="OFF">OFF</item>
        <item id="LOW">LOW</item>
        <item id="MID">MID</item>
        <item id="HIGH">HIGH</item>
      </menu>
      <menu title="VoiceControl" id="VoiceControl"> <!-- 声控开关 -->
        <item id="OFF">OFF</item>
        <item id="ON">ON</item>
      </menu>
      <menu title="LOOPING VIDEO" id="LoopingVideo"> <!-- 循环录影 -->
        <item id="1MIN">1 min</item>
        <item id="3MIN">3 min</item>
        <item id="5MIN">5 min</item>
      </menu>
      <menu title="Timelapse fps" id="Timelapse"> <!-- 缩时录影帧率 -->
        <item id="OFF">OFF</item> 
        <item id="1SEC">1 FPS</item>
        <item id="2SEC">1/2 FPS</item>
        <item id="4SEC">1/4 FPS</item>
      </menu>
      <menu title="Timelapse time" id="TimelapseTime"> <!-- 缩时录影时间 -->
        <item id="2H">2 h</item>
        <item id="8H">8 h</item>
        <item id="12H">12 h</item>
        <item id="24H">24 h</item>
      </menu>
      <menu title="GSensor" id="GSensor"> <!-- Gsensor灵敏度 -->
        <item id="OFF">off</item>
        <item id="LEVEL0">low</item>
        <item id="LEVEL2">mid</item>
        <item id="LEVEL4">high</item>
      </menu>
      <menu title="Parking" id="Parking"> <!-- 停车监控 -->
        <item id="OFF">OFF</item>
        <item id="LEVEL0">low</item>
        <item id="LEVEL1">mid</item>
        <item id="LEVEL2">high</item>
      </menu>
      <menu title="Flicker" id="Flicker"> <!-- 光源频率 -->
        <item id="50HZ">50HZ</item>
        <item id="60HZ">60HZ</item>
      </menu>
      <menu title="SpeedUint" id="SpeedUint"> <!-- 速度单位 -->
        <item id="km/h">km/h</item>
        <item id="mph">mph</item>
      </menu>
      <menu title="RecStamp" id="RecStamp"> <!-- 时间水印 -->
        <item id="DATE">DATE</item>
        <item id="OFF">OFF</item>
      </menu>
    </camera>
    

2.5.2 接口字段定义

好了,上面已经清楚的说明两种对接方式,以及每种方式的约束点,下面来统一定义每个业务的“属性key” 和 ”选项参数“,其中方式一中的“选项参数” 可以灵活定义;

属性 命令功能 操作类型 备注
同步日期时间 TimeSettings set
获取当前设备的SSID Net.WIFI_AP.SSID get/set 返回当前设备wifi 的全ssid,和手机系统看到的wifi ssid一致
获取设备当前电量 Camera.Battery.Level get 返回设备当前电池的电量值,[0-100]
录像分辨率 Videores get/set 1080P 30fps,id(1080P30)是App与设备间传递的参数,App显示时用后面的1080P 30fps
拍照分辨率 Imageres get/set
录音开关 SoundRecord get/set
扬声器音量 Volume get/set "0", "1", "5", "9"
语音开关 VoiceControl get/set
录像文件时长 LoopingVideo get/set
缩时录影帧率 Timelapse get/set
停车监控时间 TimelapseTime get/set
碰撞感应灵敏度 GSensor get/set 关闭;低;中;高
停车监控碰撞灵敏度 PowerOnGSensor get/set 关闭;低;中;高
光源频率 Flicker get/set
速度单位 SpeedUint get/set km/h,mph
视频水印选项 RecStamp get/set DATELOGO:时间和图标,DATE:时间,OFF:关闭
曝光补偿 EV get/set
视频编码格式 EncodeType get/set H.264;H.265
低电压保护设置 BatProtect get/set 设置电瓶电压门限,达到门限后设备自动关机
时间制式 HoursType get/set "12H", "24H"
设备语言 Language get/set "SCHINESE", "ENGLISH"
  • 上面的每个字段对设备都是可选项,如果设备支持这个接口字段,请和文档描述的属性key和参数一致,详情见下面的描述;
2.5.2.1 同步日期时间
  • 设置属性key:TimeSettings

  • 操作类型:set

  • 参数:年$月$日$时$分$秒,比如:2021$12$30$15$46$33

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=TimeSettings&value=2021$12$30$15$46$33
    
    0
    OK
    
2.5.2.2 查询设备WiFi的SSID
  • 设置属性key:Net.WIFI_AP.SSID

  • 读属性:Net.WIFI_AP.SSID

  • 操作类型:get

  • 响应消息:返回当前设备wifi 的全ssid,和手机系统看到的wifi ssid一致

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Net.WIFI_AP.SSID
    
    0
    OK
    Net.WIFI_AP.SSID=CTD_I6-876788
    
2.5.2.3 查询设备当前电量

该接口一般用在运动相机上

  • 读属性:Camera.Battery.Level

  • 操作类型:get

  • 响应消息:返回设备当前电池的电量值,[0-100]

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Battery.Level
    
    0
    OK
    Camera.Battery.Level=28
    
2.5.2.3 获取设备的固件版本
  • 读属性key:Camera.menu.FWVersion

  • 操作类型:get

  • 响应消息:设备当前的固件版本

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.menu.FWVersion
    0
    OK
    Camera.Menu.FWversion=V1.0.1_20210306
    
2.5.2.4 获取设备存储卡信息

存储卡的状态包含: 当前卡的插拔和健康状态;卡的容量情况;

这是个多属性合在一起返回的接口,所以使用的是CardInfo.*

  • 读属性key:Camera.Menu.CardInfo.*

  • 操作类型:get

  • 响应消息:

    • 返回卡状态status:
      • NORMAL:正常,
      • NEED_FORMAT:需要格式化,
      • NONE:未插入卡
    • 存储卡总容量:total, 单位:G/M ;注意:G 代表GB, M代表MB;
    • 剩余容量: remain,单位:G/M

      如果当前卡异常,无法得知容量时, 则total和remain都设置为0;

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Menu.CardInfo.*
    
    0
    OK
    Camera.Menu.CardInfo.CardStatus=NORMAL
    Camera.Menu.CardInfo.total=29.2G
    Camera.Menu.CardInfo.remain=789.2M
    
2.5.2.5 获取设备录像状态信息
  • 读属性key:Camera.Preview.MJPEG.status.*

  • 操作类型:get

  • 响应消息:返回设备录像状态,其中key为:Camera.Preview.MJPEG.status.record,值为:Recording:正在录像,Standby:暂停录像

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Preview.MJPEG.status.*
    
    0
    OK
    Camera.Preview.MJPEG.status.record=Recording
    
  • 备注: 不同的方案商响应消息里面可能还有其他行的key-value,但只要有Camera.Preview.MJPEG.status.record=Recording即可,其他行app不关心,也不解析;

2.5.2.6 拍照
  • 设置属性key:Video

  • 操作类型:set

  • 参数:capture

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Video&value=capture
    
    0
    OK
    
2.5.2.7 开关录像

控制记录仪启动、停止录像的指令

  • 设置属性key:Video

  • 操作类型:set

  • 参数:启动-recordon 、停止-recordoff

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Video&value=recordon
    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Video&value=recordoff
    
    0
    OK
    
2.5.2.8 普通心跳

每隔2秒发送一次,如果设备不需要,可以不用实现这个接口

  • 设置属性key:Heartbeat

  • 操作类型:set

  • 参数:无

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Heartbeat
    
    0
    OK
    
2.5.2.9 预览心跳

部分设备需要在预览时发送心跳命令,否则设备端预览会自动停止,这个取决于设备,如果设备有这样的需求,按这个接口的字段对齐

  • 设置属性key:StreamStatus

  • 操作类型:set

  • 参数:ON (固定这个参数)

  • 样例:

    http://192.168.1.1:80/cgi-bin/Config.cgi?action=set&property=StreamStatus&value=ON
    
    0
    OK
    
2.5.2.10 录制分辨率

操作当前循环视频录制的分辨率,当前这个是变化最多的接口,公版接口只定义 :"1080P30", "720P30"两种,

  • 设置属性key:Videores

  • 读属性key:Camera.Menu.VideoRes

  • 操作类型:set

  • 参数:"1080P30", "720P30"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=Videores&value=720P30
    
    0
    OK
    

注意:该指令在menu.中对应的key是:Camera.Menu.*VideoRes (R的大小写不一样)

2.5.2.11 拍照分辨率

拍照操作保存在设备上的照片的分辨率设置

注意:该指令在menu.中对应的key是:Camera.Menu.*ImageRes (R的大小写不一样)

2.5.2.12 录制视频编码方式

选择视频的编码方式:H.264 、H.265

  • 设置属性key:EncodeType

  • 读属性key:Camera.Menu.EncodeType

  • 操作类型:set

  • 参数:"H264", "H265"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=EncodeType&value=H265
    
    0
    OK
    
2.5.2.13 碰撞感应灵敏度

行车过程中,车辆发生碰撞后的自动锁档视频的灵敏度设置

  • 设置属性key:GSensor

  • 读属性key:Camera.Menu.GSensor

  • 操作类型:set

  • 参数:"OFF", "LEVEL0", "LEVEL2", "LEVEL4" 分别对应 关闭、低、中、高

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=GSensor&value=LEVEL0
    
    0
    OK
    
2.5.2.14 循环录制文件的时长

循环录制视频文件的单个文件的最大时长

  • 设置属性key:LoopingVideo

  • 读属性key:Camera.Menu.LoopingVideo

  • 操作类型:set

  • 参数:"1MIN", "3MIN", "5MIN"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=LoopingVideo&value=1MIN
    
    0
    OK
    
2.5.2.15 停车监控

是否开启停车监控,是个开关

  • 设置属性key:ParkingGuard

  • 读属性key:Camera.Menu.ParkingGuard

  • 操作类型:set

  • 参数:ON/OFF

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=ParkingGuard&value=ON
    
    0
    OK
    
2.5.2.16 停车监控碰撞感应灵敏度

在停车监控时,发生车辆碰撞的检测灵敏度

  • 设置属性key:ParkingMonitor

  • 读属性key:Camera.Menu.ParkingMonitor

  • 操作类型:set

  • 参数:"LEVEL2", "LEVEL1", "LEVEL0", "OFF", 分别对应 高、中、低、关闭

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=ParkingMonitor&value=LEVEL1
    
    0
    OK
    
2.5.2.17 停车监控时长

在停车监控时,会消耗车辆电瓶的电量,通过此处定义监控的时长,停车监控室,时长到了之后设备会自动关机

  • 设置属性key:TimelapsePowerOff

  • 读属性key:Camera.Menu.TimelapsePowerOff

  • 操作类型:set

  • 参数:"OFF", "12H", "24H"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=TimelapsePowerOff&value=12H
    
    0
    OK
    
2.5.2.18 缩时录影的帧率

在停车监控时,部分设备会采用缩时录影的方式,其录制的帧率通过该项进行设置

  • 设置属性key:Timelapse

  • 读属性key:Camera.Menu.Timelapse

  • 操作类型:set

  • 参数:"OFF", "1fps/s", "2fps/s", "5fps/s"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=Timelapse&value=1fps/s
    
    0
    OK
    
2.5.2.19 视频水印选项

视频中是否叠加水印

  • 设置属性key:RecStamp

  • 读属性key:Camera.Menu.RecStamp

  • 操作类型:set

  • 参数:"DATE", "DATELOGO", "OFF" ,说明:DATELOGO-水印上有时间和logo图标,DATE-水印上只有时间,OFF-视频上不叠加水印

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=RecStamp&value=DATELOGO
    
    0
    OK
    
    2.5.2.20 视频曝光度
  • 设置属性key:Exposure

  • 读属性key:Camera.Menu.EV

  • 操作类型:set

  • 参数:"EVN200", "EVN167", "EVN133", "EVN100", "EVN067", "EVN033", "EV0", "EVP033", "EVP067", "EVP100", "EVP133", "EVP167",

                "EVP200"
    

    对应的显示项为: "-2.0", "-1.6", "-1.3", "-1.0", "-0.6", "-0.3", "+0.0", "+0.3", "+0.6", "+1.0", "+1.3", "+1.6", "+2.0"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=Exposure&value=EV0
    
    0
    OK
    

    注意:该指令在menu.中对应的key是:Camera.Menu.*EV (和写属性不一样)

2.5.2.21 mic录音

是否对循环录制的视频进行静音

  • 设置属性key:SoundRecord

  • 读属性key:Camera.Menu.SoundRecord

  • 操作类型:set

  • 参数:"OFF", "ON"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=SoundRecord&value=ON
    
    0
    OK
    
2.5.2.22 扬声器音量

对设备的扬声器的音量大小进行设定

  • 设置属性key:Volume

  • 读属性key:Camera.Menu.Volume

  • 操作类型:set

  • 参数:"0", "1", "5", "9",对应显示项:静音、低、中、高

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=Volume&value=5
    
    0
    OK
    
2.5.2.23 按键音

带屏的机器一般会有物理按键,其按键时是否播放按键音此处设置

  • 设置属性key:Tone

  • 读属性key:Camera.Menu.Tone

  • 操作类型:set

  • 参数:"OFF", "ON"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=Tone&value=ON
    
    0
    OK
    
2.5.2.24 光源频率

设置光源频率

  • 设置属性key:Flicker

  • 读属性key:Camera.Menu.Flicker

  • 操作类型:set

  • 参数:"50Hz", "60Hz"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=Flicker&value=50Hz
    
    0
    OK
    
2.5.2.25 声控开关

是否启用语音控制设备的功能

  • 设置属性key:VoiceControl

  • 读属性key:Camera.Menu.VoiceControl

  • 操作类型:set

  • 参数:"OFF", "ON"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=VoiceControl&value=ON
    
    0
    OK
    
2.5.2.26 图像翻转

是指图像360度翻转

  • 设置属性key:UpsideDown

  • 读属性key:Camera.Menu.UpsideDown

  • 操作类型:set

  • 参数:"OFF", "ON"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=UpsideDown&value=ON
    
    0
    OK
    
2.5.2.27 速度单位

主要是针对海外客户的GPS机型使用

  • 设置属性key:SpeedUint

  • 读属性key:Camera.Menu.SpeedUint

  • 操作类型:set

  • 参数:"km/h", "mph"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=SpeedUint&value=mph
    
    0
    OK
    
2.5.2.28 低电压保护设置

针对接车辆电瓶的场景,设置保护电源,达到后设备会自动关机,以保护车辆电瓶不亏电

  • 设置属性key:BatProtect

  • 读属性key:Camera.Menu.BatProtect

  • 操作类型:set

  • 参数:"LEVEL0", "LEVEL1", "LEVEL2";分别对应的显示项为:"LOW(11.8V)", "MIDDLE(12.0V)", "HIGH(12.2V)"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=BatProtect&value=LEVEL1
    
    0
    OK
    
    2.5.2.29 格式化
  • 设置属性key:SD0

  • 操作类型:set

  • 参数:format

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=SD0&value=format
    
    0
    OK
    
2.5.2.30 恢复出厂设置
  • 设置属性key:FactoryReset

  • 操作类型:set

  • 参数:FactoryReset

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=FactoryReset&value=FactoryReset
    
    0
    OK
    
2.5.2.31 修改WiFi名称

需要重启WiFi才会生效

  • 设置属性key:Net.WIFI_AP.SSID

  • 操作类型:set

  • 参数:用户新输入的ssid

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Net.WIFI_AP.SSID&value=NewSSID
    
    0
    OK
    
2.5.2.32 修改WiFi密码
  • 设置属性key:Net.WIFI_AP.CryptoKey

  • 操作类型:set

  • 参数:用户新输入的密码

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Net.WIFI_AP.CryptoKey&value=12345678
    
    0
    OK
    
2.5.2.33 重启WiFi
  • 设置属性key:Net.Dev.1.Type

  • 操作类型:set

  • 参数:reset

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=set&property=Net.Dev.1.Type&value=AP&property=Net&value=reset
    
    0
    OK
    
2.5.2.34 HDR

HDR

  • 设置属性key:Hdr

  • 读属性key:Camera.Menu.HDR

  • 操作类型:set

  • 参数:"OFF", "ON"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=Hdr&value=ON
    
    0
    OK
    
2.5.2.35 延时关机

断电后设备几秒后关机

  • 设置属性key:PowerOffDelay

  • 读属性key:Camera.Menu.PowerOffDelay

  • 操作类型:set

  • 参数:"OFF", "5SEC", "10SEC", "30SEC",对应显示项:关闭、5秒、10秒、30秒

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=set&property=PowerOffDelay&value=5SEC
    
    0
    OK
    

2.6 文件列表

2.6.1 文件数据结构

<file>
  <name>/SD/Normal/F/FILE211229-163306F.MOV</name>
  <format size="1920x1080" fps="30" time="60.0">MOV</format>
  <size>92143616</size>
  <attr>RW</attr>
  <time>2021-12-29 16:33:06</time>
</file>

<file>
  <name>/SD/Photo/F/IMG211228-195225F.JPG</name>
  <format size="2304x1296">jpeg</format>
  <size>196608</size>
  <attr>RW</attr>
  <time>2021-12-28 19:52:25</time>
</file>
  • name: 文件的路径
  • format: 当前使用了其中的 time子属性:文件时长,单位:秒
  • size:文件大小,单位:Byte
  • time:文件起始时间,视频数据结构中中的time是视频时长

2.6.2 获取文件列表

APP会从设备上按文件获取文件列表,其文件类型如下:

  • Normal:普通循环录制视频;

  • Photo:拍照的图片

  • Event:紧急视频,由碰撞锁档产生的视频文件;

  • Parking:停车监控时的录制的视频文件,以下二选一

    ​ 1. 如果有独立的文件夹,按Parking命名;

    ​ 2.和Normal放在一起的:当前sigmstar的原始方案是不支持对停车监控进行分类的,当前满足app将停车监控从循环视频中分类出来的条件是:

    文件名包含_T, 如FILE200712-145754F_T.MOV('_T'不区分大小)
    

​ 前后路镜头的文件列表也是分开获取的:

  • 前路:dir;
  • 后路:reardir

上述前后路标记拼接在url中的action=dir字段,进行不同镜头的文件列表的获取,

样例:

http://192.168.1.1/cgi-bin/Config.cgi?action=dir&property=Normal&format=all&count=10&from=0  // 获取前路普通循环录制视频(Normal)文件
http://192.168.1.1/cgi-bin/Config.cgi?action=dir&property=Photo&format=all&count=10&from=0  // 获取前路图片(Photo)文件
http://192.168.1.1/cgi-bin/Config.cgi?action=dir&property=Event&format=all&count=10&from=0  // 获取前路紧急视频(Event)文件

http://192.168.1.1/cgi-bin/Config.cgi?action=reardir&property=Normal&format=all&count=20&from=10 // 获取后路普通循环录制视频(Normal)文件
http://192.168.1.1/cgi-bin/Config.cgi?action=reardir&property=Photo&format=all&count=20&from=10// 获取后路图片(Photo)文件
http://192.168.1.1/cgi-bin/Config.cgi?action=reardir&property=Event&format=all&count=20&from=10  // 获取后路紧急视频(Event)文件文件

2.6.3 获取文件缩略图

当前有两种规则拼接文件缩略图的方式,设备只要满足其中一种即可:

  • 方式一:如果文件路径包含/SD/将其中的SD替换成‘thumb’,然后拼接下载缩略图路径如下:

    文件路径为:/SD/Normal/F/FILE211229-163306F.MOV,其中含有'SD',替换拼接后的缩略图下载路径为:
    
    http://192.168.1.1/thumb/Normal/F/FILE211229-163306F.MOV
    
  • 方式二:文件路径中不含有‘SD’的,直接在文件路径前加‘/thumb’来拼接:

    文件路径为:/mnt/mmc/Normal/F/REC20201214-114131-23.mp4,下载缩略图路径为:
    
    http://192.168.1.1/thumb/mnt/mmc/Normal/F/REC20201214-114131-23.mp4
    

2.6.4 删除文件

  • 参数:文件列表中获取到的文件路径(name),其中分隔符'/'替换为‘$’,比如:$SD$Normal$F$FILE211229-163306F.MOV

  • 样例:

    http://192.168.1.1/cgi-bin/Config.cgi?action=del&property=$SD$Normal$F$FILE211229-163306F.MOV
    

2.7 事件通知的标准化说明

设备发生事件变化,如存储卡插拔等通过Socket(UDP,端口49142)实时上报给App

  • 样例:

    SD_STATUS = ON
    
  • 支持的事件:

    | 事件名称 | 关键字 | 状态说明 | | ---- | --- | ---- | | 卡状态 | SD_STATUS | ON:正常;OFF:卡异常,包括拔卡 | | 录像时长 | rec_time | 单位:毫秒,格式:action=rec_time\ntime=%d\n | | 加锁状态 | LockStatus | ON:加锁中;OFF:未加锁 | | 录像时录音状态 | SoundRecord | ON:录音;OFF:不录音 | | 设备将关机 | POWER | 不管返回什么,App都将断开连接 | | 设备关闭WiFi | WIFI | 不管返回什么,App都将断开连接 |

3. 其他

3.1 GPS相关协议

请联系我们,获取GPS协议文档

3.2 差异化适配

  • 需要在设备代码中预置区分此类差异化设备的标识;
  • 联系我们进行适配;

3.3 FAQ

3.3.1 怎么显示停车监控的文件夹内容?

参见 2.6.2 获取文件列表

3.3.2 怎么支持双路摄像头预览切换?

参见 2.1.2 双路摄像头

3.3.3 怎样让APP里面的某个设置项显示与否

公版app设置项显示的条件有两个:

  • 从Camera.Menu.*中能查询到了对应的设置属性key;

    • 如果是开关,该设置属性key对应的值是ON 或 OFF,则会显示该开关项,否则不显示;
    • 如果是下拉选项,则需要比对key对应的value值是否在上面接口定义中参数范围内,如果在,则显示,如果不做参数列表内,则不显示该设置项

    举例如下:

  • 开关类:

    http://192.168.1.1:80/cgi-bin/Config.cgi?action=get&property=Camera.Menu.*
    ……
    Camera.Menu.SoundRecord=ON
    ……
    

    比如:mic录音这个设置开关,只有上面的Camera.Menu.*查询出了Camera.Menu.SoundRecord,且 值为 ON 或者 OFF中的其中一个,该设置项在app上才会出现,否则app会隐藏该设置项;

  • 选项类:

    http://192.168.1.1:80/cgi-bin/Config.cgi?action=get&property=Camera.Menu.*
    ……
    Camera.Menu.LoopingVideo=3MIN
    ……
    

    比如:''循环录制时长''这个设置选项,只有上面的Camera.Menu.*查询出了Camera.Menu.LoopingVideo,且 值为 [1MIN,3MIN,5MIN]中的其中一个,该设置项在app上才会出现,否则app会隐藏该设置项;

3.3.4 预览有花屏(马赛克)怎么办?

如果预览是有低概率花屏,这是网络抖动造成的丢包,请设置RTSP底层通讯协议为TCP,通过以下方式返回tcp即可,当前APP默认会采用udp(因为发现有部分设备不支持tcp);如果已经是tcp还是花屏,请联系我们处理;

  • 读属性key:Camera.Preview.RTSP.over

  • 参数:"tcp", "udp"

  • 样例:

    http://192.168.1.1:80/cgi-bin/Config.cgi?action=get&property=Camera.Preview.RTSP.over
    
    ……
    Camera.Preview.RTSP.over=tcp
    ……
    

3.4 设备能力集查询

​ 为更好的进行机器功能的适配,我们定义app需要的特定能力识别,以便APP自动进行部分功能适配,设备端根据真实的设备情况按下面的定义返回字符串;

  • 读属性key:Camera.Menu.DeviceCapability

  • 操作类型:get

  • 返回值:"0100"

  • 样例:

    http://192.72.1.1/cgi-bin/Config.cgi?action=get&property=Camera.Menu.DeviceCapability
    
    0
    OK
    Camera.Menu.DeviceCapability=0100
    

其中String自动的每一位代表1个业务能力(方案商实现时,如果对某位的业务不支持或是不了解,默认填0):

第0位:GPS数据业务

- 0 不支持GPS
- 1 仅支持下载后的视频文件GPS数据获取;
- 2 支持下载后的视频文件、在线回放的视频文件GPS数据获取;
- 3 支持下载后的视频文件、在线回放的视频文件、实时画面GPS数据获取;
- 4 支持下载后的视频文件、实时画面GPS数据获取;

第1位:1-运动相机,0-记录仪(默认)

第2位:1-不支持停车监控相册,0-支持停车监控相册(默认)

第3位:1-该设备支持通过APP操作文件加锁,0-不支持(默认)

第4位:1- 不支持删除加锁文件;0-支持删除加锁文件(默认); 如果有需求不能删除加锁文件,修改此字段;

第5位:部分芯片拍照需要切换到拍照模式的,1- 不切换模式,直接录像码流抓拍,0-(默认)切换模式进行抓拍或是当前默认方式

第6位:回放是否使用rtsp的流,如果部分设备回放码率特别大,wifi传输会造成回放卡顿,需要使用rtsp播放小码流时,可以修改此字段(回放是否支持rtsp还需要设备端支持);

0-(默认)-不使用rtsp的流,使用文件下载播放的方式, 
1- 使用RTSP的协议TCP播放回放实时流  
2- 使用RTSP的协议UDP播放回放实时流;

第7位:是否支持拍照功能,0(默认)-支持拍照功能, 1- 不支持拍照,只支持录像;部分设备资源不够,不支持拍照功能时,修改此字段,app上将会隐藏拍照按钮;

第8位:是否支持APP修改wifi名或wifi密码

- 0(默认)- 支持修改WiFi名和WiFi密码,
- 1-不支持修改WiFi名,支持修改WiFi密码,此时WiFi名将会隐藏;
- 2-支持修改WiFi名,不支持修改WiFi密码,此时WiFi密码将会隐藏;
- 3.不支持修改WiFi名,且不支持修改WiFi密码,此时WiFi名和密码都将会隐藏;

第9位:0(默认)- 不支持文件拷贝,1-支持文件拷贝

第10位:是否使用其他非HTTP的方式下载设备视频文件,0(默认)-App自己决定下载策略,1-固定使用原厂sdk的方式下载设备视频文件,2-固定使用http下载设备视频文件,当前主要是针对杰理方案,非特殊需求,请使用默认值0

第n位:待补充

4.补充

如果缺少适配的方式,请联系我们进行补充到公版

Copyright © 小帧科技 2024 修订时间: 2024-05-12 08:40:51

results matching ""

    No results matching ""