1. 概述
本文档描述当前公版APP兼容联咏方案的CMD和设置项,如果想要设备更好的匹配我们公版APP,请认真核对下面的协议;
对1.0版本的公版APP主要有以下几个功能模块:
实时预览:按联咏官方定义,使用RTSP协议,支持over tcp 或是 udp其中之一即可;rtsp地址 通过CMD 2019中的响应MovieLiveViewLink字段:
http://192.168.1.254/?custom=1&cmd=2019 <?xml version="1.0" encoding="UTF-8" ?> <LIST> <MovieLiveViewLink>rtsp://192.168.1.254/xxx.mov</MovieLiveViewLink> <PhotoLiveViewLink>http://192.168.1.254:8192</PhotoLiveViewLink> </LIST>
或是固定为:
rtsp://192.168.1.254/xxx.mov
如果需要指定底层的通讯协议是tcp 或 udp,需要增加over字段,可选参数:tcp 或是 udp,当如果预览有花屏时,可以尝试设置为‘tcp',如下:
http://192.168.1.254/?custom=1&cmd=2019 <?xml version="1.0" encoding="UTF-8" ?> <LIST> <MovieLiveViewLink>rtsp://192.168.1.254/xxx.mov</MovieLiveViewLink> <PhotoLiveViewLink>http://192.168.1.254:8192</PhotoLiveViewLink> <Over>tcp</Over> </LIST>
文件列表和回放 文件列表通过联咏官方文档CMD 3015来获取; 只要设备端支持http server 即可支持视频的在线回放,但要注意:http server 要支持http的range 0-xx的协议;
拍照、录像 按联咏的官方CMD即可完成对接;
设置项 联咏的官方定义了部分设置项,但各个方案商厂家进行了设置项的扩展,不同的厂家会存在设置项的CMD的冲突(相同的CMD在不同的方案商上代表的含义不一样),对此当前有两种解决方案可以完成适配:
- 按下表中的“命令字(当前使用的)”,进行匹配, 其中如果是“6013#9967#3040” 由‘#’进行分割的多个,只要方案商定义的是其中之一即可适配;
- 用最后一列“6帧探官方”的,我们即可适配;
2. 当前支持
2.1 概述
本表描述了当前支持的各个功能和设置对应的CMD,此处列出了CMD和业务对应关系,只要对应一致,即可功能正常;下表的各个字段含义:
- 命令字(当前使用的): 当前适配的CMD,如果设备方案中使用的”命令字“和 “命令功能”和此表对应,则APP能够正常显示功能,否则则需要调整;
- 命令功能: 该CMD对应的业务功能描述;
- CMD类型:我们将CMD分为3类来进行统一描述(操作、选项、开关)
- 选项普通的业务操作,比如:拍照、开始录像、停止录像等;
- 设置界面中的开关类设置项,比如:mic的开关,时间水印开关;
- 设置界面中的下拉选项类设置项,比如:录像时长(1分钟、3分钟、5分钟)
- 是否官方文档中的: 联咏提供有一份官方的协议文档,其中定义大部分的官方CMD,官方定义的CMD,以官方为准;
- 6帧探官方定义:为了更好的方便和统一个方案商新增CMD,6帧探官方定义了一套,公版APP会优先适配;
- 备注: 某些CMD的特殊扩展含义描述;
2.2 CMD表格
命令字 (当前使用的) | 命令功能 | CMD 类型 | 备注 | 是否官方文档中的 | 6帧探官方定义 - |
---|---|---|---|---|---|
1001 | 拍照 | 操作 | 当前未使用,当时使用的是 2017 | 官方 | 沿用官方 |
1002 | 拍照图像质量 | 选项 | 官方 | 沿用官方 | |
2001 | 启动、停止录制 | 操作 | 官方 | 沿用官方 | |
2002 | 录制视频分辨率 | 选项 | 设置循环录像视频文件的分辨率 | 官方 | 沿用官方 |
2003 | 录制文件时长 | 选项 | 1分钟、3分钟等 | 官方 | 沿用官方 |
2004 | 宽动态 | 开关 | 官方 | 沿用官方 | |
2005 | 曝光度 | 选项 | 官方 | 沿用官方 | |
2006#9139 | 移动侦测 | 开关 | 运动相机用9139 | 官方 | 2006/9139 |
2007 | mic开关 | 开关 | 官方 | 沿用官方 | |
2008 | 时间水印 | 开关 | 官方 | 沿用官方 | |
2011 | 碰撞灵敏度 | 选项 | gsensor的灵敏度设置 | 官方 | 沿用官方 |
2012 | 自动录制 | 开关 | 官方 | 沿用官方 | |
2013 | 设置录制码率 | 操作 | 很少使用 | 官方 | 沿用官方 |
2015 | 启动、停止预览 | 操作 | 部分设备需要,在重启RTSP时调用 | 官方 | 沿用官方 |
2016 | 获取录制状态(获取当前录制时长) | 操作 | 0表示当前没有在录制,>0表示在录制 | 官方 | 沿用官方 |
2017 | 拍照命令(当前使用的) | 操作 | 官方 | 沿用官方 | |
2026 | 倾斜锁档 | 开关 | [可选]运动相机场景使用 | 非官方 | 9400 |
2027 | 智能节电 | 开关 | [可选]运动相机场景使用 | 非官方 | 9401 |
2029 | mic录音灵敏度 | 选项 | [可选]运动相机去风噪使用 | 非官方 | 9100 |
2030 | 图像水平镜像 | 开关 | 非官方 | 9101 | |
2031 | 速度水印 | 开关 | 是否在视频水印上显示速度 | 非官方 | 9102 |
2032 | 录制视频的编码方式 | 选项 | H264、H265 | 非官方 | 9103 |
3001 | 设置工作模式:拍照/录制/回放 | 操作 | 官方 | 沿用官方 | |
3002 | 获取设备当前支持的命令字列表 | 操作 | 官方 | 沿用官方 | |
3003 | WiFi设备名称SSID | 操作 | 官方 | 沿用官方 | |
3004 | wifi密码修改 | 操作 | 官方 | 沿用官方 | |
3005 | 同步设置设备的日期 | 操作 | 官方 | 沿用官方 | |
3006 | 同步设置设备的时间 | 操作 | 官方 | 沿用官方 | |
3008 | 设置设备的语言 | 选项 | 官方 | 沿用官方 | |
3009 | TV输出模式切换 :NTSC/PAL | 选项 | 很少使用 | 官方 | 沿用官方 |
3010 | 格式化 | 操作 | 官方 | 沿用官方 | |
3011 | 恢复出厂设置 | 操作 | 官方 | 沿用官方 | |
3012 | 获取固件版本 | 操作 | 官方 | 沿用官方 | |
3014 | 获取当前每个设置项的当前值 | 操作 | 官方 | 沿用官方 | |
3015 | 获取设备上文件列表 | 操作 | 参见《2.3 关于记录仪文件特殊性》 | 官方 | 沿用官方 |
3016 | 心跳检测 | 操作 | 官方 | 沿用官方 | |
3017 | 获取设备的存储卡的基本信息 | 操作 | 官方 | 沿用官方 | |
3019 | 获取当前的电池状态:充电中、未充电 | 操作 | 官方 | 沿用官方 | |
3021 | 保存所有配置,在退出设置界面时 ,部分机型需要调用此方法,机器才能写配置到flash | 操作 | 官方 | 沿用官方 | |
3023 | app进入设备连接,踢出上次的用户 | 操作 | 官方 | 沿用官方 | |
3024 | SD是否插入状态 | 操作 | 官方 | 沿用官方 | |
3028 | 获取当前摄像头的通道、多画面模式切换 | 操作 | 官方 | 沿用官方 | |
3031 | 获取当前设备支持的所有设置项和对应的选项列表 | 操作 | 官方 | 沿用官方 | |
3035 | app退出设备连接 | 操作 | 非官方 | 9104 | |
3101 | 停车监控开关(是否启用) | 开关 | 非官方 | 9105 | |
4003 | 删除设备文件 | 操作 | 官方 | 沿用官方 | |
3038#8005 | 停车监控碰撞灵敏度 | 选项 | 非官方 | 9106 | |
6013#9967#3040 | 停车监控录像帧率 | 选项 | 1秒1帧等 | 非官方 | 9107 |
6015#9968#3041 | 停车监控时长设置 | 选项 | 12小时、24小时等 | 非官方 | 9108 |
6017 | 电压保护门限设置 | 选项 | 万汇的,没有选项值 | 非官方 | 9109 |
6019 | 格式化提醒方式选项 | 选项 | 关闭,提示,自动格式化 | 非官方 | 9110 |
6020 | 格式化提醒时间间隔设置选项 | 选项 | 15天/30天等 | 非官方 | 9111 |
8005 | 获取当前电池的具体电量 | 操作 | 0-100 | 非官方 | 9112 |
8006 | 设备是否接入GPS | 操作 | 非官方 | 9113 | |
8009 | speaker(扬声器)开关 | 开关 | 非官方 | 9114 | |
8018 | 获取设备插入的多个存储卡列表 | 操作 | 参见《多存储卡支持》 | 非官方 | 9115 |
8019 | 选择当前要查看的SD卡 | 操作 | 参见《多存储卡支持》 | 非官方 | 9116 |
8020 | 设置默认使用哪个SD卡 | 操作 | 参见《多存储卡支持》 | 非官方 | 9117 |
8060#8021 | 设备进入屏保时间 | 选项 | 非官方 | 9118 | |
8020 | AI驾驶辅助 | 开关 | 非官方 | 9119 | |
8022 | 设备的主题设置 | 选项 | 非官方 | 9120 | |
8023 | 语音控制开关 | 开关 | 非官方 | 9121 | |
8052 | speaker音量 | 选项 | 非官方 | 9122 | |
9001 | 电压保护门限设置选项 | 选项 | 按联咏标准的选项值 | 非官方 | 9123 |
9973 | 情绪提醒 | 开关 | yilu的E88 | 非官方 | 9124 |
9984 | 图像360翻转 | 开关 | 非官方 | 9125 | |
9092 | LER模式 | 开关 | yilu的E88 | 非官方 | 9126 |
9093 | 超级夜景 | 开关 | yilu的E88 | 非官方 | 9127 |
9128 | ADAS选项 | 选项 | 非官方 | 9128 | |
9129 | 速度单位,其中 0为KMH、1为MPH | 选项 | 非官方 | 9129 | |
9130 | 视频文件格式,0-MP4,1-TS | 选项 | 非官方 | 9130 | |
9132 | 光源频率 | 选项 | 如:50Hz,设备端返回什么,App就显示什么 | 6帧探官方 | 9132 |
9133 | 对视频进行加锁 | 操作 | 非官方 | 9133 | |
2019 | 获取RTSP预览地址 | 操作 | 官方 | 沿用官方 | |
9090 | 获取设备的型号信息 | 操作 | 参见 品牌厂家接口适配 | 6帧探官方 | 9090 |
9091 | 获取设备的唯一ID | 操作 | 参见 品牌厂家接口适配 | 6帧探官方 | 9091 |
9095 | 查询当前设备上有几个摄像头 | 操作 | 参考《多路摄像头识别》 | 6帧探官方 | 9095 |
9134 | 慢动作播放视频(OFF/2X/4X) | 选项 | 6帧探官方 | 9134 | |
9135 | 按键音 | 开关 | 6帧探官方 | 9135 | |
8038#9955 | 开机提示音开关 | 开关 | 1-开启 0-关闭 (开关机声音控制) | 6帧探官方 | 9136 |
9137 | 停车监控模式 | 选项 | 非官方 | 9137 | |
9138 | 移动侦测灵敏度 | 选项 | 6帧探官方 | 9138 | |
9140 | 震动录像开关(停车监控时) | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9140 |
9141 | 疲劳驾驶(疲劳提醒时长设置) | 选项 | 类似OFF/1H/2H/3H | 6帧探官方 | 9141 |
9142 | 后路镜像(后路画面是否镜像) | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9142 |
9143 | 设备能力集查询 | 操作 | 见描述 | 6帧探官方 | 9143 |
9144 | 超速震动提醒 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9144 |
9145 | 缩时录影 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9145 |
9146 | 时区 | 选项 | 如:GMT -12,设备端返回什么,App就显示什么 | 6帧探官方 | 9146 |
9147 | 前路上下翻转 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9147 |
9148 | 内镜头颜色模式 | 开关 | 0-黑白 1-自动 2-彩色 | 6帧探官方 | 9148 |
9149 | 纯录音 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9149 |
9150 | 循环录像 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9150 |
9151 | 超速提醒 | 选项 | 如:100km/h,设备端返回什么,App就显示什么 | 6帧探官方 | 9151 |
9152 | 实时画面显示 | 选项 | front-前路 back-后路 front-back-画中画 | 6帧探官方 | 9152 |
9153 | 强制录像 | 开关 | 1-无连接后,设备自动恢复录像 0-关闭 | 6帧探官方 | 9153 |
9154 | 24小时制 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9154 |
9155 | HUD模式 | 选项 | off-关闭 speed-速度 clock-时间 speed-direction-clock-速度、方向和时间 | 6帧探官方 | 9155 |
9156 | 车内录像 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9156 |
9157 | 前镜头EV | 选项 | 同2005 | 6帧探官方 | 9157 |
9158 | 后镜头EV | 选项 | 同2005 | 6帧探官方 | 9158 |
9159 | GPS模式 | 选项 | off-关闭 track-轨迹记录 sync-时间同步后关闭GPS | 6帧探官方 | 9159 |
9160 | 震动 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9160 |
9161 | 蜂鸣器 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9161 |
9162 | 录像警示灯 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9162 |
9163 | 夏令时 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9163 |
9164 | 其它路型号和版本号 | 开关 | 有多路镜头,且各路型号和版本不同,需要放开升级时用 | 6帧探官方 | 9164 |
9165 | 后路录像 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9165 |
9166 | 车牌号 | 输入 | App单独查询此CMD当前状态,PLATE字段返回当前值,如果不支持此CMD,3002接口不要返回 | 6帧探官方 | 9166 |
9167 | 声控词条 | 选项 | 非设置项,只做展示,设备端返回什么,App就显示什么 | 6帧探官方 | 9167 |
9168 | 时间格式 | 选项 | 如:yyyy-MM-dd,设备端返回什么,App就将其转换为当前时间显示 | 6帧探官方 | 9168 |
9169 | GPS水印 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9169 |
9170 | 型号水印 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9170 |
9171 | 是否接入ACC | 状态 | 非设置项,3014接口查询返回当前状态即可 | 6帧探官方 | 9171 |
9172 | 上電自動開機 | 开关 | 1-开启 0-关闭 | 6帧探官方 | 9172 |
关于 “官方”的CMD详情,请参考 《NT9666x Wi-Fi Command User Guide.pdf》;
CMD为 “6013#9967#3040” 表示:只用对应其中的一个CMD(比如:3040),就表示支持该项目;
2.3 关于记录仪文件特殊性
2.3.1 停车监控视频
现在大部分的设备都支持停车监控,app中记录仪文件中有个独立的文件夹:“停车视频”,为了让停车监控时所录制的文件适配到“停车视频”文件夹中,设备只要满足如下条件即可(不区分大小写):
CMD3015上报APP的文件路径中含有“MOVIE_TL" 、"parking"、"24HOUR"、"_T"之一即可;
2.3.2 紧急视频:
APP会对碰撞视频用单独的文件夹存放,怎么识别出文件列表的视频是碰撞视频,满足以下条件其一(不区分大小写)即可:
1. 文件路径中含有“RO"、"EMR"、"SOS"之一;
2. 文件只读;
2.3.3 显示前后视频标记:
APP会对前后路的文件显示标签,让用户可以很容易区分出是哪路摄像头记录的视频文件: 前后路文件区分,以下条件具备其一即为后路文件(不区分大小写:
1. 文件名以"b"结尾); 比如xxxxxx_b.mp4 或 2019121223212B.mp4
2. 文件路径中含有”_rear“、"emr_e"、"movie_e" ,比如:/movie/movie_e/2019121223212B.mp4
2.4 录像状态
APP上会显示当前的录制状态,录制状态通过2016获取,官方文档描述:
Command: http://192.168.1.254/?custom=1&cmd=2016
Parameter: Null
<?xml version="1.0" encoding="UTF-8" ?>
- <Function>
<Cmd>2016</Cmd>
<Status>0</Status>
<Value>0</Value>
</Function>
Note:
1. The value 0 means is not recording
2. If cyclic record on, the recording time would reset depend on cyclic period.
value 为0表示当前未启动录制;大于0 表示正在录制中
3. 部分功能补充说明
3.1 多存储卡支持
3.1.1 获取当前存储信息列表
请求参数
- CMD: 8018
- 请求样例:
http://192.168.1.254/?custom=1&cmd=8018
响应结果参数说明
变量名 | 含义 | 说明 |
---|---|---|
Index | 存储卡的编号 | 0 - EMMC,1- TF Card 1,2- TF Card 2 ,切换时用作下发参数 |
Name | 存储卡的名称 | 举例:[EMMC,TF Card 1,TF Card 2] |
Type | 存储卡的类型 | 0- EMMC,1-TFCard |
FreeSize | 卡的剩余空间(Byte) | 剩余可用空间,单位:字节 |
TotalSize | 卡的总空间(Byte) | 存储卡总大小,单位:字节 |
响应结果举例:
<?xml version="1.0" encoding="UTF-8" ?>
<Function>
<Cmd>8018</Cmd>
<Status>0</Status>
<List>
<Option>
<Index>0</Index>
<Name>eMMC</Name>
<FreeSize>14990376960</FreeSize>
<TotalSize>14990442496</TotalSize>
</Option>
<Option>
<Index>1</Index>
<Name>SD Card</Name>
<FreeSize>55450075136</FreeSize>
<TotalSize>62247665664</TotalSize>
</Option>
</List>
</Function>
3.1.2 切换查看存储文件的存储卡
请求参数
- CMD: 8019
- 请求样例:
http://192.168.1.254/?custom=1&cmd=8019&par=0
响应结果参数说明
变量名 | 含义 | 说明 |
---|---|---|
par | 选择的存储卡序号 | 使用8018中的Index值进行切换 |
响应结果举例:
<?xml version="1.0" encoding="UTF-8" ?>
<Function>
<Cmd>8019</Cmd>
<Status>0</Status>
</Function>
3.2. 电压选项
3.2.1 支持电压选项
电压选项通常有12V 和 24V两种场景:
当设备场景下只支持其中一种时采用9001的方式进行设置,这是联咏的通用的某个设置的选项;
如果是 12V和24V都同时支持,我们希望通过我们自定义的布局实现,而非当前底部弹框(选项太多了)
- 当前已经实现了一种方案(万汇的),app只能获取到当前值,其他app写死处理的;
- 暂未实现,只是假设: 设备列出所有选项,app分析出12V和24V,进入自定义界面?
请求参数
- CMD: 9001
- 请求样例:
http://192.168.1.254/?custom=1&cmd=9001&par=0
响应结果参数说明
变量名 | 含义 | 说明 |
---|---|---|
par | 选项值对应的序号,从3031中的9001获取 | 使用9001中的Index值进行设置 |
响应结果举例:
<?xml version="1.0" encoding="UTF-8" ?>
<Function>
<Cmd>9001</Cmd>
<Status>0</Status>
</Function>
3.3 多路摄像头识别
怎么让APP知道设备当前有几个摄像头,以便app支持多镜头切换的功能,按下面的方式实现其一即可;
方式一:使用CMD3028的响应结果
联咏官方CMD中没有多路摄像头,但是有"Setup PIP Style"的CMD 3028,APP根据该CMD进行是否支持多路摄像头的切换处理;
切换多路摄像头
- CMD: 3028 (Set PIP (Picture in Picture) style for live view streaming (HTTP + MJPG))
- 请求样例:
其中的参数par:http://192.168.1.254/?custom=1&cmd=3028&par=0
- 0: 双路中的前路画面
- 1:双路中的后路画面
- 2:前后路画面画中画模式(前路是主画面);
- 3:前后路画面画中画模式(后路是主画面);
APP是怎么识别有多个摄像头
- 通过3031中获取设置支持的设置项中,返回3028,且返回的3028的选项个数>=2;
举例:
请求:
http://192.168.1.254:80/?custom=1&cmd=3031&str=all
响应结果中部分:
……
<Item>
<Cmd>3028</Cmd>
<Name>PIP_VIEW</Name>
<MenuList>
<Option>
<Index>0</Index>
<Id>1T1F</Id>
</Option>
<Option>
<Index>1</Index>
<Id>2T2F</Id>
</Option>
<Option>
<Index>2</Index>
<Id>1T1B2S</Id>
</Option>
<Option>
<Index>3</Index>
<Id>1T1S2B</Id>
</Option>
</MenuList>
……
方式二:自定义CMD 9095
- CMD: 9095
- 操作:查询
Command: http://192.168.1.254/?custom=1&cmd=9095
<?xml version="1.0" encoding="UTF-8" ?>
- <Function>
<Cmd>9095</Cmd>
<Status>0</Status>
<Value>1</Value>
</Function>
- CMD : 9095
- Vaule: 镜头数
- 1:单镜头
- 2:两个镜头
3.4 设备能力集查询
- CMD: 9143
- 操作:查询
Command: http://192.168.1.254/?custom=1&cmd=9143
<?xml version="1.0" encoding="UTF-8" ?>
<Function>
<Cmd>9143</Cmd>
<Status>0</Status>
<String>1000</String>
</Function>
其中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位:待补充