PHP怎样对接云天励飞AI_传监控流调识别接口抓目标【妙法】

云天励飞AI流调识别接口无需PHP推流,PHP仅需调用/v1/ai/track/start发起任务并轮询结果;回调为raw JSON,须用php://input读取并校验签名;去重应使用stream_id+event_time+track_id组合键存Redis。

php怎样对接云天励飞ai_传监控流调识别接口抓目标【妙法】

云天励飞 AI_传监控流调识别 接口到底要不要 PHP 直接推流

不要。PHP 本身不支持持续 TCP/RTSP 流式写入,fsockopencURL 都无法维持长连接推送视频帧流,强行用 curl_setopt($ch, CURLOPT_TIMEOUT, 0) 模拟长连只会卡死或超时断开。云天励飞该接口实际要求的是:由边缘设备(如 IPC、NVR)或专用流媒体服务(如 SRS、ZLMediaKit)将 RTSP 流转成 HTTP-FLV / WebSocket / GB28181 上报,PHP 只负责「发起识别任务」和「轮询结果」。

PHP 怎么调用 /v1/ai/track/start 启动目标追踪任务

这是 PHP 唯一需要主动发起的 POST 请求。关键在请求体格式和鉴权方式 —— 云天励飞多数私有部署环境用 Access-Token Header,而非 OAuth2。参数必须严格匹配其 OpenAPI 文档字段名(注意大小写):

  • stream_url 填的是已接入平台的流地址 ID 或内部流路径(如 rtsp://192.168.1.100:554/stream1),不是公网可直访 URL
  • target_type 常见值为 personvehicle,不能填中文或自定义字符串
  • callback_url 必须是能被云天服务器公网访问的 PHP 脚本地址(如 https://your.com/callback.php),且需支持 POST + application/json
  • 务必设置 Content-Type: application/json,否则返回 415 Unsupported Media Type
POST /v1/ai/track/start HTTP/1.1
Host: ai-cloud.tianyilife.com
Authorization: Bearer your-jwt-token
Content-Type: application/json

{
  "stream_url": "stream_abc123",
  "target_type": "person",
  "callback_url": "https://your.com/callback.php",
  "max_track_num": 5
}

回调接收时为什么 $_POST 为空,但 file_get_contents('php://input') 能读到数据

因为云天励飞回调默认发的是 raw JSON,不是 application/x-www-form-urlencoded。PHP 不会自动解析 raw body 到 $_POST,必须手动处理:

  • 先用 file_get_contents('php://input') 读原始体
  • 再用 json_decode($raw, true) 解析,检查 $data['event_type'] === 'track_result'
  • 注意验证 signature 字段(如有),云天通常用 HMAC-SHA256 + 密钥签名,PHP 需调用 hash_hmac('sha256', $raw, $secret) 校验
  • 回调接口必须返回 HTTP 200 状态码,且响应体为空或仅 {"code":0},否则会被重试多次

怎么避免重复处理同一帧的 track_result 事件

云天励飞回调不保证 exactly-once,尤其在网络抖动时可能重复推送。不能只靠 frame_id 去重 —— 它在不同摄像头间不唯一。推荐组合去重键:

无界AI

无界AI

一站式AI创作、搜索、分享服务

下载

立即学习PHP免费学习笔记(深入)”;

  • stream_id + event_time + track_id 拼接成唯一键(如 s1001_1715234400123_t456
  • 存入 Redis 并设 TTL(如 30 秒),写入前 SETNX 判断是否已存在
  • 避免用 MySQL 主键冲突做去重,高并发下性能差且易锁表
  • 注意 event_time 是毫秒时间戳,PHP 中用 (int)$data['event_time'] / 1000 转成标准 Unix 时间便于存储

真正难的不是调通接口,而是处理回调乱序、重复、丢失 —— 这些问题在测试环境几乎不暴露,上线后才集中爆发。

https://www.php.cn/faq/1975071.html

发表回复

Your email address will not be published. Required fields are marked *