Skip to content

vosslab/track-runner-virtual-dolly-cam

Repository files navigation

Track runner virtual dolly cam

A Python tool for track-meet videographers that produces a cropped, stabilized virtual-dolly output following a single athlete. Users place a handful of seed annotations; the solver propagates geometry between seeds across the full race.

Status: v26.05, active development.

What it produces

Given a wide track meet video, track runner emits a cropped MKV (or MP4 with --mp4) that stays centered on the chosen athlete with smooth virtual-dolly motion. Sample inputs and outputs live under TRACK_VIDEOS/ (gitignored) on a working install. See docs/modes/ENCODE.md for the encode pipeline and docs/TRACK_RUNNER_ANALYZE_AND_ENCODE.md for output format details.

Design philosophy

Human establishes identity; the machine interpolates geometry. See docs/TRACK_RUNNER_DESIGN.md for the design philosophy and docs/TRACK_RUNNER_CONTRACT.md for the non-negotiable invariants.

Quick start

Prerequisites: install system and Python dependencies first -- see docs/INSTALL.md.

The canonical run order:

[ prepare ] -> setup -> seed -> solve -> ( target -> refine ) x N -> encode
                                               ^________|
                                         repeat until scores OK
source source_me.sh
# Optional but recommended for 4K HEVC sources -- creates a fast-read working video.
python3 track_runner/track_runner.py -i VIDEO.mp4 prepare
python3 track_runner/track_runner.py -i VIDEO.mp4 setup
python3 track_runner/track_runner.py -i VIDEO.mp4 seed
python3 track_runner/track_runner.py -i VIDEO.mp4 solve
python3 track_runner/track_runner.py -i VIDEO.mp4 target
python3 track_runner/track_runner.py -i VIDEO.mp4 refine
# Repeat target + refine until interval scores are acceptable.
python3 track_runner/track_runner.py -i VIDEO.mp4 encode

setup runs once per video and is required before solve, refine, or target. prepare is optional but recommended for 4K HEVC sources; see docs/modes/PREPARE.md. To see flags for any subcommand, append -h (for example python3 track_runner/track_runner.py -i VIDEO.mp4 encode -h). For the per-mode reference, see docs/MODES.md; for the workflow narrative, see docs/USAGE.md.

Documentation

Run it

Understand it

Develop on it

Style guides

Design archive

Historical design documents, specifications, and implementation plans are in docs/archive/.

Testing

source source_me.sh && python3 -m pytest tests/ -q

License

Code is licensed under LGPLv3. Non-code content is licensed under CC BY 4.0.

Maintainer

Neil Voss, https://bsky.app/profile/neilvosslab.bsky.social

About

a Python tool that tracks a runner in track meet video and produces a cropped, stabilized "virtual dolly camera" output. Users place seed annotations on key frames, and the solver propagates tracking between seeds to produce a smooth cropped video that follows the athlete.

Resources

License

CC-BY-4.0, LGPL-3.0 licenses found

Licenses found

CC-BY-4.0
LICENSE.CC_BY_4_0
LGPL-3.0
LICENSE.LGPL_v3

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages