>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Kotlin

如何将你的Google位置历史记录变成流畅的路线视频

最近发现了一个有趣的项目:google-timeline-visualizer。这个项目可以将Google Maps导出的原始位置历史记录(Timeline.json)组装成选定时间段内旅行路线的动画MP4视频,并附带地图显示。

Videos library

几年前Google开始逐步将位置历史记录从云端迁移到用户设备上。现在这些数据以笨重的JSON文件形式存储在本地,包含坐标、路段和活动标记等复杂结构。项目作者最初为自己编写了一个Python脚本,后来将逻辑移植到了Android原生Kotlin应用和iOS网页版。

New video

这个工具能做什么

这个工具的主要用途很简单:将枯燥的位置点变成赏心悦目的动画,你可以毫无顾虑地分享到社交媒体,或作为旅行回忆保存下来。

其中包含一些有意思的解决方案:

  • GPS噪声过滤。如果你的手机短暂失去卫星信号,把你传送到了隔壁小镇,算法会切除这种剧烈的往返跳跃,不会破坏整体路线。
  • 航班插值。漫长的洲际飞行会沿大圆弧平滑过渡。相机沿着测地线平滑跟随标记点移动,而不是从A点瞬移到B点。
  • 平滑相机跟踪。在日常城市通勤中,标记点可能在一个固定屏幕区域内轻微游移,然后地图才开始在它后面平滑移动。这消除了等红绿灯和堵车时令人不适的抖动。
  • 灵活的渲染设置。可以设置10到300秒的时长,选择竖屏1080×1920用于手机故事版,或经典的横屏1080p。

如何在桌面端运行

最初这个项目是作为Python脚本开发的,使用FFmpeg来拼接瓦片和帧。桌面版本至今仍可使用。

你需要在系统上安装Python 3.9+和FFmpeg:

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

该脚本支持不同的坐标格式:标准数组、semanticSegments结构、E7坐标,以及带前缀的字符串(geo:)。

移动客户端和网页版

如果你不想折腾终端,有两个现成的选项:

  1. Android。仓库的releases中提供了现成的APK。应用使用Kotlin编写,直接在手机处理器上渲染视频,并将完成的视频保存到系统文件夹(Movies)。
  2. iPhone。通过Safari中的网页界面运行,使用浏览器内置的硬件H.264编码器进行编码。

要从源码构建Android项目,你需要JDK 17和Android SDK 36:

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

隐私注意事项

位置数据是敏感的,所以作者将渲染严格限制在本地进行。这里没有Google账号授权,也不会将JSON发送到第三方服务器。

唯一的网络交互是从基于OpenStreetMap的CARTO服务加载栅格地图瓦片。在加载第一张地图之前,应用会直接警告你这些网络请求。

谁会觉得有用

这个项目适合喜欢年终总结和可视化旅行的人。源代码也值得移动开发者一看:代码库清晰展示了如何在不依赖重型外部库的情况下组织瓦片地图和视频流渲染。

相关项目