>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Kotlin

Come Trasformare la Tua Cronologia Posizioni di Google in Video Route Fluidi

Recentemente mi sono imbattuto in un repository interessante: google-timeline-visualizer. Il progetto prende gli export grezzi della cronologia posizioni da Google Maps (Timeline.json) e li assembla in un video MP4 animato con una mappa dei tuoi viaggi per il periodo selezionato.

Videos library

Un paio d'anni fa, Google ha iniziato a spostare gradualmente la cronologia posizioni dal cloud ai dispositivi degli utenti. Ora questi dati risiedono localmente in file JSON ingombranti con una struttura complessa di coordinate, segmenti e marker di attività. L'autore del progetto ha prima scritto uno script Python per uso personale, poi ha portato la logica in un'app nativa Kotlin per Android e in una versione web per iOS.

New video

Cosa può fare l'utilità

Lo scopo principale dell'utilità è semplice: trasformare punti di posizione secchi in un'animazione piacevole che non ti vergognerai di postare sui social media o di conservare come ricordo delle tue vacanze.

Ecco alcune soluzioni interessanti al suo interno:

  • Filtraggio del rumore GPS. Se il tuo telefono perde il fix satellitare per un secondo e ti spedisce nella città vicina, l'algoritmo taglia fuori questi bruschi salti avanti e indietro e non rompe la linea complessiva del percorso.
  • Interpolazione dei voli. I lunghi voli intercontinentali vengono livellati lungo un arco di cerchio massimo. La camera vola dolcemente lungo la linea geodetica seguendo il marker, invece di teletrasportarsi dal punto A al punto B.
  • Tracking fluido della camera. Durante gli spostamenti quotidiani in città, il marker potrebbe vagare leggermente all'interno di una zona dello schermo fissa, e solo dopo la mappa inizia a muoversi dolcemente dietro di esso. Questo elimina il fastidioso jitter ai semafori e negli ingorghi.
  • Impostazioni di rendering flessibili. Puoi impostare la durata da 10 a 300 secondi, scegliere il formato verticale 1080×1920 per le storie mobile o il classico orizzontale 1080p.

Come eseguire sul desktop

Inizialmente, il progetto si è evoluto come script Python usando FFmpeg per comporre tile e frame. La versione desktop funziona ancora.

Avrai bisogno di Python 3.9+ e FFmpeg installati sul tuo sistema:

python -m pip install -r requirements.txt
python visualizer.py --input Timeline.json --year 2025 --camera-movement steady \
  --long-trip-compression balanced --output my_trip_2025.mp4

Lo script supporta diversi formati di coordinate: array standard, struttura semanticSegments, coordinate E7 e stringhe con prefissi geo:.

Client mobili e versione web

Se non vuoi impazzire con il terminale, ci sono due opzioni pronte all'uso:

  1. Android. Un APK pronto è disponibile nei release del repository. L'app è scritta in Kotlin, renderizza il video direttamente sul processore del telefono e salva i clip finiti nella cartella di sistema Movies.
  2. iPhone. Funziona attraverso un'interfaccia web in Safari. Il codificatore hardware H.264 nel browser viene usato per la codifica.

Per buildare il progetto Android da zero, avrai bisogno di JDK 17 e Android SDK 36:

./gradlew test lint assembleGithubDebug assemblePlayDebug
python -m pip install -r requirements-dev.txt
python -m pytest

Considerazioni sulla privacy

I dati di posizione sono sensibili, quindi l'autore ha reso il rendering rigorosamente locale. Non c'è autorizzazione con account Google o invio di JSON a server di terze parti qui.

L'unica interazione di rete è il caricamento delle tile raster della mappa dal servizio CARTO basato su OpenStreetMap. Prima di caricare la prima mappa, l'app avverte direttamente di queste richieste di rete.

A chi tornerà utile

Il progetto sarà interessante per chi ama fare il punto dell'anno e visualizzare i propri viaggi. Il codice sorgente vale anche la pena di essere controllato per gli sviluppatori mobile: la codebase dimostra chiaramente come organizzare il rendering della mappa a tile e dello stream video senza librerie esterne pesanti.

Progetti correlati