Jak przekształcić historię lokalizacji Google w płynne filmy z trasami
Niedawno natknąłem się na ciekawy projekt: google-timeline-visualizer. Projekt pobiera surowe eksporty historii lokalizacji z Google Maps (Timeline.json) i składa je w animowany film MP4 z mapą Twoich podróży dla wybranego okresu.

Kilka lat temu Google zaczęło stopniowo przenosić historię lokalizacji z chmury na urządzenia użytkowników. Teraz te dane znajdują się lokalnie w rozbudowanych plikach JSON o złożonej strukturze współrzędnych, segmentów i znaczników aktywności. Autor projektu najpierw napisał skrypt w Pythonie do użytku osobistego, a następnie przeniósł logikę na natywną aplikację Kotlin dla Androida i wersję webową dla iOS.

Co potrafi to narzędzie
Główny cel narzędzia jest prosty: zamienić suche punkty lokalizacji w przyjemną animację, którą nie wstydisz się zamieścić w mediach społecznościowych lub zachować jako pamiątkę z wakacji.
Oto kilka interesujących rozwiązań w środku:
- Filtrowanie szumu GPS. Jeśli Twój telefon na chwilę straci zasięg satelitarny i przeniesie Cię do sąsiedniego miasta, algorytm wycina takie ostre skoki tam i z powrotem i nie przerywa ogólnej linii trasy.
- Interpolacja lotów. Długie loty międzykontynentalne są wygładzane wzdłuż łuku wielkiego koła. Kamera płynnie leci wzdłuż linii geodezyjnej podążając za znacznikiem, zamiast teleportować się z punktu A do punktu B.
- Płynne śledzenie kamery. Podczas codziennych dojazdów miejskich znacznik może nieznacznie wędrować w ustalonej strefie ekranu, a dopiero wtedy mapa zaczyna się za nim płynnie przesuwać. Eliminuje to nieprzyjemne zacinanie się na światłach i w korkach.
- Elastyczne ustawienia renderowania. Możesz ustawić czas trwania od 10 do 300 sekund, wybrać pionowy format 1080×1920 do historii mobilnych lub klasyczny poziomy 1080p.
Jak uruchomić na desktopie
Początkowo projekt ewoluował jako skrypt Pythona używający FFmpeg do łączenia kafelków i klatek. Wersja desktopowa nadal działa.
Będziesz potrzebować Pythona 3.9+ i FFmpeg zainstalowanych w systemie:
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
Skrypt obsługuje różne formaty współrzędnych: standardowe tablice, strukturę semanticSegments, współrzędne E7 oraz ciągi z prefiksami geo:.
Klienci mobilni i wersja webowa
Jeśli nie chcesz grzebać w terminalu, masz dwie gotowe opcje:
- Android. Gotowy plik APK jest dostępny w wydaniach repozytorium. Aplikacja jest napisana w Kotlinie, renderuje wideo bezpośrednio na procesorze telefonu i zapisuje gotowe klipy do folderu systemowego
Movies. - iPhone. Działa przez interfejs webowy w Safari. Do kodowania używany jest sprzętowy enkoder H.264 w przeglądarce.
Aby zbudować projekt Android od zera, będziesz potrzebować JDK 17 i Android SDK 36:
./gradlew test lint assembleGithubDebug assemblePlayDebug
python -m pip install -r requirements-dev.txt
python -m pytest
Kwestie prywatności
Dane lokalizacyjne są wrażliwe, więc autor sprawił, że renderowanie odbywa się ściśle lokalnie. Nie ma tutaj autoryzacji konta Google ani wysyłania JSON na serwery stron trzecich.
Jedyna interakcja sieciowa to ładowanie rastrowych kafelków map z usługi CARTO opartej na OpenStreetMap. Przed załadowaniem pierwszej mapy aplikacja bezpośrednio ostrzega o tych żądaniach sieciowych.
Kto znajdzie to przydatne
Projekt będzie interesujący dla tych, którzy lubią podsumowywać rok i wizualizować swoje podróże. Kod źródłowy jest również warty sprawdzenia dla programistów mobilnych: codebase wyraźnie pokazuje, jak zorganizować renderowanie kafelków map i strumienia wideo bez ciężkich zewnętrznych bibliotek.
Powiązane projekty