SpeedSync Studio
Desktop app that overlays GPS-derived speed, lap timing and G-force onto GoPro footage via a zero-disk-write FFmpeg pipeline.
Solo engineer — architecture, Rust backend, React frontend, all widget rendering
Rust · Tauri · React · TypeScript · FFmpeg · OffscreenCanvas
10–20×
§ 01Context
Action-camera footage (GoPro, DJI) embeds a GPMF telemetry stream — GPS, accelerometer, gyroscope — that's rarely used past the stock app's static stat screen. I wanted speed, lap times and G-force burned into the video itself, as configurable on-screen widgets, without round-tripping through a video editor. That meant parsing an undocumented binary telemetry format and building a rendering pipeline that could composite 20–30 animated widgets per frame at video framerate, then hand off to hardware-accelerated encoding — all inside a native desktop shell.
§ 02What I built
A Tauri v2 app: Rust backend for GPMF stream extraction, FFmpeg process management and video probing; React/TypeScript frontend for the editor and widget system. The first export pipeline used DOM capture (html-to-image) to rasterize each frame, which worked but crashed WebKit's render process after enough frames due to accumulated getComputedStyle calls. I rewrote the entire render path as Canvas2D. Every widget (28 speedometer variants, GPS circuit map, lap timer, G-force ball, compass) got a from-scratch canvas renderer running inside a Web Worker on an OffscreenCanvas, off the main thread entirely. Frames are piped as PNG bytes over IPC directly into FFmpeg's stdin via image2pipe, so encoding starts immediately and runs concurrently with rendering. No frame ever touches disk, and export time approaches max(render, encode) instead of their sum. Lap detection uses a direction-aware crossing check with a consensus-track algorithm (arc-length resampling + median across laps) to reject false positives from GPS noise near the start/finish line.
§ 03Outcome
A tool for athletes and motorsport enthusiasts who record with action cameras and want more than a stock highlight reel. They get full control over how their own speed, lap times and G-force show up on screen. I owned the entire arc solo: the original idea, the implementation, testing against real kart-racing footage race weekend after race weekend, and sharing it with the racing community it was built for. Currently a working macOS build I use every session, with public distribution (code signing, notarization) as the next step.