[gps-overlay-on-video] HowTo: Anzeige von GPS-Daten in Videos mit Linux

Viele kennen sicherlich nette Videos von Radtouren und -rennen, bei denen man nicht nur – unterschiedlich „actionreich“ – die Strecke zu sehen bekommt, sondern auch interessante Telemetriedaten wie aktuelle Geschwindigkeit, Tritt- und/oder Herzfrequenz, Höhe oder Position auf dem Gesamttrack zu sehen bekommt. Diese Daten wurden dann entweder direkt von der Kamera aufgezeichnet, so zumindest bei der Garmin Virb, oder sie stammen vom GPS-Fahrradcomputer oder einem anderen GPS-Empfänger.

Vor einiger Zeit hatte ich ja schon einmal darüber geschrieben, wie man diese GPS-Daten unter Linux in sein Video klöppeln kann. Allerdings war das eine Lösung mit Windowssoftware in einer virtuellen Maschine. Auf der Suche nach passender Software stieß ich aber auch auf ein kleines Projekt, das auch eine Lösung versprach, die direkt unter Linux läuft. Und genau die habe ich dann auch gefunden, aber aus Zeitmangel nicht weiter verfolgt.

Das Ganze nennt sich gps-overlay-on-videos und ist bei githhub zu finden. Leider ist die Software so gut wie nicht dokumentiert, weshalb ich hier kurz zu erklären versuchen werde, wie man sie nutzen kann. Als System kommt bei mir übrigens Linux Mint zum Einsatz, die Anleitung sollte aber auch, was die „Installation“ betrifft, für andere debianbasierte Pinguine nutzbar sein.

Zunächst lädt man sich das aktuelle Paket herunter und entpackt es. Nun ist es im Grunde schon einsatzbereit, denn anders als sonst wird hier immer direkt zur Laufzeit kompiliert, es muss also programmseitig nichts weiter installiert werden. Lediglich sbt ist erforderlich, was sich mittels

echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee
 -a /etc/apt/sources.list.d/sbt.list && sudo apt-key adv
 --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
 && sudo apt-get update && sudo apt-get install sbt

ganz fix installieren lässt. (Übrigens ist sbt auch für Mac und Windows verfügbar.) Nun kann die gps-overlay-on-video ganz einfach gestartet werden, indem man das entpackte Verzeichnis in einem Terminal öffnet und

sbt run

eingibt. Bei mir kam es in diesem Falle dazu, das die Sache direkt nach Eingabe des Befehls stehen blieb. Allerdings war ich da nicht der erste, wie ein Fehlerbericht bei github zu berichten wusste. Dort fand sich dann allerdings auch die Lösung. Wenn man Java nur in der headless-Version installiert hat, fehlen wichtige Bibliotheken. Welche Version installiert ist, lässt sich dabei mittels

sudo dpkg -l | grep openjdk

feststellen. Hat man die headless-Version, so deinstalliert man diese mittels

sudo apt-get remove openjdk-8-jre-headless

und kann durch

sudo apt-get install openjdk-8-jre

die vollständige Version installieren, mit der die Sache dann auch läuft. Die entsprechende Java-Version – hier die 8 – muss natürlich entsprechend der Ausgabe von dpkg angepasst werden. Der erste Start dauert dann möglicherweise etwas länger, also nur Geduld. Bei mir waren es etwa 7 Minuten. Weitere Programmstarts sind dann wesentlich schneller. Und so sieht die Sache dann aus:

Screenshot: gps-overlay-on-video

Als nächstes kommen die Daten dran. Links oben lädt man via „Browse“ die Videodatei, rechts oben auf dem gleichen Weg das GPX-File. Sofern Video und GPX die gleiche Länge haben, kann man nun schon direkt loslegen. Das ist allerdings eher selten der Fall, bspw. dann, wenn man bspw. die oben schon erwähnte Garmin Virb verwendet, die dank eingebautem GPS auch immer gleich das zum Videofile passende GPX erzeugt.

Passen Video und GPX nicht exakt zusammen, muss man nun das Offset des GPX von Hand einstellen, leider erfolgt nämlich kein abgleich mit Zeitstempeln. Ob eine solche Funktion geplant ist, vermag ich leider nicht zu sagen. Um das Offset einzustellen, sucht man sich zunächst die Stelle im Track, an der das Video beginnt. Klickt man darauf, wird der blaue Marker dorthin versetzt und zeigt die genaue Zeit im GPX an.

Diese kann nun auf dem Zeitwähler unter der Karte eingestellt werden, worauf auch der gelbe Marker versetzt wird. Theoretisch kann man den blauen Marker aber auch komplett ignorieren und alles direkt über die Zeitauswahl machen. Passt der Beginn, muss der blaue Marker wieder auf Anfang gesetzt werden (Keine Ahnung warum…) und dann braucht eigentlich nur noch – unten rechts – ausgewählt werden, welche Aktivität es ist.

Zur Auswahl stehen Rad und Ski fahren. Also soweit die Theorie, bei Tests hatte ich in jedem Fall immer das Radeltemplate im Video. Vielleicht ist diese Funktion aber noch gar nicht weiter aktiv. Und es gibt leider eine weitere Einschränkung: Man sieht zwar allerlei nette Gauges, kann diese aber nicht einzeln auswählen, einfügen und/oder skalieren. Aktuell muss man tatsächlich auf die vorgefertigten/mitgelieferten Templates zurückgreifen. Allerdings gefallen mir diese ganz gut, so dass ich dies eher unproblematisch sehe. Inwieweit die Software tatsächlich noch entwickelt wird, lässt sich leider nicht einschätzen. die letzten Commits bei github liegen jedoch nicht allzu weit zurück, so dass durchaus Hoffnung besteht.

Nun, als letztes bleibt noch das Rendern. Einfach oben im Menü auf die Schaltfläche „convert“ klicken und ein Zielfile auswählen. Hier kommt es gelegentlich zu einem Fehler: Vergibt man einen Dateinamen und gibt auch den passenden Pfad an, dann kommt eine Fehlermeldung, dass das gewünschte File nicht geschrieben werden kann. In diesem Fall genügt es, im Zielverzeichnis ein leeres Dokument anzulegen, dem man dann den gewünschten Dateinamen (inkl. Endung .mp4) gibt und wählt dieses leere Dokument dann als Zieldatei aus. Dann läuft der Export umgehend los.

Manchmal passiert es, dass trotz korrekt eingestelltem Offset beim Rendern das GPX von Beginn an und nicht vom eigentlich korrekten Startzeitpunkt genutzt wird. Leider weiß ich nicht woran das liegt, jedoch gibt es einen einfachen Workaround. Einfach das Projekt kurz speichern und dann neu öffnen, nun wird beim Export der korrekte Zeitpunkt genutzt.

Nun hat man sein Video mit den entsprechenden Daten im Overlay versehen und kann es weiter bearbeiten/verwenden. Ich selbst nutze dazu dann OpenShot, wo die einzelnen Files zusammengesteckt und mit Übergängen versehen werden und das übliche Rauschen des Fahrrades durch ein wenig Hintergrundmusik ersetzt wird. Zum Test hatte ich extra mal auf meiner Hausrunde ein wenig gefilmt, heraus kam dabei das hier:

Es gibt übrigens auch ein kleines Videotutorial zum Gebrauch von gps-overlay-on-video, und zwar von demjenigen, der bei github auch das Problem mit der Javaversion gelöst hat. Dabei geht es dann vornehmlich darum, die Sache zum laufen zu bekommen, es wird aber auch kurz erklärt, wie man die Telemetriedaten dann letztlich ins Video klöppelt.

Für den einfachen Programmstart habe ich mir übrigens einen Starter angelegt. Dazu habe ich ein kleines Script gebastelt, das die ganze Sache startet:

#!/bin/bash
 
cd /home/$USER/gps-overlay-on-video-master
sbt run

Das Script bekommt noch einen Namen, zum Beispiel gps-overlay.sh und muss mittels chmod +x ausführbar gemacht werden. Nun kann man einen Starter anlegen, der dieses Script aufruft. Unter Linux Mint genügt es, einen Rechtsklick auf den Desktop zu machen und dann den Starter anzulegen. Dazu vergibt man dann einen Namen und als Kommando trägt man sh ./pfad/zu/gps-overlay.sh ein. Beim Speichern des Starters erfolgt dann noch eine Abfrage, ob der Starter zusätzlich auch zum Menü hinzugefügt werden soll. Fertig.

Schrottie

Ich blogge hier seit Anfang 2005 über wechselnde Themen. Zumeist handelt es sich dabei um Linux, Android, Geocaching oder Fotografie, aber zunehmend auch rund ums Fahrradfahren (mit MTB und Rennrad), das ich nach einigen Jahren Pause wieder für mich entdeckt habe.

Dabei ist die Themenwahl insgesamt recht selektiv, also ich schreibe immer nur dann, wenn mich etwas wirklich interessiert und/oder bewegt und so kommt es dann auch, das man hier zuweilen auch private Dinge findet.

Wer mir für die Arbeit ein kleines Dankeschön zukommen lassen möchte, der kann dies gern über meinen Amazon Wunschzettel tun. :-)

Kommentar verfassen