close
  • Li chevron_right

    GPX2Video - GPS & Vidéo

    news.movim.eu / LinuxFRJournaux · Saturday, 9 October - 08:33 · 2 minutes

Pendant quelques années, j'ai utilisé une GoPro Hero 5 Black pour filmer quelques activités sportives. Je n'ai trouvé aucun logiciel sous Linux pour effectuer mes petits montages vidéos et y insérer les données de télémétries (issues du GPS de la caméra ou d'un GPS externe).

La seule solution que j'ai trouvée est de me tourner sous Windows avec finalement très peu de solution gratuite : GoPro Quick for Desktop ou encore Garmin Virb Edit.

L'application Garmin Virb Edit n'est pas très pratique car elle ne sait pas lire les données du GPS issues de la caméra. Et par conséquent, la synchronisation des données d'un GPS externe avec la vidéo est assez approximative !

L'application fournie par GoPro a l'avantage d'être simple mais elle ne sait lire que les données du GPS interne et il est impossible de les compléter avec les données d'un GPS externe !

Depuis mon passage à la GoPro Hero 9 Black (et en fait ça concerne tout ce qui sont passés à la GoPro 8 et suivantes…), GoPro Quick ne supporte plus ces caméras et surtout n'est plus maintenu par GoPro !

N'ayant au final aucune solution idéale et surtout aucune solution sous Linux, j'ai fini par prendre mon clavier et commencer à écrire un petit outil réalisant cela.

La première étape consiste à incruster les données GPS dans l'image sans en modifier les propriétés. Puis de faire le montage vidéo.

Les objectifs du développement (qui seront en C++) :

1°/ Ajouter en overlay les données issues du GPS sur la vidéo. Cet outil en ligne de commande conservera les propriétés du format de la vidéo. Les données GPS devront être fournies au format GPX (il existe déjà pour cela plusieurs outils permettant d'extraire les données d'une GoPro)

2°/ Synchroniser automatiquement la vidéo & les données GPS. A ma grande surprise, l'heure de la GoPro n'est pas synchronisée à l'heure du GPS !!! Idéalement, il faut configurer l'heure de la GoPro depuis l'application sur le téléphone, sinon on ne peut pas configurer les secondes ! Le problème est que l'heure de la caméra dérive avec le temps, il faut donc faire cela de temps en temps. La GoPro ne connait pas non plus les fuseaux horaires…
On a donc l'heure approximative de création de la vidéo.
Et dans les données GPS on a l'heure exacte.
=> A partir de là, je serai capable de connaitre l'offset entre les deux.

Bien sûr, il sera possible d'indiquer un offset manuellement, si jamais la caméra n'a pas acquis le signal GPS, ou encore si ce n'est pas une GoPro :)

3°/ Paramétrer la position et la taille des jauges.

4°/ Incruster la cartographie et la trace GPS.

5°/ Modifier le format de la vidéo (encodage, taille, durée…)

6°/ Pourquoi pas l'intégrer dans une application de montage vidéo (afin de profiter de l'interface graphique)

Vous trouverez ici un début :
http://progweb.com/gpx2video-tool.zip

Le binaire a été construit sous Debian buster. Je fournirai prochainement l'application packagée pour Debian. Puis dans un second temps, les sources devraient être disponibles quand j'aurai nettoyé un peu le code.

$ ./gpx2video --media ./my-videos/my-video-clip.mp4 --gpx ./my-data/activity.gpx --output video.mp4

Commentaires : voir le flux Atom ouvrir dans le navigateur