Loading the illustrative demo…
Tracking files · tables · workbooks · Parquet · archives
The original upload is saved. Review units, time, origin and IDs before reconstruction. Confidence is never interpreted as height.
You can keep this message open while troubleshooting. Files that finished uploading remain privately retained.
Interrupted transfers can resume in this browser within 24 hours when you reselect the same files. Allow local site storage to keep progress after a reload.
Keep this tab open until the upload completes.
Upload tracking files, then reconstruct and analyze them in your browser.
Use a .cvmap.json recipe to declare units, timing, axes, and columns. Unknown original files remain retained.
Pose ZIPs automatically find output.live.pose* or *pose.clean folders, including nested .output files. Large games use disk-backed playback. v1.4.0. For optional conversion, use the Python converter to create an indexed file for faster loading. See Data guide.
output.live.pose*
*pose.clean
.output
The studio reads Hawk-Eye pose clean / complete feeds, centroid-only observations, wrapped post-game combined events, and documented basketball / 3D marking tables. Both previous Courtvision v1 files and the v2 format are supported.
Open native Hawk-Eye / marking feeds, legacy SportVU moments, JSON / JSONL / JSON sequences, CSV / TSV / semicolon / pipe tables, XML, YAML, TOML, Excel / ODS workbooks, Parquet, Arrow IPC / Feather v2, SQLite, MessagePack, CBOR, and numeric NPY / NPZ arrays. ZIP, 7z and TAR bundles are unpacked; gzip streams and bzip2 / xz compressed TAR archives are supported. Originals are saved privately before parsing. Interrupted uploads can resume in the same browser within 24 hours of starting.
Preview the fields and declare stable entity IDs, time basis, units, coordinate origin, axes and court dimensions. Workbooks and databases are reviewed by sheet / table; skip rosters and summaries. Long entity rows, wide entity columns, joint rows, named joints and declared COCO 17 / BODY_25 / MediaPipe 33 orders are supported. Download a reusable .cvmap.json recipe and select it alongside future files. Frame-only data needs actual FPS. A countdown game clock alone cannot establish continuous motion.
Missing height stays missing. 2D observations use floor markers. Body-local poses open in a separate inspection view; court placement, travel speed and absolute height remain unavailable. Image coordinates and bounding boxes require a calibrated image-to-court homography; no airborne depth is inferred.
Use the read-only local bridge for HDF5, MATLAB numeric variables, Avro containers, different tensor-axis orders, whitespace / fixed-width tables, and single bzip2 / xz / zstd / LZ4 streams. Protocol Buffers require their schema and framing. Raw video, PDFs, executable pickles and opaque vendor binaries need a separate export or extraction workflow.
The included converter runs on your computer, removes repeated metadata and builds a random-access frame index. It preserves all frames and converts declared source length units to feet. It retains possession, clock flags, revisions, ball orientation/spin, and event records.
pip install libarchive-c python pack_pose.py game.7z --out game.cvpose.gz
7z conversion needs libarchive. On Windows, install py7zr instead for the portable extraction fallback. JSON, .output, ZIP and folders need no extra packages. Use --out-dir for mixed games, or --chunks-dir for indexed segments.
py7zr
Choose 2K Action, 2K High, Broadcast Follow, Tactical Follow, Player Shoulder, or Player Eyes. Tune height, distance, responsiveness, lead, and direction. Use Review for A/B loops, pose ghosts, rulers, arrows, bookmarks, and two-anchor video alignment. Saved sessions use this browser’s local storage.
Ball orientation is interpreted as a rotation vector, not Euler angles. Spin is shown only when supplied. Imported event metrics remain distinct from geometry-derived measurements. Latest revisions and feed priority resolve duplicate pose frames. The Data tab reports missing intervals, lineup counts, and import errors.
The public demonstration uses synthetic player positions and joints. It is not captured game data. Your uploads are stored privately by neilball; other visitors cannot browse them. Event-only files remain discrete participant snapshots.
Choose Free Orbit to drag and zoom. Dynamic camera modes can also be zoomed with the mouse wheel. Right-drag to pan. Scroll to zoom. Click a player to inspect them. Touch: one finger orbits; two fingers zoom and pan.
2K views trail the attack. Broadcast and tactical views track the ball. Player views use the selected player's head direction.
Automatic direction uses feed possession and team direction when available. A motion-based camera estimate is identified in the view. These camera estimates do not become tracking observations.
Density uses observed time only and the selected player, or all players if none is selected. Event-only feeds have no continuous motion trails or dwell-time density.
Rendering geometry can be adjusted without changing source coordinates.
Game data is saved in this browser. Video files must be reopened; bookmarks and alignment settings are retained.
If a stopped clock repeats, the nearest matching observation to the current timeline position is used.