Skip to main content

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.12
  • ffmpeg and ffprobe on PATH (used for probing and cutting video)
  • libmpv installed on the system for GUI video playback (the GUI still launches without it; see rrdocs 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

The alignment is written to an editable JSON sidecar that you can hand-tweak and re-render. 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 alignment JSON.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

runrazor-0.1.2.tar.gz (218.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

runrazor-0.1.2-py3-none-any.whl (245.3 kB view details)

Uploaded Python 3

File details

Details for the file runrazor-0.1.2.tar.gz.

File metadata

  • Download URL: runrazor-0.1.2.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

Hashes for runrazor-0.1.2.tar.gz
Algorithm Hash digest
SHA256 aa05fa8aef0a60a1825daad2b675a7a14c8c109740c18a6949007fa8863623f3
MD5 66f2e6a5f6b5709fb2d7c0ec3d55ea6c
BLAKE2b-256 80d90af155d26286a5b4ab3c468e0c93d4044d98d0f41bc284ba9a2114f838f7

See more details on using hashes here.

File details

Details for the file runrazor-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: runrazor-0.1.2-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

Hashes for runrazor-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 390fe686829935071c1003d4492b606c070f701a6c23b1769860e5b8ac061831
MD5 fc4a922770a1f137d0a7174af88f0d10
BLAKE2b-256 bb13991e232432b93a7fc54f9530adefd3ca15e1f87376cad2849dfdc4d75b88

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page