1. 环境假设
在开始接口对接前,请确认您的系统环境满足以下要求:
-
摄像头/视频源:支持 RTSP 或 GB28181 协议的高清 IPC/NVR(1080P/4K 分辨率,H.264/H.265 编码,15~25fps)。
-
平台版本:AI 视频分析平台 v3.5+ 企业版(已开启 OpenAPI 开放网关)。
-
网络环境:第三方服务器与 AI 分析平台处于同局域网(或已打通跨网段专网/正向代理),网络延迟 \< 10\\text{ms}。
-
通信协议:HTTP/HTTPS(用于 RESTful API)、WebSocket / Webhook(用于实时告警回调)、RTSP/GB28181(用于视频流传输)。
-
操作系统与工具:Ubuntu 20.04/22.04 LTS 或 CentOS 7.9;调试工具推荐 Chrome 浏览器、Postman 或 cURL。
2. 接入原理
整个系统架构围绕视频流输入、计算处理与数据输出展开,各模块服务间关系如下:
视频源(IPC/NVR) ➔ (RTSP/GB28181 推流) ➔ AI视频分析平台(流媒体服务) ➔ (解码与帧抽取) ➔ 算法服务(推理引擎) ➔ (结构化结果与抓拍) ➔ 告警服务/事件总线 ➔ (API/Webhook) ➔ 第三方应用系统。
-
设备接口:第三方系统通过 API 告知平台"拉取哪里的视频流"。
-
算法任务接口:第三方系统通过 API 告知平台"用什么算法分析哪条流的哪个区域"。
-
告警接口:平台分析产生异常事件后,通过 Webhook 主动推送或提供 RESTful API 供第三方系统查询历史记录与抓拍图。
3. 完整配置步骤
步骤一:API 身份鉴权与 Token 获取
-
操作目的 :通过
AK/SK换取用于后续 RESTful 接口调用鉴权的 JWT Token。 -
操作方法:
在第三方服务端发起 HTTP POST 请求至鉴权接口:
POST /api/v1/auth/token
JSON{ "client_id": "your_app_key", "client_secret": "your_app_secret" } -
检查结果 :接口返回
200 OK,Payload 中包含access_token及expires_in(如 7200 秒)。后续所有 API 请求须在 Header 添加Authorization: Bearer <access_token>。
步骤二:视频设备接入与通道绑定(设备接口)
-
操作目的 :在 AI 视频分析平台中注册 IPC 设备并获取唯一
device_id。 -
操作方法:
调用设备创建接口
POST /api/v1/devices:
JSON{ "device_name": "车间一号摄像机", "protocol": "RTSP", "stream_url": "rtsp://admin:password@192.168.1.100:554/h264/ch1/main/av_stream", "location": "车间A区" } -
检查结果 :接口返回 HTTP 201,返回数据中包含生成的
device_id: "dev_9527",且设备状态字段status显示为online。
步骤三:查询算法能力并配置 ROI 检测区域
-
操作目的:获取平台支持的算法模型列表,并定义视频画面中的检测多边形区域(ROI)。
-
操作方法:
-
请求
GET /api/v1/algorithms获取支持的算法列表(如algo_helmet_detection)。 -
根据视频画面坐标系统(0~1 归一化坐标或像素坐标),构造 ROI 多边形节点 JSON。
-
-
检查结果 :获取到目标算法 ID,并确定 ROI 坐标数组,例如:
[[0.1, 0.1], [0.8, 0.1], [0.8, 0.8], [0.1, 0.8]]。
步骤四:创建并启动算法分析任务(算法任务接口)
-
操作目的:将算法服务、设备与检测区域绑定,开启实时 AI 分析任务。
-
操作方法:
调用任务创建接口
POST /api/v1/tasks:
JSON{ "task_name": "车间安全帽检测任务", "device_id": "dev_9527", "algorithm_id": "algo_helmet_detection", "roi_config": { "points": [[0.1, 0.1], [0.8, 0.1], [0.8, 0.8], [0.1, 0.8]] }, "confidence_threshold": 0.85, "cron_schedule": "* * * * *" } -
检查结果 :接口返回
task_id: "task_10086",请求GET /api/v1/tasks/task_10086查询状态,显示running。
步骤五:配置告警回调 Webhook(告警接口)
-
操作目的:注册第三方系统的 HTTP 接收端点,接收平台实时推送的告警 JSON。
-
操作方法:
调用订阅接口
POST /api/v1/alerts/subscriptions:
JSON{ "callback_url": "https://thirdparty.domain.com/api/v1/receive_alert", "secret": "webhook_signing_secret", "event_types": ["algo_helmet_detection", "person_intrusion"] } -
检查结果 :平台向
callback_url发送握手验证请求,第三方系统返回 HTTP 200,订阅绑定成功。
步骤六:告警历史记录查询与抓拍图获取(告警记录接口)
-
操作目的:第三方系统主动拉取、对账或回溯历史告警记录。
-
操作方法:
调用查询接口
GET /api/v1/alerts:GET /api/v1/alerts?device_id=dev_9527&start_time=1700000000&page=1&limit=20 -
检查结果 :返回 JSON 分页数据,包含告警时间、算法类型、置信度以及抓拍图片外链
snapshot_url(如[https://media.domain.com/snapshots/20260812/alert_01.jpg](https://media.domain.com/snapshots/20260812/alert_01.jpg))。
4. 参数说明
以下是 API 对接过程中的核心参数汇总:
| 参数类别 | 参数项 | 类型 / 示例 | 说明 |
|---|---|---|---|
| 鉴权配置 | Base URL | [https://ai-api.domain.com](https://ai-api.domain.com) |
API 开放网关接入根地址 |
| 鉴权配置 | Header | Authorization: Bearer <Token> |
RESTful API 身份认证鉴权头 |
| 设备参数 | protocol |
String (RTSP / GB28181) |
摄像头视频接入协议 |
| 设备参数 | stream_url |
String | RTSP 流媒体地址或 GB28181 国标 ID |
| 视频编码 | Codec / FrameRate | H.264 / 25fps |
视频流编码标准与推荐帧率 |
| 任务参数 | confidence_threshold |
Float (0.10 ~ 1.00) |
算法识别置信度阈值,推荐 0.80+ |
| 任务参数 | roi_config |
Array of Coordinates | 识别检测区域多边形顶点坐标集合 |
| 告警推送 | callback_url |
HTTPS URL | 第三方接收 Webhook 的 POST 接口 |
| 接口性能 | API Timeout | 5000ms |
客户端发起请求的超时时间设置 |
| 系统控制 | Rate Limit | 100 req/s |
OpenAPI 网关单 Client ID 频控限制 |
5. 截图建议
在整理项目集成规范或向团队交付 API 文档时,建议截取以下图形作为参考:
-
时序流程图(Sequence Diagram):展示第三方系统、AI API 网关、流媒体服务与算法服务之间的请求响应时序关系。
-
Postman/Swagger Token 请求界面 :展示
POST /api/v1/auth/token接口的请求头与返回的 JWT JSON 数据。 -
设备注册与状态监控图:截取通过 API 创建设备后,AI 平台管理后台【设备列表】中显示"在线/正常拉流"的界面。
-
算法任务创建与 ROI 绘制示意:展示 API 中传入的多边形归一化坐标在视频画面中的叠加框选效果。
-
Webhook 接收测试日志:截取第三方系统控制台或 mock 接收服务端收到事件 JSON Payload 的控制台打印日志。
6. 常见错误和排查
下表梳理了调用 AI 视频分析 API 时常遇见的 8 种异常情况及排查路径:
-
现象:HTTP 401 Unauthorized
-
可能原因 :Token 已过期,或者 Header 中未按规范携带
Bearer前缀。 -
排查方法 :检查
expires_in剩余有效时间;重新调用 Token 刷刷新接口,核对 Header 格式。
-
-
现象:HTTP 403 Forbidden
-
可能原因 :当前
client_id绑定的角色权限不足,无权操作该设备或任务 API。 -
排查方法:登录 AI 平台管理后台【角色权限】,为该 API 密钥开通设备与任务的写权限(Write Permission)。
-
-
现象:设备添加成功,但任务状态显示
Stream Error-
可能原因:RTSP 地址账号密码错误,或平台服务器无法与摄像头建立 TCP 554 端口连接。
-
排查方法 :在平台服务器执行
curl -v rtsp://<URL>或使用 VLC 播放器测试 RTSP 地址连通性。
-
-
现象:创建任务失败,返回
400 Invalid ROI Format-
可能原因 :ROI 数组格式不合法(如未闭合、顶点数
或坐标超出了
[0, 1]归一化范围)。 -
排查方法 :核对坐标值,确保数组格式符合
[[x1,y1],[x2,y2],[x3,y3]]且为纯数字。
-
-
现象:告警 Webhook 推送频繁失败,接口返回 Timeout
-
可能原因 :第三方系统的
callback_url处理逻辑为同步阻塞,耗时超过平台推送超时设置(默认 3 秒)。 -
排查方法 :将第三方 Webhook 接收端改造为"异步队列接收",收到请求即刻返回
200 OK,后续再异步处理业务逻辑。
-
-
现象:告警记录查询接口返回空数组
[]-
可能原因:时间戳参数格式错误(如传入了 13 位毫秒级时间戳,而 API 要求 10 位秒级时间戳)。
-
排查方法 :检查
start_time与end_time参数单位,确认时间区间内是否有触发记录。
-
-
现象:抓拍图 URL 无法在浏览器打开 (404 或 Connection Refused)
-
可能原因 :平台配置的媒体服务静态文件 Base URL 填入了内网回环地址(如
http://127.0.0.1:9000)。 -
排查方法 :在平台【系统参数】中将
media_base_url修改为公网或局域网可达的域名/IP。
-
-
现象:HTTP 429 Too Many Requests
-
可能原因:第三方系统高频轮询 API(如每秒请求数百次告警查询接口),触发网关 Rate Limiter。
-
排查方法 :降低轮询频率,优先改用 Webhook 订阅模式 替代轮询模式。
-
7. 性能和安全注意事项
-
性能优化:
-
Token 本地缓存 :将获取到的
access_token缓存在第三方系统的 Redis/内存中,仅在即将过期时(如倒计时 60 秒)重新获取,避免频繁请求 Auth 接口。 -
Webhook 异步解耦:接收告警回调的接口必须做解耦处理,避免因第三方业务代码阻塞引发平台重试风暴。
-
-
安全防御:
-
传输层加密 :生产环境中,必须全面启用 HTTPS 协议传输 API 请求,防止
client_secret或 Token 被中间人劫持。 -
Webhook 签名验签:在 Webhook 推送中开启 HMAC-SHA256 签名机制,第三方系统在收到推送后须对 Header 中的签名进行校验,防范伪造告警攻击。
-
8. 延伸阅读/产品能力
除了基础的 RESTful API 操作外,高并发安防平台往往还需要支持低延迟 WebSocket 数据流订阅、视频流转推(RTMP/WebRTC)以及算法模型的动态热加载。
如果您需要查看完整的 OpenAPI 规范(Swagger JSON)、多语言 SDK(Python/Java/Go)或了解更多复杂业务场景下的 API 编排方案,可获取全面的开发者资源。
9. 获取更多支持
想要快速验证 API 对接效果,或在集成开发过程中需要协助?下载 OpenAPI Postman Collection 集合、获取测试环境 API 账号及专属技术支持团队答疑。