# GPX - Compteur de vitesse
Image extraite de la vidéo d'exemple (trajet Brest - Plabennec)

Script Python transformant une trace GPX en vidéo MP4 carrée 1024×1024, prête à être incrustée dans un autre montage.

Trace blanche sur fond noir, cercle blanc qui suit le trajet, compteur de vitesse à aiguille et noms des villes traversées.

## Table des matières - [Fonctionnalités](#fonctionnalités) - [Installation](#installation) - [Utilisation](#utilisation) - [Structure du projet](#structure-du-projet) ## Fonctionnalités - Lecture GPX 1.0 / 1.1 (points `trkpt` horodatés). - Vitesse issue de l'extension `gpxtpx:speed` (m/s, ex. GeoRide) si présente, sinon calculée à partir des distances et des temps ; lissage léger. - Vidéo accélérée à durée fixe (60 s par défaut) : le trajet complet est parcouru du début à la fin. - Compteur analogique 0-200 km/h (paramétrable), aiguille et vitesse numérique, placé automatiquement dans le coin le moins encombré par la trace ; l'aiguille part de 0 et y revient sur la première et la dernière seconde. - Villes traversées obtenues par géocodage inverse [Nominatim](https://nominatim.org/) (OpenStreetMap), affichées sur la carte dès le début, avec placement des étiquettes qui évite chevauchements et trace. - Cache des villes dans `.villes.json` : les exécutions suivantes n'accèdent plus au réseau. - Rendu anticrénelé (suréchantillonnage ×2), encodage H.264 `yuv420p` via ffmpeg, sans fichiers intermédiaires. ## Installation Prérequis : Python 3.10+ et [ffmpeg](https://ffmpeg.org/) accessible dans le `PATH`. ```powershell python -m venv .venv .venv\Scripts\Activate.ps1 pip install -r requirements.txt ``` ## Utilisation ```powershell python gpx_video.py Trajet_16-09-2026_15h38.gpx ``` Produit `Trajet_16-09-2026_15h38.mp4` à côté du GPX. | Option | Défaut | Rôle | | ---------------- | -------------------- | -------------------------------------- | | `-o`, `--sortie` | nom du GPX en `.mp4` | fichier de sortie | | `--duree` | `60` | durée de la vidéo (secondes) | | `--fps` | `30` | images par seconde | | `--vmax` | `200` | graduation max du compteur (km/h) | | `--sans-villes` | — | ne pas géocoder ni afficher les villes | Exemple : `python gpx_video.py trace.gpx -o balade.mp4 --duree 90 --fps 25` Notes : - Le premier lancement interroge Nominatim (1 requête/s, un point par km de trajet) : compter environ 1 s par km. - En cas d'erreurs réseau, la vidéo est générée sans villes et le cache n'est pas écrit. Supprimer `.villes.json` pour forcer un nouveau géocodage. ## Structure du projet ``` gpx_video.py script principal (lecture GPX, villes, rendu, encodage) requirements.txt dépendances Python (numpy, Pillow) docs/exemple.png image extraite de la vidéo d'exemple (README) Trajet_16-09-2026_15h38.gpx trace d'exemple (GeoRide) Trajet_16-09-2026_15h38.villes.json cache des villes de l'exemple Trajet_16-09-2026_15h38.mp4 vidéo générée pour l'exemple ```