ESC
开源 1 分钟阅读

google-timeline-visualizer:使用Google位置历史(时间轴)数据可视化你的年度旅行

这是一个开源工具,可将Google Maps时间轴导出的Timeline.json转换为旅行动画视频。支持Android应用和iPhone网页应用,无需上传数据,完全本地渲染。可选择日期范围、预览旅程并生成MP4。支持多语言、多格式输出,并注重隐私保护。

来源:GitHub日榜

时间轴可视化器

한국어 안내 · 日本語

将你的时间轴文件变成Android手机上的旅行动画视频。选择精确日期、预览旅程,并创建可随时观看或分享的MP4。

视频库

新视频

Android License Build

在iPhone上使用

在Safari中打开iPhone网页应用。无需安装应用,也不会上传时间轴文件。

  1. 在Google地图中,打开个人资料图片 → 设置 → 个人内容 → 导出时间轴数据,并将Timeline.json保存在“文件”中。
  2. 返回网页应用,选择选择Timeline.json。
  3. 选择月份范围或精确日期,选择镜头运动方式,并确认地图隐私提示。
  4. 预览旅程,然后选择创建MP4。
  5. 播放、分享或下载完成的视频。

创建MP4需要Safari 16.4或更高版本,并支持H.264编码。创建视频时请保持标签页打开。要将网页应用添加到主屏幕,请使用Safari的分享菜单并选择添加到主屏幕。

在Android上安装

该应用尚未上架Google Play。请从此仓库的最新版本安装:

  1. 在Assets下,下载最新的TimelineVisualizer-*.apk文件到手机上。不要下载.sha256校验和文件。
  2. 打开下载的文件。
  3. 如果Android阻止安装,请选择设置,允许你的浏览器或文件管理器安装未知应用,然后返回重试。
  4. 安装完成后,你可以再次关闭该权限。

只从此仓库下载APK。Android可能会显示警告,因为该应用是从Google Play之外安装的。对于直接分发的APK,出现此类警告是正常的。未来的版本可以覆盖安装到此版本之上。

需要Android 8.0或更高版本。

获取时间轴文件

在Android上,导出位于手机的“设置”应用中,而非Google地图中:

  1. 打开手机设置。
  2. 选择位置 → 位置服务 → 时间轴。
  3. 选择导出时间轴数据,然后选择继续。
  4. 将Timeline.json保存到容易找到的位置,例如下载。

如果你的手机上时间轴菜单缺失或标签不同,请参阅Google的时间轴帮助。

名称和菜单位置可能因手机而异。在时间轴可视化器中,获取时间轴文件会显示这些说明,并可以为你打开位置设置。Android不向应用提供直接链接到时间轴页面的标准方式。

在iPhone上,导出的JSON可以直接用于iPhone网页应用。也可以将其移动到Android手机并在Android应用中打开。

恢复丢失的Google地图时间轴

如果更换手机、重新安装Google地图或重置设备后旧行程消失,Google地图中可能有加密的时间轴备份。请使用应用中的恢复Google地图时间轴链接,或按照恢复指南操作。

先在Google地图中恢复历史记录,然后导出新的JSON文件。时间轴可视化器无法访问你的Google账户或加密备份,也不会直接恢复。

创建并分享视频

  1. 打开创建视频,选择选择文件,然后选择你的时间轴文件。
  2. 选择月份范围,或使用精确日期以获取仅持续几天的旅行。默认选择最近完整年份,范围可以跨年。
  3. 确认名称和标题模板,然后选择预设或自定义旅程时长(10到300秒)。模板会保存以备下次使用,并支持{year}和{name}。超过60秒的时长会显示渲染时间和存储提醒。
  4. 选择预览以检查动画地图。这是一个交互式预览。保存的视频使用相同设计,并在渲染前准备好地图瓦片。
  5. 选择创建视频。在Android 10及更高版本上,应用会自动保存到Movies/Timeline Visualizer。Android 8和9使用系统“另存为”选择器。应用会显示每个阶段、在测量到足够进度时显示预计时间,以及取消按钮。你可以切换应用或关闭屏幕,它仍会继续。
  6. 视频保存后,观看或分享它,使用另存为将其复制到其他位置,可选保存或分享1080×1080的旅程概览,或创建另一个视频。

成功加载时间轴后,应用会记住其文档引用,并在打开新视频且存储提供程序保留访问权限时重新打开。它不会复制时间轴数据。如果文件被移动或权限丢失,应用将返回正常加载流程。

较旧的行程会淡出在移动标记之后,因此较长、详细的时间轴仍能保持清晰且渲染高效。在选定的旅程时长之后,视频会添加1.5秒的结尾,拉远镜头、显示完整路线,并保持最终概览半秒钟。

如果取消,应用会删除不完整的输出文件。预览到达末尾后,再次选择预览会从头开始。在Android 13或更高版本上,允许通知可在应用外跟踪进度并收到就绪提醒。即使你拒绝通知权限,视频创建仍会继续。

保留你的视频

完成的视频会自动添加到我的视频中。每个条目保留缩略图、标题、时间轴周期、时长和创建日期,并提供快速操作以观看或分享。视频在应用内的全屏播放器中打开,支持拖动进度、分享和外部播放器回退。自动创建的MP4文件保留在Movies/Timeline Visualizer中。应用仅存储一个小的本地索引和由最终旅程概览生成的确定性缩略图。

使用添加视频可包含在此库引入之前创建的MP4。你可以一次选择多个视频。如果文件在应用外被移动或删除,其条目会标记为文件不可用,以便你从列表中移除。

从列表移除会保留MP4文件不变。删除视频是单独的、需确认的操作,当其存储提供程序允许时,会永久删除该文件。全部删除在确认后会删除所有可用视频。底部导航使我的视频、创建视频和设置易于访问。

视频设置

设置控制每个新视频的默认值。稳定镜头和平衡长途压缩是默认设置。固定镜头保持一个缩放级别,而动态镜头会更积极地跟随局部移动。长途压缩只改变动画时间,从不改变路线几何。视频格式提供方形480p、720p和1080p输出,以及竖屏1080×1920和横屏1920×1080预设。恢复默认会将所有视频设置重置为推荐值。

时间轴处理默认使用保守的GPS离群值过滤。它只忽略孤立的、不合理的往返坐标,并报告忽略的数量,同时保持原始JSON文件不变。将过滤器设置为“关”可使用所选文件中的每个位置。

应用支持英语、韩语、日语、简体中文、繁体中文、西班牙语、法语、德语和巴西葡萄牙语。在“设置”中选择任何受支持的语言,或保持系统默认。“设置”还显示已安装版本和构建代码。

长途飞行和其他稀疏路线将沿大圆路径插值,因此镜头会平滑地跟随行程,而不是跳到目的地。在本地出行期间,标记可以在稳定的中心区域内移动,然后镜头再跟随。这可以减少通勤时地图的快速来回移动,而不会更改或移除任何时间轴点。

支持的导出格式

  • 当前Android和iOS直接数组时间轴导出
  • 较旧的{ "semanticSegments": [...] }导出
  • 可选原始位置回退,带有警告和局部噪声降低
  • 时间轴路径、活动和到访地点
  • 字符串、latLng、度数、geo:和E7坐标
  • 穿越国际日期变更线的路线

隐私

不使用Google登录、位置权限、账户权限、分析或广泛的存储权限。应用只读取你选择的JSON和视频文件,视频渲染保持在设备上。

Google登录本可以提供个人资料名称,但Google不会通过登录公开手机的时间轴历史。要求登录会增加账户访问权限,却不会移除导出步骤,因此应用使用你可编辑的手机名称作为默认标题。

你的时间轴文件永远不会上传。底图是唯一的网络功能。CARTO会接收到所显示地图区域的请求,并根据OpenStreetMap数据提供瓦片。这可能向瓦片提供方透露所查看的区域,但时间轴JSON不会被上传。在首次加载时间轴之前,应用会解释这一传输并允许你取消。请参阅完整的隐私说明。

桌面Python版本

原始的Python生成器仍可供桌面用户使用。它需要Python 3.9+、FFmpeg以及requirements.txt中的包。

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

构建和测试

Android开发需要JDK 17、Android SDK Platform 36和Build Tools 36.0.0。

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

每个预览和导出的视频都会显示底图署名:© OpenStreetMap contributors 和 © CARTO。

根据MIT许可证授权。