本文作者通过逆向工程,揭示了苹果设备上动态视频壁纸的格式、存储位置和播放机制。文章详细介绍了如何提取、解析和自定义这些壁纸,包括文件结构、元数据以及在不同设备上的兼容性。
核心要点
- 苹果视频壁纸以HEVC格式存储,位于/System/Library/ProxiedBundles/CompanionLink.bundle目录下。
- 每个壁纸包含一个.mov视频文件和一个.plist元数据文件,后者定义了播放参数如循环点、缩放和颜色校正。
- 通过修改plist文件中的loopStart和loopEnd参数,可以自定义壁纸的循环行为。
- 逆向工具包括ffprobe、plistutil和自定义Python脚本,用于解析和提取壁纸资源。
- 部分壁纸在macOS和iOS上表现不同,因为系统版本和硬件解码能力影响播放效果。
正文
苹果的视频壁纸(如macOS Sonoma中的动态壁纸)实际上是以HEVC(高效视频编码)格式存储的.mov文件。这些文件位于系统目录/System/Library/ProxiedBundles/CompanionLink.bundle下,每个壁纸对应一个子文件夹。
每个壁纸文件夹包含两个核心文件:视频文件(如wallpaper.mov)和元数据文件(Info.plist)。plist文件定义了播放参数,包括loopStart(循环起始时间)、loopEnd(循环结束时间)、scale(缩放比例)和colorCorrection(颜色校正矩阵)。例如,一个壁纸可能设置loopStart为0.5秒,loopEnd为10秒,实现从特定帧开始循环。
要提取和自定义壁纸,首先使用ffprobe检查视频文件的编码参数和时长。然后,用plistutil将二进制plist转换为XML格式,便于编辑。通过修改loopStart和loopEnd值,可以改变壁纸的循环行为,比如让壁纸只播放特定片段。最后,使用自定义Python脚本将修改后的文件重新打包并替换到系统目录(需root权限)。
需要注意的是,不同设备(如Mac和iPhone)对壁纸的支持不同。macOS依赖Metal框架进行硬件解码,而iOS使用VideoToolbox,这可能导致同一壁纸在不同系统上出现播放差异。此外,部分壁纸包含HDR(高动态范围)元数据,需要显示器支持才能正确显示。
关联概念
- HEVC视频编码
- plist文件格式
- Metal框架
- VideoToolbox
- HDR元数据
可操作项
- 使用ffprobe分析苹果设备上的视频壁纸文件,获取编码和时长信息。
- 用plistutil将Info.plist转换为XML,修改loopStart和loopEnd参数。
- 编写Python脚本,自动提取、修改并重新打包壁纸资源。
- 在macOS或iOS上测试自定义壁纸,注意系统版本和硬件兼容性。
原文: Show HN: I reverse engineered Apple's video wallpapers
自动加工于 2026-05-21 08:07