Skip to main content

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 can use the subject's GPS track to find each pass automatically, or you can mark the cuts by hand. It 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.

Demo

RunRazor demo

Command What it does
runrazor The main app: extract clips from a video using GPS or manual cut points, review and tune the cuts, reframe, annotate, compare, 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)
rrmulti Reconstruct an athlete in 3D from two or more fixed cameras (see rrdocs multiview)
rrdocs Open the bundled documentation in your browser (rrdocs changelog lists what changed in each release)

Setup

RunRazor needs Python 3.11+, ffmpeg (with ffprobe) on your PATH, and libmpv for GPU-accelerated video playback. Multiview also needs exiftool, to match each clip to its lens.

Windows

Install prerequisites using winget (built into Windows 10/11):

winget install Python.Python.3.12 Gyan.FFmpeg mpv.net OliverBetz.ExifTool

Close and reopen your terminal so the new python and ffmpeg commands are on your PATH, then install RunRazor:

pip install runrazor

To update: pip install --upgrade runrazor

macOS

Install prerequisites using Homebrew:

brew install python ffmpeg mpv pipx exiftool
pipx install runrazor

To update: pipx upgrade runrazor

Linux (Debian/Ubuntu)

sudo apt update
sudo apt install python3 ffmpeg libmpv-dev pipx libimage-exiftool-perl
pipx install runrazor

To update: pipx upgrade runrazor

RunRazor Application

The main application ties all the tools together: load a video (and a GPS track, if you have one), review and tune the cut points against the footage, reframe, compare, and export as an editor timeline (FCPXML/EDL) or a stitched MP4.

runrazor

See rrdocs runrazor for all options, hotkeys, time format, and examples.

Reframe

Automatic subject tracking and reframing pipeline. Crops video from a stationary camera to follow a moving subject. You can use this directly without the RunRazor segmentation.

rrreframe input.mp4

You may get reasonable results without any additional arguments.

See rrdocs reframe for fine-tuning, the neural-network detector, handheld mode, deshake, horizon correction, 360 video input, interactive mode, 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.

Multiview

A 3D reconstruction of the athlete from two or more fixed cameras, set up and reviewed in the 3D Session window (Multiview menu). See rrdocs multiview, which links the capture guide for placing the cameras and the calibration guide for the lenses.

Licenses

runrazor is Copyright (c) 2026 Ken Walker, released under the GNU Affero General Public License v3.0 only (AGPL-3.0-only, see LICENSE). Versions up to and including 0.5.8 were released under the MIT License. runrazor bundles a default subject detector -- the stock YOLOX-Nano model (Apache-2.0, Copyright (c) Megvii Inc.), used under the COCO "person" class. Full attribution and license text are in THIRD_PARTY_LICENSES. For higher accuracy, the larger permissively-licensed YOLOX-S can be dropped in via --nn-model (see rrdocs reframe and training/README.md).


❄🤗❄

Metadata

Release files for runrazor 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for runrazor 0.6.0
File Size Uploaded
runrazor-0.6.0.tar.gz 6.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for runrazor 0.6.0
File Interpreter ABI Platform
runrazor-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 13.0 MB

Release files / runrazor-0.6.0.tar.gz

Download URL runrazor-0.6.0.tar.gz
Size 6.4 MB
Tags Source
SHA-256 checksum
How to use checksums
e6037bbad2aaaee9870db85a5a48c2551ffa31df27c42fae99b728b64442c61d
BLAKE2b-256 checksum
How to use checksums
85e984f706c11f5c98ee4da2dcaab757eda74938d8ea9bd7f42df62c22d72480
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / runrazor-0.6.0-py3-none-any.whl

Download URL runrazor-0.6.0-py3-none-any.whl
Size 6.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
a846d9c10b4d863c6d6cbeabe5a2ea555425f30951431263a1a1410635c5a290
BLAKE2b-256 checksum
How to use checksums
4af5df521ac183ae4d45763108bd12b6903dae1fbea44013200adb7193af7072
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page