4G/5G执法记录仪接口说明
4G/5G执法记录仪接口文档
1. 登录认证接口
1.1 接口说明
设备端登录时,调用案管系统当前登录认证接口。案管系统需校验登录账号、设备名称、所属分局是否与设备管理接口中已配置的数据一致。校验通过后返回登录 token;token 有效期为 24 小时,或在用户签退后失效。
移动视频类设备&平台国标GB28181输入/输出GB28181平台对接、RTSP/RTMP输入&输出, https://www.besovideo.com/detail?t=1&i=229
多源统一视频融合通信可视指挥调度平台VMS/smarteye概述,https://www.besovideo.com/detail?t=1&i=240
关于移动视频-无线图传产品中的录像机制-云端录像-录像计划、自动录像、主动上传、下载计划-录像导出等说明,https://www.besovideo.com/detail?t=1&i=146
关于移动视频-无线图传系统中的语音对讲、集群通话(有用户权限差异和无用户权限差异),https://www.besovideo.com/detail?t=1&i=149
客户私有化部署自建4G图传流媒体服务器平台需求性能估算,https://www.besovideo.com/detail?t=1&i=91
关于移动视频管理平台的平台对接常见问题,https://www.besovideo.com/detail?t=1&i=95
固定点监控及第三方网络摄像头设备接入smarteye平台与移动视频监控的融合, https://www.besovideo.com/detail?t=1&i=152
移动视频无线图传系统里面的RTSP/ONVIF流输出的实现机制,https://www.besovideo.com/detail?t=1&i=156
移动视频无线图传系统里面的RTMP流输出的实现机制,https://www.besovideo.com/detail?t=1&i=157
1.2 请求信息
|
项目 |
说明 |
|
接口地址 |
以案管系统当前接口地址为准 |
|
请求方式 |
POST |
|
Content-Type |
application/json |
1.3 请求参数
|
字段名 |
类型 |
可否修改 |
是否必填 |
说明 |
|
deviceSn |
VARCHAR |
否 |
是 |
设备唯一标识,关联设备表,不可编辑 |
|
userName |
VARCHAR |
否 |
是 |
登录用户名,与案管系统用户 id 同步 |
|
password |
VARCHAR |
否 |
是 |
用户密码,不与案管系统同步,设备端配置时支持修改 |
1.4 请求示例
{
"deviceSn": "DEVICE_SN_001",
"userName": "user001",
"password": "123456"
}
1.5 返回参数
|
字段名 |
说明 |
|
data |
返回 token,24 小时或签退失效 |
|
msg |
提示信息 |
|
code |
响应状态码,200 成功,其他为失败 |
1.6 成功返回示例
{
"code": 200,
"msg": "登录成功",
"data": "eyJhbGciOiJIUzI1NiJ9.xxxxx"
}
1.7 失败返回示例
{
"code": 500,
"msg": "登录账号、设备名称或所属分局与设备管理配置不一致",
"data": null
}
1.8 业务规则
1. `deviceSn`、`userName`、`password` 均不能为空。
2. `deviceSn` 必须能关联到设备管理接口中已配置的设备信息。
3. 登录账号、设备名称、所属分局需与设备管理接口配置数据一致。
4. 校验失败时不返回 token,并通过 `msg` 返回失败原因。
5. token 有效期为 24 小时;用户签退后,token 立即失效。
2. 执法仪视频分片上传接口
2.1 初始化执法仪视频分片上传
|
项目 |
说明 |
|
接口地址 |
`/video/initUpload` |
|
请求方式 |
POST |
|
Content-Type |
application/json |
2.1.1 请求参数
|
字段名 |
类型 |
可否修改 |
是否必填 |
说明 |
|
caseId |
VARCHAR |
否 |
是 |
案件ID,用于将视频附件关联到案件 |
|
deviceSn |
VARCHAR |
否 |
是 |
设备唯一标识,用于标识上传视频的执法仪设备 |
|
fileName |
VARCHAR |
否 |
是 |
原始视频文件名,系统会根据文件后缀校验视频格式 |
|
fileSize |
INTEGER |
否 |
是 |
视频文件总大小,单位字节,用于计算分片总数和完成上传时校验文件大小 |
|
partSize |
INTEGER |
是 |
否 |
分片大小,单位字节;不传时默认 20MB,允许范围 1MB 到 100MB |
|
fileMd5 |
VARCHAR |
否 |
否 |
视频文件整体 MD5;传入后完成上传时会重新计算视频 MD5 并校验一致性 |
|
duration |
INTEGER |
否 |
是 |
视频时长,单位秒 |
|
token |
VARCHAR |
否 |
是 |
身份标识,用于标识设备端登录认证后的身份 |
|
lat |
DECIMAL |
否 |
是 |
纬度坐标,范围 -90 到 90 |
|
lng |
DECIMAL |
否 |
是 |
经度坐标,范围 -180 到 180 |
2.1.2 请求示例
{
"caseId": "CASE_001",
"deviceSn": "DEVICE_SN_001",
"fileName": "evidence.mp4",
"fileSize": 104857600,
"partSize": 20971520,
"fileMd5": "d41d8cd98f00b204e9800998ecf8427e",
"duration": 120,
"token": "eyJhbGciOiJIUzI1NiJ9.xxxxx",
"lat": 39.9042,
"lng": 116.4074
}
2.1.3 返回参数
|
字段名 |
说明 |
|
code |
响应状态码,200 成功,其他为失败 |
|
msg |
提示信息 |
|
data.uploadId |
上传会话ID,后续上传分片、完成上传、取消上传均需传入 |
|
data.partSize |
本次上传实际使用的分片大小,单位字节 |
|
data.totalPartCount |
总分片数,客户端需按该数量上传全部分片 |
|
data.maxPartSize |
单个分片最大允许大小,单位字节 |
2.1.4 成功返回示例
{
"code": 200,
"msg": "成功",
"data": {
"uploadId": "9f4a1a4f5d5342c1b4a1d0d7c8e9f001",
"partSize": 20971520,
"totalPartCount": 5,
"maxPartSize": 104857600
}
}
2.2 上传执法仪视频分片
|
项目 |
说明 |
|
接口地址 |
`/video/uploadPart` |
|
请求方式 |
POST |
|
Content-Type |
multipart/form-data |
2.2.1 请求参数
|
字段名 |
类型 |
可否修改 |
是否必填 |
说明 |
|
uploadId |
VARCHAR |
否 |
是 |
初始化接口返回的上传会话ID,用于定位本次视频上传任务 |
|
partNumber |
INTEGER |
否 |
是 |
当前分片序号,从 1 开始,不能大于初始化接口返回的 `totalPartCount` |
|
file |
FILE |
否 |
是 |
当前分片文件内容;非最后一个分片大小不能超过初始化时使用的 `partSize`,任一分片不能超过 `maxPartSize` |
2.2.2 请求示例
POST /video/uploadPart
Content-Type: multipart/form-data
uploadId=9f4a1a4f5d5342c1b4a1d0d7c8e9f001
partNumber=1
file=@evidence.part1
2.2.3 返回参数
|
字段名 |
说明 |
|
code |
响应状态码,200 成功,其他为失败 |
|
msg |
提示信息 |
|
data.uploadId |
上传会话ID |
|
data.partNumber |
本次上传成功的分片序号 |
|
data.uploaded |
当前已上传分片数量 |
|
data.totalPartCount |
总分片数 |
2.2.4 成功返回示例
{
"code": 200,
"msg": "成功",
"data": {
"uploadId": "9f4a1a4f5d5342c1b4a1d0d7c8e9f001",
"partNumber": 1,
"uploaded": 1,
"totalPartCount": 5
}
}
2.3 完成执法仪视频上传
|
项目 |
说明 |
|
接口地址 |
`/video/completeUpload` |
|
请求方式 |
POST |
|
Content-Type |
application/json |
2.3.1 请求参数
|
字段名 |
类型 |
可否修改 |
是否必填 |
说明 |
|
uploadId |
VARCHAR |
否 |
是 |
初始化接口返回的上传会话ID,用于合并该会话下全部分片 |
2.3.2 请求示例
{
"uploadId": "9f4a1a4f5d5342c1b4a1d0d7c8e9f001"
}
2.3.3 返回参数
|
字段名 |
说明 |
|
code |
响应状态码,200 成功,其他为失败 |
|
msg |
提示信息 |
|
data.flag |
完成上传标识,`true` 表示完成 |
|
data.uploadId |
上传会话ID |
|
data.fileInfoId |
文件信息ID,用于关联文件信息表记录 |
|
data.filePath |
FastDFS 文件路径 |
|
data.attPath |
附件路径,当前返回文件信息ID |
|
data.fileName |
视频文件名,不含文件后缀 |
2.3.4 成功返回示例
{
"code": 200,
"msg": "成功",
"data": {
"flag": true,
"uploadId": "9f4a1a4f5d5342c1b4a1d0d7c8e9f001",
"fileInfoId": "FILE_INFO_001",
"filePath": "group1/M00/00/00/evidence.mp4",
"attPath": "FILE_INFO_001",
"fileName": "evidence"
}
}
2.4 取消执法仪视频上传
|
项目 |
说明 |
|
接口地址 |
`/video/abortUpload` |
|
请求方式 |
POST |
|
Content-Type |
application/x-www-form-urlencoded |
2.4.1 请求参数
|
字段名 |
类型 |
可否修改 |
是否必填 |
说明 |
|
uploadId |
VARCHAR |
否 |
是 |
初始化接口返回的上传会话ID,用于清理该会话下的临时分片文件 |
2.4.2 请求示例
POST /video/abortUpload
Content-Type: application/x-www-form-urlencoded
uploadId=9f4a1a4f5d5342c1b4a1d0d7c8e9f001
2.4.3 返回参数
|
字段名 |
说明 |
|
code |
响应状态码,200 成功,其他为失败 |
|
msg |
提示信息 |
|
data.uploadId |
上传会话ID |
|
data.aborted |
取消上传标识,`true` 表示已清理临时分片 |
2.4.4 成功返回示例
{
"code": 200,
"msg": "成功",
"data": {
"uploadId": "9f4a1a4f5d5342c1b4a1d0d7c8e9f001",
"aborted": true
}
}
2.5 调用顺序和业务规则
1. 先调用 `/video/initUpload` 初始化上传,获取 `uploadId`、`partSize`、`totalPartCount`。
2. 按 `partNumber` 从 1 到 `totalPartCount` 调用 `/video/uploadPart` 上传所有视频分片。
3. 所有分片上传完成后,调用 `/video/completeUpload` 合并分片并上传至 FastDFS。
4. 上传过程中如需放弃本次上传,调用 `/video/abortUpload` 清理临时分片。
5. `uploadId` 只能由创建该上传会话的当前登录用户继续操作。
6. 如果初始化时传入 `fileMd5`,完成上传时会校验合并后视频文件的 MD5,不一致则完成上传失败。
7. 完成上传或取消上传后,系统会清理该上传会话的临时文件。
