RunRazor: movement-analysis tools for stationary-camera footage
Project description
RunRazor
Tools for movement analysis from stationary-camera footage.
If you film yourself or someone else repeating a course past a fixed camera -- hill repeats, sprints, drills -- RunRazor turns that raw footage into usable clips. It uses the subject's GPS track to find each pass automatically, can crop and follow the subject so they stay framed, and lets you compare runs side by side or export the cuts straight to a video editor.
| Command | What it does |
|---|---|
runrazor |
The main app: automatically cut a video using the subject's GPS track, review and tune the cut points, reframe, and export (see rrdocs runrazor) |
rrreframe |
Crop and follow a moving subject automatically so they stay framed (see rrdocs reframe) |
rrcompare |
Play two runs side by side, lined up in time, to compare them (see rrdocs compare) |
rrtag |
Mark matching points in two runs by hand so rrcompare can line them up (see rrdocs compare) |
rrdocs |
Open the bundled documentation in your browser |
Environment
- Python 3.11+
ffmpegandffprobeon PATH (used for probing and cutting video)libmpvinstalled on the system for GUI video playback (the GUI still launches without it; seerrdocs runrazor)
Install
pip install runrazor
Documentation is bundled with the package; run rrdocs to open it in your browser (rrdocs reframe opens a specific page).
RunRazor
The GUI ties it all together: load a video and GPS track, review and tune the cut points against the footage, reframe, and export.
runrazor
See rrdocs runrazor for all options, hotkeys, time format, libmpv setup, and examples.
Reframe
Automatic subject tracking and reframing pipeline. Crops video from a stationary camera to follow a moving subject. You can use this without the RunRazor segmentation.
rrreframe input.mp4
You may get reasonable results without any additional arguments.
See rrdocs reframe for fine-tuning, deshake, horizon correction, 360 video input, interactive pinning, profile mode, and cache options.
Split-screen comparison
Side-by-side comparison of two ski runs (or one run against its own mirror), phase-locked turn-by-turn. It runs on Reframe outputs: each clip's trajectory sidecar (written by default) drives automatic turn-apex detection, and one clip plays at native speed while the other is retimed per turn segment to stay in sync.
rrreframe runA.mp4 --output a.mp4
rrreframe runB.mp4 --output b.mp4
rrcompare a.mp4 b.mp4 -o compare.mp4
To compare against an external clip that was never reframed (or to fix wrong auto-detected turns), tag its apexes with rrtag clip.mp4. See rrdocs compare for turn pairing, mirroring, pane fit, retiming, manual tagging, and the editable alignment JSON.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file runrazor-0.1.3.tar.gz.
File metadata
- Download URL: runrazor-0.1.3.tar.gz
- Upload date:
- Size: 218.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7e38c2aaec314eb25e818cc3f078ea378bedf6c872cdc1dba12d2a3090db72d
|
|
| MD5 |
c9432df770e3c227d49e983fb2946596
|
|
| BLAKE2b-256 |
3487989fbc4ffcacefc6b3829e7d6b77f26744ea2693053db8464fce1feb80ed
|
File details
Details for the file runrazor-0.1.3-py3-none-any.whl.
File metadata
- Download URL: runrazor-0.1.3-py3-none-any.whl
- Upload date:
- Size: 245.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f86e70fa07b83a8e55bab508ad019b9ca2b96cc92d3b052b8455ddba8fc2a1a3
|
|
| MD5 |
31719a8e25970e475e8f48cb69d63073
|
|
| BLAKE2b-256 |
33a6b330f742d3b2dffe91dfdaf6f9fbdb63d5cbd3ef225f6ad58f688c42d14a
|