Skip to main content

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

  1. Extracts video creation timestamp from metadata
  2. Reads FIT file trackpoints with absolute timestamps
  3. Computes synchronization offset
  4. Generates ASS subtitle file with PM5-style overlay
  5. 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


Download files

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

Source Distribution

c2_overlay-0.1.0.tar.gz (14.7 kB view details)

Uploaded Source

Built Distribution

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

c2_overlay-0.1.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

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

Hashes for c2_overlay-0.1.0.tar.gz
Algorithm Hash digest
SHA256 f97a5908f0bfd8c186deb680f8fd0d06cdc0bbf647fd874e53794feb4f31699c
MD5 85305456c40d093557504561c3eea54a
BLAKE2b-256 0b16b15f2b62eb377b16ef6e2e1f99ef34deedefca29053f6d677bf1d654b0c7

See more details on using hashes here.

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

Hashes for c2_overlay-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e16442edee126bf2f635095ddf88d1e74e866cad14e750d5cdb7370c6bd9462a
MD5 9357566f946b74cc4a1b7c454facb608
BLAKE2b-256 9f8a51f0e23e59a853d6a52e9b1768096f263c984658a249e36520a21819ab44

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