View on GitHub Downloads

GPX Animator

Advanced GPX to Video converter

GPX Animator

Introduction

GPX Animator generates video from GPX files.

Features

Roadmap

We are working on version 1.7 of GPX Animator. Our plan is to implement the following new features:

There are much more ideas in the backlog. We would like to implement them in future versions of GPX Animator and plan to release a new version every few months. You can check them out in our GitHub Repository.

Downloads

Latest Stable Version

It is recommended, to download the latest stable version. As of today, this is v1.6.0, released on January 9th, 2021. These are the most important changes:



ej-technologies provides us a free license for Install4J. Thank you very much for your support!

Apple Silicon (M1): The macOS Intel binary of GPX Animator runs fine on Apple Silicon (M1 processor) using the Rosetta 2 compatibility layer. You can use the Java Archive together with a Java Runtime for the M1 ARM processor to run GPX Animator natively on Apple Silicon. But be warned, the Java Runtime for the M1 ARM processor is work in progress and reported to be unstable! Once Java for the M1 ARM processor is declared stable (probably with version 16, which will be available in March 2021), we will provide a macOS ARM binary of GPX Animator. Until then we recommend using the macOS Intel binary of GPX Animator with Rosetta 2.

Important Information

macOS

Important information for macOS users: The application file is not signed. If you start GPX Animator for the first time, you'll get a warning and it will not start. You can right click (or ctrl-click) on the application icon and choose "Open" from the context menu, to start GPX Animator. GPX Animator is open source and free to use, we don't earn money with it and thus can't afford to pay the yearly fee of € 100 for the code signing certificate! If you know a better solution, please let us know. Thank you very much for your understanding.

Windows

Important information for Windows users: The installer is not signed. If you start the installation, you'll get a warning, but you can go over it and continue the installation. GPX Animator is open source and free to use, we don't earn money with it and thus can't afford to pay the yearly fee of round about € 270 for the certificate! If you know a better solution, please let us know. Thank you very much for your understanding.

Basic usage

GPX Animator can be used in two ways: Either with a GUI (Graphical User Interface), or via CLI (Command Line Interface). Using the GUI is highly recommended for end-users, while CLI usage is perfect for automatization.

GUI usage

If you have used the installer for Windows, macOS, or Linux, you will find a program icon in your application starter menu, which you can click to start GPX Animator. For the OS independent Java Archive, please use the command line to start the GUI.

CLI usage

GPX Animator needs at least Java 15 or newer! We suggest to use AdoptOpenJDK, but any other distribution should work, too.

For default GUI run:

java -jar gpx-animator-1.6.0-all.jar

For program help run:

java -jar gpx-animator-1.6.0-all.jar --help

For direct rendering run:

java -jar gpx-animator-1.6.0-all.jar --input track.gpx

Command line parameters

--attribution <text>
map attribution text; %MAP_ATTRIBUTION% placeholder is replaced by attribution of selected pre-defined map; default
Created by %APPNAME_VERSION%
%MAP_ATTRIBUTION%
--attribution-position <position>
sets position for the attribution to be placed on the animation; default bottom left
--attribution-margin <attribution-margin>
sets margin (in pixels) from edge for the attribution block; default 20
--background-color <background-color>
background color (behind the map and the background image); default java.awt.Color[r=255,g=255,b=255]
--background-image <background-image>
background image (above the map)
--background-map-visibility <background-map-visibility>
opacity of the background map from 0.0 to 1.0; default 0.5
--color <color>
track color in #RRGGBB representation; can be specified multiple times if multiple tracks are provided; default some nice color :-)
--flashback-color <ARGBcolor>
transition color between non-idle parts; default opaque white - #ffffffff
--flashback-duration <duration>
time of the idle-skipping flashback effect in milliseconds; default 250
--font <font>
text font for attribution and information; default Monospaced-PLAIN-12
--forced-point-time-interval <milliseconds>
interval between adjanced GPS points in milliseconds - useful for GPX files with missing point time information; if specified then time offset must be set representing absolute; empty for no forcing; can be specified multiple times if multiple tracks are provided
--fps <fps>
frames per second; default 30.0
--gui <gui>
show GUI; default if no argument is specified
--height <height>
video height in pixels; if unspecified, it is derived from width, GPX bounding box and margin
--help <help>
this help
--input <input>
input GPX filename; can be specified multiple times if multiple tracks are provided
--information-position <information-position>
sets position for the information to be placed on the animation; default bottom right
--information-margin <information-margin>
sets margin (in pixels) from edge for the information block; default 20
--comment-position <comment-position>
sets position for the comment to be placed on the animation; default bottom center
--comment-margin <comment-margin>
sets margin (in pixels) from edge for the comment block; default 20
--track-icon <trackIcon>
enables an icon that replaces the standard circle of the current position (valid values: Airplane, Bicycle, Bus, Car, Jogging, Motorcycle, Riding, Sailing, Ship, Train, Tramway, Trekking); can be specified multiple times if multiple tracks are provided
--track-icon-file <trackIconFile>
allows you to set an icon file for a track; can be specified multiple times if multiple tracks are provided
--track-icon-mirror <mirrorTrackIcon>
mirror the track icon horizontally; can be specified multiple times if multiple tracks are provided; default false
--label <label>
text displayed next to marker; can be specified multiple times if multiple tracks are provided
--line-width <width>
track line width in pixels; can be specified multiple times if multiple tracks are provided; default 2.0
--logo-position <logo-position>
selects position for optional logo to be placed on the animation; default top left
--logo-margin <logo-margin>
sets margin (in pixels) from edge for the logo; default 20
--margin <margin>
margin in pixels; default 20
--marker-size <size>
marker size in pixels; default 8.0
--max-lat <latitude>
maximal latitude; leave empty if it should be automatically computed from the GPX tracks
--max-lon <longitude>
maximal longitude; leave empty if it should be automatically computed from the GPX tracks
--min-lat <latitude>
minimal latitude; leave empty if it should be automatically computed from the GPX tracks
--min-lon <longitude>
minimal longitude; leave empty if it should be automatically computed from the GPX tracks
--output <output>
filename for generated video or filename template for saved image frames where %06d will be replaced by frame sequence number; default D:\tmp\gpx-animator\GPX-Animation.mp4
--photo-time <milliseconds>
the amount of time, a photo should be shown above the map; default 3000
--photo-dir <directory>
a directory containing photos to be added to the animation (must contain EXIF information with date and time of photo taken)
--pre-draw-track <predraw-track>
pre-draw the entire track on the map; default false
--pre-draw-track-color <predraw-track-color>
pre-drawn track color in #RRGGBB representation; can be specified multiple times if multiple tracks are provided; default java.awt.Color[r=192,g=192,b=192]
--skip-idle <skip-idle>
idle-skipping flashback effect duration in milliseconds; set to empty for no flashback; default true
--speedup <speedup>
speed multiplication of the real time; complementary to specifying total time; default 1000.0
--tail-duration <time>
highlighted tail length in real time milliseconds; default 3600000
--tail-color <tail-color>
highlighted tail color; default java.awt.Color[r=0,g=0,b=0]
--time-offset <milliseconds>
time offset for track in milliseconds; can be specified multiple times if multiple tracks are provided
--tms-url-template <tms-url-template>
slippymap (TMS) URL template for background map where {x}, {y} and {zoom} placeholders will be replaced; for example use http://tile.openstreetmap.org/{zoom}/{x}/{y}.png for OpenStreetMap; default https://{switch:a,b,c}.tile.openstreetmap.org/{zoom}/{x}/{y}.png
--total-time <time>
total length of video in milliseconds; complementary to speedup
--speed-unit <speed>
sets the unit of speed; default Kilometers per hour
--viewport-width <viewport-width>
video viewport width in pixels; if not specified equals width
--viewport-height <viewport-height>
video viewport height in pixels; if not specified equals height
--viewport-inertia <viewport-inertia>
video viewport inertia as number of most recent locations used to compute viewport location; default 50
--waypoint-size <size>
waypoint size in pixels; for no waypoints specify 0; default 6.0
--width <width>
video width in pixels; if not specified but zoom is specified, then computed from GPX bounding box and margin, otherwise 800; default (800)
--zoom <zoom>
map zoom typically from 1 to 18; if not specified and TMS URL Template (Background Map) is specified then it is computed from width

FAQ

Application is crashing with java.lang.OutOfMemoryError: Java heap space

Increase java heap memory: java -Xmx1024m -jar gpx-animator-1.6.0-all.jar. If the problem persists, try higher value or check if your GPX trace doesn't cover too big area. If it does then try to specify lower zoom, width and/or height.

Does it run on Linux, Windows, WhateverOS?

Application will run on any platform where you can run Java.

My GPX is missing point timestamps

No problem. Add --forced-point-time-interval option.

Video is very short or long

Fine-tune speedup or specify exact total time in seconds.

The UI is too small on a high DPI screen

This can happen only, when you use the JAR file directly. It does not happen, when you download the installer and use the GPX Animator icon in your start menu. If you still want to use the JAR file directly and have an older version of Java without high DPI support, use the following command line to set the scaling factor accordingly:

GDK_SCALE=2 java -jar gpx-animator-1.6.0-all.jar

Error While Rendering - Invalid frame size (0x0)

A GPX file is like a container and can contain a lot of different information. GPX Animator needs track data to work properly. If you get this error message, it is likely that your file does not contain a track. Maybe it contains just waypoints and no track information. The next version of GPX Animator will show a much better error message (The GPX file "foobar.gpx" does not contain valid track data!).

Where do I enter the API key?

The maps in the dropdown box usually do not require an API key. If this changes, please report the map using the GitHub Issue Tracker (highly preferred) or write us at support@gpx-animator.app.

If you want to use an own map provider which requires an API key, please take a look at the documentation of your map provider. Usually, API keys are part of the URL, which you can enter directly in the field for the background map. This is an example URL:

https://map.provider.domain/path/{zoom}/{x}/{y}.png?apikey=ABC123

The placeholders in the curly braces will be automatically replaced by GPX Animator.

Loading map tiles takes a very long time

To prevent misuse, some map providers have introduced limits. If a certain amount of map data has been loaded within a certain period of time, the provider artificially slows down the loading of further map data.

With most map providers you can register. With some for free, with others for a fee. Then you usually get unlimited access without artificial throttling. Often you have to use an API key for access. See also the previous question about API Keys.

GPX Animator stores the map data for a configurable time on the local computer, so that the corresponding map data must be loaded only once and can be reused for further videos. This reduces time and traffic. By default, this cache is set to 24 hours. In the menu "File > Settings", you can adjust this time.

I have some other problem

Feel free to open an issue in the GitHub Issue Tracker (highly preferred) or write us at support@gpx-animator.app.

Demos

Tutorials

Contributors

Special thanks for all the people who had helped this project so far! Please take a look at the CONTRIBUTORS file for a complete list of all contributors.

Changelog

https://github.com/zdila/gpx-animator/blob/master/CHANGELOG.md