This project is licensed under the terms of the MIT license.
Videographer is an application allowing creation of overlay telemetry data onto sport videos.
At the moment it supports .fit files generated by Garmin devices.
Videographer was tested on GoPro Hero 12 videos and Garmin Edge 830 produced .fit files.
For best results use instructions below how to build a project, to satisfy dependencies I recommend checking GitHub actions setup.
Example screenshots from test video: YouTube - NeriMTB
cmake -B build
generate cmake files to build directorycmake --build build --target vgraph
build main binarybuild/vgraph -h
see usage argumentscmake --build build --target vgraph_test
build unit testsbuild/vgraph_test
run unit tests
-
Gather video clips (.mp4) and telemetry file (.fit) to be used
-
Concatenate video clips
example ffmpeg command:
ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp4
with
mylist.txt
content:file '/path/to/clip/1.mp4' file '/path/to/clip/2.mp4' file '/path/to/clip/3.mp4'
-
Trim concatenated video
example ffmpeg command:
ffmpeg -ss 00:00:30.0 -to 00:01:00.0 -i input.mp4 -c copy output.mp4
-
Run generator in alignment mode (see instructions below) to determine telemetry offset
-
Run generator app to generate final video
for YT - use upscale to 4K and 80mbit/s bitrate (
-r 3840x2160 -b 80000
) -
Upload video
TBD - partial dependencies below
Packages required in system to build the application
- CMake >= 3.23
- Make / Ninja
- GCC >= 14.x
- gstreamer >= 1.24
- cairo
- pango
- pugixml
For testing
- googlemock
Basic usage based on speed visible on video:
- run generator with
--alignment
to generate alignment clip (can also use--clip-time
to change default 60s duration of alignment clip) - open video in your favorite video player and find exact frame at which speed changes
- locate data frame with same speed change in alignment data and remember the
OFFSET
- use that
OFFSET
as input for main application to align the overlay