View on GitHub Downloads

GPX Animator

Advanced GPX to Video converter

GPX Animator

Introduction

GPX Animator generates video from GPX files.

Features

Roadmap

Here is a small preview of the new features planned for the next versions of GPX Animator:

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

GPX Animator v1.8.2



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

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 17 or newer! We suggest to use AdoptOpenJDK or the Azul Zulu Builds of OpenJDK, but any other distribution should work, too.

For default GUI run:

java -jar gpx-animator-1.8.2-all.jar

For program help run:

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

For direct rendering run:

java -jar gpx-animator-1.8.2-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
--trim-gpx-start <trim-gpx-start>
trim the start of the GPX file in milliseconds
--trim-gpx-end <trim-gpx-end>
trim the end of the GPX file in milliseconds
--information <text>
information text with placeholder support for speed, latitude & longitude, date & time; default
%SPEED%
%LATLON%
%DATETIME%
--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
--keep-first-frame <keep-first-frame>
time to repeat the first rendered frame in milliseconds; complementary to total time
--keep-last-frame <keep-last-frame>
time to repeat the last rendered frame in milliseconds; complementary to total time
--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]
--tail-color-fadeout <tail-color-fadeout>
fade out highlighted tail color at the end of the animation; default true
--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}, {zoom}, and {apikey} 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
--tms-api-key <api-key>
optional API key, if the map provider requires one
--tms-user-agent <tms-user-agent>
optional User Agent to use for requests to the TMS server; default
GPX Animator
--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
--gps-timeout <milliseconds>
GPS position timeout; default
60000
--version
prints the version and exits

FAQ

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

Increase java heap memory: java -Xmx1024m -jar gpx-animator-1.8.2-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?

GPX Animator 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.8.2-all.jar

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.

Can I use the animation for commercial projects?

The animation created by GPX Animator can be used free of charge for commercial projects. If you use a background map, please remember to provide background map attribution. Crediting GPX Animator would be nice.

My photos are not shown in the animation

Photos and tracks need to fit some requirements. The photos must be valid image files in either JPEG or PNG format. The EXIF header needs to contain the date and time, the photo was taken. The track points of the GPX track needs to contain valid date and time stamps, too. GPX Animator matches the time stamps of the photos to the time stamps of the track points to determine when to display the photo in the animation.

If one or more of these requirements are not met or the dates and times do not match, the photos will not show up in the animation.

How do I create the moving map effect?

There are two settings in the General tab: Width x Height and Viewport Width x Height. If the viewport width and height is smaller than the general width and height, the map will not fit in the viewport and start moving automatically. You can adjust the smoothness of the animation by modifying the Inertia value.

I have some other problem

Please take a look at our Support section on this website for information about how to get in contact with us. But please be patient, this is a private project, I'm working on in my rare spare time.

Demos

Tutorials

Support

Please be patient. This is a private project, I'm working on in my rare spare time.

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/gpx-animator/gpx-animator/blob/master/CHANGELOG.md

Copyright Contributors to the GPX Animator project.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Imprint

Contact

Marcus Fihlon
Winkelriedstrasse 25
6003 Luzern
Schweiz

info@gpx-animator.app

Google Analytics Privacy Statement

This website uses Google Analytics, a web analytics service provided by Google, Inc. ('Google'). Google Analytics uses 'cookies', which are text files placed on your computer, to help the website analyze how users use the site. The information generated by the cookie about your use of this website (including your IP address, which is, however, anonymized before being stored so that it can no longer be assigned to a connection) is transmitted to a Google server in the USA and stored there. The following data is collected: Address and title of the visited page or of clicked links, screen resolution, browser type, browser version, browser window size, color depth, browser language, Java plugin activated or not and information about the origin. This list may be expanded by Google and reflects only its current knowledge of the analysis. Google will use this information for the purpose of evaluating your use of the website, compiling reports on website activity for website operators and providing other services relating to website activity and internet usage. Google may also transfer this information to third parties where required to do so by law, or where such third parties process the information on Google's behalf. Google will not associate your IP address with any other data held by Google. You can prevent the installation of cookies by selecting the appropriate settings on your browser software. By using this website, you consent to the processing of data about you by Google in the manner and for the purposes set out above.

You can object to the collection of data by Google Analytics with effect for the future by installing a deactivation add-on for your browser.