Overlay graphics dashboards onto GoPro footage
Project description
Overlaying Dashboard onto GoPro MP4 Files
Discuss on GitHub Discussions
- Overlaying exciting graphics
- Support multiple resolutions, most GoPro models, normal, timelapse & timewarp modes
- Convert GoPro movie metadata to GPX or CSV files
- Cut sections from GoPro movies (including metadata)
- Join multiple GoPro files together (including metadata)
Examples
Map Styles
Almost 30 different map styles are supported! - See map styles for more
Example
. | . | . | . |
---|---|---|---|
Requirements
- Python3.8
- ffmpeg (you'll need the ffmpeg program installed)
- Unixy machine (probably, untested on Windows)
How to use
- Install with pip
python -m venv venv
venv/bin/pip install gopro-overlay
- The Roboto font needs to be installed on your system. You could install it with one of the following commands maybe.
pacman -S ttf-roboto
apt install truetype-roboto
apt install fonts-roboto
Overlaying a dashboard
venv/bin/gopro-dashboard.py
The GPS track in Hero 9 (at least) seems to be very poor. If you supply a GPX file from a Garmin or whatever, the program will use this instead for the GPS.
Privacy allows you to set a privacy zone. Various widgets will not draw points within that zone.
The data recorded in the GoPro video will uses GPS time, which (broadly) is UTC. The renderer will use your local timezone to interpret this, and use the local timezone. This may produce strange results if you go on holiday somewhere, but then render the files when you get back home! On linux you can use the TZ variable to change the timezone that's used.
Example
For full instructions on all command lines see docs/bin
venv/bin/gopro-dashboard.py --gpx ~/Downloads/Morning_Ride.gpx --privacy 52.000,-0.40000,0.50 ~/gopro/GH020073.MP4 GH020073-dashboard.MP4
Format of the Dashboard Configuration file
Several dashboards are built-in to the software, but the dashboard layout is highly configurable, controlled by an XML file.
For more information on the (extensive) configurability of the layout please see docs/xml and lots of examples
FFMPEG Control & GPUs
Experimental
FFMPEG has a lot of options! This program comes with some mostly sensible defaults, but to use GPUs and control the output much more carefully, including framerates and bitrates, you can use a JSON file containing a number of 'profiles' and select the profile you want when running the program.
For more details on how to select these, and an example of Nvidia GPU, please see docs/bin
Please also see PERFORMANCE.md
Converting to GPX files
venv/bin/gopro-to-gpx.py <input-file> [output-file]
Joining a sequence of MP4 files together
Use the gopro-join.py command. Given a single file from the sequence, it will find and join together all the files. If you have any problems with this, please do raise an issue - I don't have that much test data.
The joined file almost certainly won't work in the GoPro tools! - But it should work with gopro-dashboard.py
- I will
look into the additional technical stuff required to make it work in the GoPro tools.
This will require a lot of disk space!
venv/bin/gopro-join.py /media/sdcard/DCIM/100GOPRO/GH030170.MP4 /data/gopro/nice-ride.MP4
Cutting a section from a GoPro file
You can cut a section of the gopro file, with metadata.
Related Software
- https://github.com/julesgraus/interactiveGoProDashboardTool - An interactive helper to build the command line for the dashboard program
Known Bugs / Issues
- Only tested on a GoPro Hero 9, that's all I have. Sample files for other devices are welcomed.
Icons
Icon files in icons are not covered by the MIT licence
Map Data
Data © OpenStreetMap contributors
Some Maps © Thunderforest
References
https://github.com/juanmcasillas/gopro2gpx
https://github.com/JuanIrache/gopro-telemetry
https://github.com/gopro/gpmf-parser
https://coderunner.io/how-to-compress-gopro-movies-and-keep-metadata/
Other Related Software
https://github.com/progweb/gpx2video
https://github.com/JuanIrache/gopro-telemetry
Latest Changes
If you find any issues with new releases, please discuss in GitHub Discussions
- 0.59.0 EXPERIMENTAL support for creating dashboards without a GoPro file! - Just uses GPX. use
--gpx-only
- See examples in docs/bin- Huge thanks to @ptanov for code and others for suggestions!
- 0.58.0 Chart component now has configurable colours and size - see docs/xml/examples/07-chart
- 0.57.0 Experimental support for non-real-time (timelapse/timewarp) videos
- Thanks to @ptanov
- 0.56.0 Remove possible divide by zero error - only likely in timewarp/timelapse videos - I think
- Minor changes to ffmpeg code, should have no visible effect
- 0.55.0 Huge improvement to View performance - used in chart - now charts with short windows are useable.
- 0.54.0 Fix #60 h/t @remintz
- Some (older?) camera's don't have ORIN in ACCL and GYRO streams, so use a default
- 0.53.0 New feature for a frame - fade out to edge - see docs - thanks @ptanov
- Fix to GPX file loading - also, thanks @ptanov
- 0.52.0 Update gopro-to-gpx.py to allow smaller GPX files (see help)
- 0.51.0 Fix #52 h/t @danfossi
- Support for Hero 8 Black ORIN spec zxY
- 0.50.0 Print installed version at program startup
- 0.49.0 Parsing & Display of Acceleration Information!
- Major new functionality to parse and display acceleration data
- Use metrics
accl.x
accl.y
andaccl.z
in any widget or metric text - New component
bar
- see bar docs - Updated chart can now chart (probably) any metric - see chart docs
- 0.48.0 Fix #48 - h/t @osresearch
- allow 'km' units where appropriate
- 0.47.0 Fix #47 - h/t @osresearch
- 0.46.0 New component
compass-arrow
- see layout docs examples- progress on support of time-lapse and time-warp files, but they don't work properly yet
- built-in layout for 2.7k files
- 0.45.0 New Program
gopro-rename.py
- turn idiosyncratically named gopro files GX0100123.MP4 into 20220405-123416-london-england.MP4 using either provided description,- or looks up the location from the GPS, and makes file name from that.
- uses the GPS timestamp to determine the time of the file.
- now gopro files will sort properly in your file viewer
- also works around gopro camera drift, clock is always wrong.
- can rename whole folders of files
Older changes are in CHANGELOG.md
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.