amc-run-video-calibration
Calibrates pre-recorded `cam_*.mp4` datasets through the AutoMagicCalib REST API. Use for user-supplied local MP4s; route live RTSP streams to `amc-run-rtsp-calibration`.
Install / Use
npx skills add NVIDIA/skills --skill amc-run-video-calibrationInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of amc-run-video-calibration
amc-run-video-calibration scores 95/100 on our quality scale, 357th of 3,356 Development & Engineering skills we index (top 11%).
Its SKILL.md is 19 KB long, well organised into 34 sections with 5 code examples: a thorough specification that gives an agent plenty to work with.
With 3,421 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 5 days ago, so amc-run-video-calibration is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-09-29. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
amc-run-video-calibration compared with similar skills
All 4 of these similar skills score higher than amc-run-video-calibration; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| amc-run-video-calibration (this skill)by NVIDIA | 95 | 3.4k | 5d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 86.0k | 13d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.0k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 44.4k | today | CLAUDE.md |
| claude-howtoby luongnv89 | 100 | 41.7k | 2d ago | CLAUDE.md |
Frequently asked questions
- How do I install amc-run-video-calibration?
- Run
npx skills add NVIDIA/skills --skill amc-run-video-calibration. The install tabs above show the steps for each supported agent. - Which AI agents does amc-run-video-calibration work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is amc-run-video-calibration safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is amc-run-video-calibration still maintained?
- The repository was last updated 5 days ago, so amc-run-video-calibration is actively maintained.
Skill content
View source on GitHubname: "amc-run-video-calibration"
description: "Calibrates pre-recorded cam_*.mp4 datasets through the AutoMagicCalib REST API. Use for user-supplied local MP4s; route live RTSP streams to amc-run-rtsp-calibration."
owner: "NVIDIA CORPORATION"
service: "auto-magic-calib"
reviewed: "2026-04-28"
license: "Apache-2.0"
permissions: [env, file_read, network]
metadata:
version: "1.0.0"
author: "Shubham Agrawal shuagrawal@nvidia.com"
tags: [amc, calibration, rest-api, camera, python]
Skill: Calibrate from Video Files
When to Use This Skill
Activate this skill when the user has pre-recorded MP4 files and wants to calibrate them via the AMC REST API. Typical prompts:
- "calibrate my videos" / "run AMC on these videos"
- "calibrate from video files"
Drives calibration through the REST API on user-supplied pre-recorded MP4 files — no CLI scripts or Docker bind-mounts required, just a running microservice and your files.
Do not use this skill for live RTSP streams or rtsp://... URLs; route those requests to skills/amc-run-rtsp-calibration/SKILL.md.
Purpose
Guide the agent through project creation, sorted MP4 upload, local asset resolution, UI fallback only when necessary, project verification, calibration, polling, evaluation, and optional VGGT refinement for a user-provided multi-camera dataset.
Prerequisites
- [ ] AMC microservice and UI running (follow
skills/amc-setup-calibration-stack/SKILL.md) - [ ] You know the microservice URL (use
https://<HOST_IP>:<MS_PORT>for remote AMC, orhttp://localhost:<MS_PORT>on loopback) and UI URL - [ ] Video files locally as contiguous
cam_00.mp4,cam_01.mp4, … time-synchronized, ~1920×1080 - [ ] Python 3 with
requests - [ ] If AMC stores project outputs outside the default
projects/directory, you know the hostPROJECTS_DIR
Interaction Model
- The "host's question mechanism" means the runtime's built-in prompt API for short user decisions, such as terminal stdin, an IDE ask tool, or an equivalent interactive dialog.
- If that mechanism is unavailable, ask in chat and wait before any guarded step that requires user confirmation or a missing-file decision.
- For unattended runs, the bundled script requires all non-UI inputs up front and exits before
/calibrateunlessCONFIRM_CALIBRATION=trueis set.RUN_VGGT=trueremains a separate opt-in for the optional VGGT step.
Data Privacy
Video files uploaded via this skill are transmitted to the AutoMagicCalib backend (REST endpoint). Only use this skill when the backend is deployed on a trusted platform / network.
Inputs
- Required inputs:
VIDEO_DIR,BASE_URL, andPROJECT_NAME. - Optional local inputs:
CONFIG_FILE,ALIGNMENT_JSON,LAYOUT_PNG,GT_ZIP,FOCAL_LENGTHS, andDETECTOR_TYPE. - Optional control inputs:
CONFIRM_CALIBRATION,RUN_VGGT,PROJECTS_DIR,CALIBRATION_TIMEOUT_SECONDS, andVGGT_TIMEOUT_SECONDS. BASE_URLshould use HTTPS for non-loopback hosts. SetALLOW_INSECURE_HTTP=trueonly for trusted development setups that intentionally use remote plain HTTP.- Resolution precedence for settings, alignment, and layout: explicit path, single local auto-detected match, then UI fallback.
What to Ask the User
Required
(Video-file naming and the microservice URL are specified under Prerequisites above — collect the inputs below.)
- Videos directory — the folder the skill globs for
cam_*.mp4, uploaded sorted alphabetically. - Microservice URL
- Project name — short descriptive string
Auto-Detected (ask only if not found)
The script searches the videos dir, its first-level subdirectories, and its parent. If exactly one match is found, it is used; otherwise the script prints the searched locations and continues to explicit path or UI fallback:
| File | Candidate filenames | UI fallback |
|---|---|---|
| Calibration settings | settings.json, config.json, calibration_config.json | UI Step 3: Parameters |
| Alignment JSON | alignment_data.json | UI Step 4: Alignment |
| Layout PNG | layout.png | UI Step 4: Alignment |
Posting the settings file replaces UI Step 3 and may pin the detector (resnet/transformer), which is passed to /calibrate separately — see Step 4.
Optional
- Ground truth zip —
GT.zipwith_World_Cameras_Camera_XX/folders (enables evaluation metrics) - Focal lengths — one per camera, e.g.
1269.0, 1099.5, 1099.5 - Detector type —
resnet(default, fast) ortransformer(slower, better under occlusion) - Run VGGT refinement? — if VGGT is ready after AMC completes, ask the user whether to run refinement (see setup skill)
See root README.md "Custom Dataset" section for input-video guidelines and ground-truth format.
Available Scripts
| Script | Purpose | Key inputs |
|---|---|---|
| run_video_calibration.py | Executes create-project, upload, verify, calibrate, poll, evaluate, and optional VGGT refinement for a local MP4 dataset. | Required: BASE_URL, PROJECT_NAME, VIDEO_DIR. Optional: CONFIG_FILE, ALIGNMENT_JSON, LAYOUT_PNG, GT_ZIP, FOCAL_LENGTHS, DETECTOR_TYPE, CONFIRM_CALIBRATION, RUN_VGGT, PROJECTS_DIR, CALIBRATION_TIMEOUT_SECONDS, VGGT_TIMEOUT_SECONDS, ALLOW_INSECURE_HTTP. |
Instructions
All endpoints below are implemented end-to-end in the Complete Python Script — the prose is the workflow plus the decisions the agent must make; the script is the authoritative runnable.
Step 1 — Create Project
POST /v1/create_project (form field project_name) → save the returned project_id.
Step 2 — Upload Videos (required)
POST /v1/upload_video_files/<project_id> (multipart files). Upload sorted alphabetically — the server assigns camera indices by upload order. The bundled script rejects non-contiguous or non-zero-based camera sequences up front; the directory must contain cam_00.mp4, cam_01.mp4, ... with no gaps.
Step 3 — Resolve Local Files (Auto-Scan, Ask, or UI)
For each of calibration-settings, alignment, and layout, run this resolution:
Auto-use rule: if exactly one match is found, the script uses it automatically and prints the resolved path. No extra prompt occurs for that file.
- Auto-scan
VIDEO_DIR, one level of subdirectories underVIDEO_DIR, andVIDEO_DIR.parentfor the candidate filenames (table above). - If exactly one match, use it and print what was found.
- If zero or multiple matches, print the searched locations, then ask the user for an explicit path using the host's question mechanism; if none is available, ask in chat and wait. If they don't have the file, mark it for UI fallback.
- UI fallback: tell the user to complete the corresponding UI step; wait for confirmation; then continue to Step 6 and treat
verify_projectas the source of truth for whether the UI-supplied alignment/layout data is complete.
Step 4 — Upload Resolved Files
Upload each file resolved locally:
| File | Endpoint | Notes |
|---|---|---|
| Calibration settings | POST /v1/config/<project_id> (JSON, posted as-is) | Replaces UI Step 3 (rectification, bundle-adjustment, evaluation, detector, …). Non-2xx is surfaced — never silently fall back. Skip on the UI-fallback path. |
| Alignment | POST /v1/upload_alignment/<project_id> (alignment_data.json) | |
| Layout | POST /v1/upload_layout/<project_id> (layout.png) | |
| Ground truth (optional) | POST /v1/upload_gt_file/<project_id> (GT.zip) | Enables evaluation metrics |
| Focal lengths (optional) | POST /v1/upload_focal_length/<project_id> (repeated focal_length=) | Overrides GeoCalib estimates |
Upload all resolved local files first, in any order. After the local uploads are complete, continue to Step 5 only for unresolved files, then run Step 6 exactly once to verify the assembled project.
After a successful settings POST, parse the file for "detector" / "detector_type" — if it's "resnet" or "transformer", use that value for the /calibrate call in Step 7 (detector is a separate API parameter, not consumed by /config).
Step 5 — UI Fallback (only for files the user doesn't have locally)
If any of settings / alignment / layout was not resolved in Step 3, direct the user to the appropriate UI step:
- Settings missing → "Open UI project
<project_id>, go to Step 3: Parameters, tune via the settings dialog (or accept defaults), click Save." Also: before the/calibratecall, ask the user which detector to use (resnetortransformer) using the host's question mechanism; if none is available, ask in chat and wait. UI Step 3 does not cover detector choice. - Alignment or layout missing → "Open UI project
<project_id>, go to Step 4: Alignment, upload layout, mark correspondence points, click Save."
Wait for user confirmation. For non-interactive script runs, provide the needed files up front; the script exits with a clear message rather than waiting on input. Do not require local access to AMC's projects/ storage for the UI fallback; Step 6 is the canonical server-side verification step.
Step 6 — Verify Project
POST /v1/verify_project/<project_id> → must return {"project_state": "READY"} before calibrating.
Step 7 — Start Calibration
Confirm the plan before calibrating. Whether the settings file and detector were auto-detected or asked, present a short summary and get explicit user confirmation before POST /calibrate using the host's question mechanism; if none is available, ask in chat and wait. The resolved values are the defaults, so confirming is one click, but the user can switch the detector or skip an auto-detected settings file. The standalone Python script prompts when stdin is interactive; in non-interactive runs it exits before /calibrate unless CONFIRM_CALIBRATION=true is set. Summarize:
- Detector —
resnetortransformer(the value to be sent). - Calibration settings — the file being applied (path), or "defaults" if none.
- Optional overrides — ground-truth zip and focal lengths, if any.
POST /v1/calibrate/<project_id>
Content-Type: application/json
{"detector_type": "resnet"}
Step 8 — Poll for Completion
GET /v1/get_project_info/<project_id> every 10 s — project_info.project_state goes RUNNING → COMPLETED (or ERROR, pull the log). Typical time: 10–60 min depending on video length and detector. The bundled script defaults to a 90 minute cap through CALIBRATION_TIMEOUT_SECONDS=5400; raise that env var for longer runs instead of silently killing the process.
Step 9 — Get Results
GET /v1/result/<project_id>/evaluation_statistics (only if GT was uploaded; includes Average L2 distance(m) and Average reprojection error 0(px)), and GET /v1/amc/calibrate/<project_id>/log for the calibration log. If GT was uploaded and evaluation_statistics returns non-200, surface that HTTP error instead of treating it as a missing-GT case.
Status Fields from get_project_info
project_info.project_state is the AMC calibration lifecycle for the project: RUNNING → COMPLETED (or ERROR).
project_info.vggt_state is also per-project, a project-scoped VGGT refinement lifecycle rather than a direct global service or model-load status. A newly created project can report vggt_state: "INIT" even when the VGGT model is present and mounted. The expected VGGT lifecycle is INIT → READY after AMC calibration completes → RUNNING while VGGT refinement runs → COMPLETED (or ERROR).
Use vggt_state == "READY" only as the gate for optional VGGT refinement in Step 10. Interpret INIT on a new or uncalibrated project as normal project state. If AMC calibration is complete and the project remains in a non-ready VGGT state, confirm VGGT setup and model availability with the setup skill checks and service logs.
Step 10 — (Optional
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
86.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
44.4kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
claude-howto
41.7kA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
