generate PM5-style overlays for rowing videos from Concept2 FIT files
Project description
c2-overlay
Generate PM5-style overlays for rowing videos from Concept2 FIT files.
Creates accurate ASS subtitle overlays matching the Concept2 PM5 monitor display, synchronized with your workout video using metadata timestamps.
Features
- PM5-style display: Shows time, split pace, stroke rate, distance, watts, and heart rate in a familiar layout
- Automatic synchronization: Aligns workout data with video using creation timestamps
- Interval workout support: Displays work/rest lap information with visual indicators
- Rest overlay: Shows previous lap statistics during rest periods
- Flexible output: Generate ASS subtitles or burn them directly into video
Installation
uvx c2-overlay video.mp4 workout.fit
Or install locally:
uv tool install c2-overlay
Usage
Basic usage (generates ASS subtitle file):
uvx c2-overlay video.mp4 workout.fit
Burn overlay into video:
uvx c2-overlay video.mp4 workout.fit --burn-in output.mp4
Adjust timing manually:
uvx c2-overlay video.mp4 workout.fit --offset 2.5
Options
-o, --out-ass PATH: Output .ass file path (default: same name as video)--offset SECONDS: Manual offset adjustment in seconds (positive = later, negative = earlier)--burn-in OUT_VIDEO: Burn overlay into video using ffmpeg--label-font FONT: Font for labels (default: PragmataPro)--value-font FONT: Font for values (default: PragmataPro Mono)--fontsize SIZE: Value font size (default: scaled from resolution)--left-margin PX: Left margin in pixels--top-margin PX: Top margin (positions overlay from top)--bottom-margin PX: Bottom margin (default positioning)--box-alpha 0-255: Background transparency (0=opaque, 255=transparent, default: 112)--crf VALUE: Video quality for burn-in (default: 18)--preset PRESET: Encoding preset (default: veryfast)
Requirements
- Python 3.12+
- ffprobe (for video metadata)
- ffmpeg (optional, for burn-in)
How it Works
- Extracts video creation timestamp from metadata
- Reads FIT file trackpoints with absolute timestamps
- Computes synchronization offset
- Generates ASS subtitle file with PM5-style overlay
- Optionally burns subtitles into video with ffmpeg
Display Layout
The overlay shows a bottom-left panel with two rows:
Row 1: TIME | SPLIT | S/M Row 2: METERS | WATTS | BPM
During rest intervals, the overlay displays:
- Previous lap statistics
- Rest countdown timer
- Visual tinting and border highlighting
License
MIT
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 c2_overlay-0.1.0.tar.gz.
File metadata
- Download URL: c2_overlay-0.1.0.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f97a5908f0bfd8c186deb680f8fd0d06cdc0bbf647fd874e53794feb4f31699c
|
|
| MD5 |
85305456c40d093557504561c3eea54a
|
|
| BLAKE2b-256 |
0b16b15f2b62eb377b16ef6e2e1f99ef34deedefca29053f6d677bf1d654b0c7
|
File details
Details for the file c2_overlay-0.1.0-py3-none-any.whl.
File metadata
- Download URL: c2_overlay-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e16442edee126bf2f635095ddf88d1e74e866cad14e750d5cdb7370c6bd9462a
|
|
| MD5 |
9357566f946b74cc4a1b7c454facb608
|
|
| BLAKE2b-256 |
9f8a51f0e23e59a853d6a52e9b1768096f263c984658a249e36520a21819ab44
|