RTSP实时流相机标定Skill "amc-run-rtsp-calibration"

该技能用于通过实时 RTSP 视频流对多相机进行自动标定。结合 VIOS 录制视频片段与 AutoMagicCalib(AMC) 微服务,完成项目创建、视频摄取、标定参数/对齐文件上传、标定执行、结果获取,并支持 VGGT 精炼与 GT 评估。核心关键词:RTSP标定、AutoMagicCalib、AMC、VIOS、相机标定、多相机外参标定、实时视频流标定、视频标定工具。

视频标定工具 0 次安装 2 次浏览 更新于 9/6/2026

技能:从 RTSP 流进行标定(Calibrate from RTSP Streams)

何时使用此技能

当用户需要基于实时 RTSP 摄像机流进行相机标定时,使用此技能。典型用法包括:

  • 校准 RTSP 流 / 校准实时摄像机
  • 在 RTSP 源上运行 AutoMagicCalib(AMC)
  • 用户提供一个或多个 rtsp://... 地址

VIOS 会为每路视频流录制固定时长的片段,AMC 微服务将这些片段导入到项目中,随后工作流与预录制 MP4 标定相同:验证、标定、轮询和获取结果。

注意:此技能不用于处理磁盘上已有的本地 MP4 文件(请使用 skills/amc-run-video-calibration/SKILL.md),也不用于内置示例数据集(请使用 skills/amc-run-sample-calibration/SKILL.md)。除非用户明确指定,否则不得复用示例数据、assets/ 或历史项目中的文件。

前提条件

  • AMC 微服务与 UI 运行中
  • VIOS 运行中且可从 AMC 微服务访问
  • AMC 微服务环境已配置 VIOS_BASE_URL
  • RTSP URL 可从 VIOS 主机访问
  • 场景中有足够移动目标;录制时长建议不少于 60 秒,场景稀疏时建议 120~180 秒或更长
  • Python 3 + requests(使用脚本时)

数据隐私

RTSP URL 可能包含用户名、密码、主机名或网络拓扑信息;不应在对话、日志或最终结果中打印完整带凭据的 URL。VIOS token 要通过环境变量等安全方式传递。

需要向用户确认的信息

必填

  1. 每台摄像机的 RTSP URL
  2. 每路流的摄像机名称(缺省用 cam_00, cam_01 等)
  3. 录制时长(秒),最短 60 秒,建议 120~180 秒
  4. AMC 微服务 URL,例如 http://<HOST_IP>:8000
  5. 项目名称
  6. 标定资产来源:本地目录 / 显式文件路径 / 通过 AMC UI 上传。若未提供,停止并询问。UI 默认地址为 http://<HOST_IP>:5000

可选

  • sensor_id(若已在 VIOS 注册)
  • Ground truth zip (GT.zip),用于评估指标
  • 每台摄像机的焦距
  • VIOS bearer token(如需)
  • 是否在 AMC 标定完成后运行 VGGT refinement(仅当 vggt_state == "READY" 时)

操作步骤

步骤 0 - 验证 AMC 和 VIOS

检查 http://<HOST_IP>:<MS_PORT>/v1/ready 以确认 AMC 可用。检查 VIOS 的 sensor/list 接口;若 VIOS 未运行,要求用户启动并配置。

步骤 1 - 创建项目

调用 POST /v1/create_project,字段为 project_name,返回 project_id

步骤 2 - 开始 RTSP 录制

调用 POST /v1/rtsp/capture/<project_id>,传入 streams 列表(包含 rtsp_urlcamera_name)、duration_secondsvios_token 等。返回中的 session.session_id 用于后续操作。

步骤 3 - 轮询录制状态并摄取

每隔 10 秒调用 GET /v1/rtsp/capture/<project_id>/<session_id>。状态流转为 STARTING -> RECORDING -> COMPLETED -> INGESTING -> INGESTED。当状态为 COMPLETED 时,调用 POST /v1/rtsp/capture/<project_id>/<session_id>/ingest 将片段摄取进 AMC 项目。支持手动 stop 并摄取部分录像。

步骤 4 - 上传标定配置文件

根据用户提供的资产目录或显式路径,上传以下文件:

  • 标定参数(settings):POST /v1/config/<project_id>
  • 对齐文件(alignment):POST /v1/upload_alignment/<project_id>
  • 布局图片(layout):POST /v1/upload_layout/<project_id>
  • 真值文件(可选):POST /v1/upload_gt_file/<project_id>
  • 焦距(可选):POST /v1/upload_focal_length/<project_id>

若用户没有本地文件,则引导到 AMC UI 的 Step 3/Step 4 手动设置,并询问使用 resnet 还是 transformer 检测器。

步骤 5 - 验证、标定、轮询与获取结果

调用 POST /v1/verify_project/<project_id>,确认 project_state == "READY"。向用户确认标定方案,包括流数量、录制时长、检测器、参数来源、对齐来源、GT 等。随后调用 POST /v1/calibrate/<project_id>,body 为 {"detector_type": "<resnet-or-transformer>"}。轮询 GET /v1/get_project_info/<project_id> 直到状态为 COMPLETEDERROR。若成功,调用 GET /v1/result/<project_id>/evaluation_statistics 获取评估结果(仅有 GT 时才有)。

步骤 6 - 可选 VGGT 精炼

标定完成后检查 vggt_state,若为 READY 则询问是否运行 VGGT。确认后调用 POST /v1/vggt/calibrate/<project_id> 并轮询。若未 READY,则跳过。

成功标准

  • VIOS 健康检查返回 200
  • 录制会话状态达到 COMPLETED
  • 摄取成功且项目包含预期视频文件
  • verify_project 返回 READY
  • AMC 标定状态达到 COMPLETED
  • 有 GT 时能返回评估统计
  • 不泄露 RTSP 凭据、token、NGC/HuggingFace 密钥

输出文件

标定结果存放于 projects/project_<project_id>/ 下,包括 manual_adjustment/alignment_data.jsonlayout.png,以及 output/ 下的单视图和多视图标定结果(camInfo_XX.yaml)。

常见问题

问题 解决办法
VIOS 网络不通 确认 VIOS 已部署并设置正确的 VIOS_BASE_URL
返回 503/“VIOS not configured” 给 AMC 微服务注入 VIOS_BASE_URL 并重启
录制卡在 STARTING 在 VIOS 中检查传感器是否在线,等待或重启
录制卡在 RECORDING 手动调用 stop 后尝试摄取部分片段
400 “duration too short” duration_seconds 至少为 60
400 “empty streams” 提供至少一个含 rtsp_url 的流
verify_project 非 READY 检查视频、对齐、布局是否已正确关联
标定报错 获取 GET /v1/amc/calibrate/<project_id>/log 查看日志