PRD|Live Photo 制作与动态壁纸引导 App 适用平台:iPhone / iPad(iOS / iPadOS) 文档版本:V0.2(草案) 日期:2025-12-13(Asia/Manila) 作者:——(待填) # 1. 文档信息与变更记录 # 2. 背景与机会 用户希望把自拍视频/短片制作成“像苹果实况照片(Live Photo)一样”的内容,用于相册浏览、分享(例如发微信)、并在支持的系统版本上设置为锁屏动态壁纸。 痛点 1:现有转换工具分散,流程复杂(导入、裁剪、转码、导出、再去相册设置)。 痛点 2:很多用户不知道 iOS/iPadOS 不同版本对 Live Photo 壁纸的支持差异,导致“做出来不能动”。 痛点 3:对尺寸/时长/关键帧(封面)选择缺乏指导,成品效果不稳定。 本 App 提供一站式:导入视频 → 生成系统可识别的 Live Photo → 保存到相册 → 分步骤引导设置壁纸。 # 3. 产品目标与非目标 ## 3.1 目标(Goals) G1:用户可从“视频/照片素材”快速生成“系统相册识别的 Live Photo”,并保存到相册。 G2:提供清晰的“设置为锁屏动态壁纸”引导,降低因系统版本/设置项导致的失败率。 G3:通过模板与提示,帮助用户得到高成功率的“可播放、可分享、封面好看”的作品。 G4:适配 iPhone 与 iPad,不同屏幕与比例下提供合理裁剪与预览。 ## 3.2 非目标(Non-goals) 不使用任何私有 API 直接替用户设置系统壁纸(App Store 会拒)。 不做云端素材社区/版权图库(可在后续版本作为增长模块另立项)。 不保证所有历史系统版本都能播放 Live Photo 壁纸动画(受系统能力限制)。 # 4. 目标用户与使用场景 ## 4.1 目标用户(Personas) P1:普通用户——想把自拍视频做成动态壁纸,但不懂格式/设置路径。 P2:内容创作者——需要批量把短视频转 Live Photo 进行分享与展示。 P3:设计/审美用户——关注裁剪、封面帧、色彩与动效节奏。 ## 4.2 核心场景(Scenarios) S1:用户选择一段 2-5 秒视频,生成 Live Photo,保存并设置为锁屏动态壁纸。 S2:用户选择“照片 + 视频”合成(照片做封面),并指定关键帧。 S3:用户生成后想发微信:需要在相册里保持 Live Photo 形态并可被微信识别。 S4:用户在 iPad 上制作,导出后在 iPhone 上设置壁纸(跨设备)。 # 5. 兼容性与约束 ## 5.1 系统与功能可用性(建议写在 App 内) Live Photo 生成与保存:iOS/iPadOS 14+(建议 15+)可实现(依赖 Photos / AVFoundation)。 “Live Photo 作为锁屏动态壁纸播放”:iOS 17 或更高版本支持在锁屏唤醒时播放(iPhone 官方说明)。 iPadOS 锁屏支持 Live Photo 的动效选项(官方 iPad 用户指南包含 Live Photo 动效按钮说明)。 注意:Live Photo 动效通常只作用于锁屏;主屏一般显示静态图(以系统版本为准)。 低电量模式等系统状态可能导致动效不可用(需在引导里提示)。 ## 5.2 平台约束(必须写清) iOS/iPadOS 没有公开 API 允许第三方 App 直接设置系统壁纸:只能引导用户在系统界面完成设置。 禁止使用私有 API、越狱方案或企业签名绕过(不符合 App Store 上架)。 # 6. 需求范围(MVP) ## 6.1 MVP 功能列表 导入:从相册选择视频;可选:选择封面照片(可不选,默认从视频自动取帧)。 编辑:裁剪比例(适配 iPhone/iPad 锁屏常见比例)、裁剪时长(建议 2-3 秒)、选择封面帧(关键帧)。 生成:将素材合成为系统可识别 Live Photo(照片 + pairedVideo + 元数据)。 保存:保存到系统相册(Live Photos 相簿 / 最近项目)。 引导:分步骤引导用户把 Live Photo 设置为锁屏动态壁纸(按系统版本展示不同路径)。 质量检测:生成后做一次本地校验(能否被系统识别为 Live Photo;失败原因提示)。 ## 6.2 后续版本(Backlog) 模板:预设“人物/风景/文字”裁剪模板、调速/慢动作适配。 批量生成:一次导入多段视频,批量导出 Live Photo。 小组件/主题包:壁纸合集管理(订阅制/一次性购买)。 分享:一键分享(注意平台对实况/视频的支持差异)。 # 7. 用户流程 ## 7.1 主流程:视频 → Live Photo → 设置锁屏 进入首页,点击【从相册导入视频】。 选择视频后进入编辑页:裁剪比例、裁剪时长、选择封面帧。 点击【生成 Live Photo】;显示进度与阶段文案(处理视频 / 写入元数据 / 保存准备)。 生成成功 → 点击【保存到相册】;提示“已保存,可在 Live Photos 相簿查看”。 进入【设置壁纸引导】:按步骤提示用户在系统【设置 > 墙纸】选择 Live Photo 并开启 Live 动效。 ## 7.2 失败/异常流程 用户拒绝相册权限:展示解释页,并引导去系统设置开启。 生成失败(编码/元数据写入失败):提示原因 + 建议(更换视频编码、缩短时长、降低分辨率)。 保存成功但系统未识别为 Live Photo:提示“请在相册查看是否有 Live 标识”,并提供重新生成按钮。 # 8. 功能需求详述 ## 8.1 首页 入口 1:导入视频(必选)。 入口 2:导入照片 + 视频(可选,作为高级模式)。 入口 3:教程/引导(包含系统版本差异、常见问题)。 展示最近生成的作品列表(MVP 可只展示最近 10 条)。 ## 8.2 编辑页 裁剪比例:常用预设(iPhone 锁屏 / 全面屏 / 4:3 等),支持手动缩放与拖拽。 时长:默认 3 秒;可选范围 1.5-5 秒(过长降低成功率与体积)。 封面帧:滑杆选择时间点;支持“智能推荐封面”(清晰、有人脸、少抖动)。 预览:静态预览 + 动效预览(模拟锁屏唤醒播放方式)。 ## 8.3 生成引擎(核心) 输入:视频(必选) + 可选封面照片。 输出:照片文件(建议 HEIC)+ 视频文件(MOV,H.264/HEVC)+ 绑定元数据(identifier、still-image-time 等)。 关键规则:照片与视频共享同一 content/asset identifier;视频包含 still-image-time 标记关键帧。 对视频进行重封装(re-mux)以写入元数据;必要时重新编码(可配置:优先保留编码,失败则转码)。 导出参数建议:分辨率/比特率上限以保证速度与成功率;音频可选保留/移除。 本地校验:生成后尝试用系统方式加载校验(如 PHLivePhoto 请求加载)并输出可读错误。 ## 8.4 保存到相册 使用 Photos 写入:photo 资源 + pairedVideo 资源。 成功回调:提示“已保存”;失败回调:展示错误与建议。 相册归类:系统会自动归类到 Live Photos;App 内保存最近作品列表。 ## 8.5 动态壁纸设置引导 按系统版本展示不同文案与截图示意。 iOS/iPadOS 17+:引导用户进入【设置 > 墙纸 > 添加新墙纸 > 照片 > Live Photo】并开启 Live 播放选项。 iOS/iPadOS 16:明确提示系统限制;提供替代方案(设置静态壁纸/升级系统建议)。 常见失败提示:低电量模式、‘Motion not available’、素材参数不兼容等。 提供按钮:打开系统设置(尽量深链;无法深链则打开设置首页)。 # 9. 非功能需求 ## 9.1 性能与体验 生成过程需有可见进度与阶段提示;失败可重试。 中间文件自动清理;不占用过多存储。 错误提示要“可行动”:给出下一步(缩短时长、降低分辨率、重新选择素材)。 ## 9.2 隐私与合规 默认本地处理:不上传用户照片/视频。 权限最小化:仅在需要时请求相册/相机/麦克风权限,并提供用途说明。 如接入统计:匿名化、可关闭,并在隐私政策中说明。 # 10. 数据埋点与指标 ## 10.1 核心漏斗 导入视频 → 进入编辑 → 点击生成 → 生成成功 → 保存成功 → 进入壁纸引导 → 引导完成(点击“完成/已设置”)。 ## 10.2 关键指标(KPIs) 生成成功率(按机型/系统版本/视频参数分层)。 保存成功率(相册写入成功)。 引导完成率(壁纸设置引导)。 7 日留存(如后续商业化,再加转化率)。 # 11. 里程碑建议 M0:技术预研(Live Photo 合成可行性、系统版本验证、参数边界)。 M1:MVP(导入视频 → 生成 → 保存 → 基础引导)。 M2:适配 iPad + 编辑体验提升(比例模板、预览增强)。 M3:稳定性与质量(失败提示、自动降级转码、素材建议)。 # 12. 验收标准(MVP) 在 iPhone(至少 2 款机型)与 iPad(至少 1 款机型)上:从相册导入视频可生成 Live Photo 并保存到系统相册。 生成的 Live Photo 在系统相册中显示为 Live Photo(有 Live 标识,长按可播放)。 在支持 Live Photo 锁屏播放的系统版本上,用户可按引导步骤完成设置并在唤醒锁屏时播放。 在不支持版本上,App 必须明确提示限制并给出替代方案,避免误导。 不使用私有 API,权限声明齐全,可通过 App Store 审核。 # 13. 风险与对策 R1:系统版本差异 → 版本检测 + 差异化引导文案。 R2:素材多样导致失败 → 参数归一化 + 自动降级转码 + 可读错误提示。 R3:用户期待“主屏也会动” → 产品内明确说明:通常仅锁屏动效。 R4:审核风险 → 只做引导,不做自动设置;不接触私有 API。 # 14. 参考资料(TBD) Apple Support:Set a Live Photo as your Lock Screen wallpaper (iOS 17+): https://support.apple.com/120734 Apple Support:Change your iPhone wallpaper(含 Live Photo 入口说明): https://support.apple.com/102638 Apple iPad User Guide:Create a custom iPad Lock Screen: https://support.apple.com/guide/ipad/ipad782d4de8/ipados Apple iPad User Guide:Change the wallpaper on iPad: https://support.apple.com/guide/ipad/ipad997d908e/ipados # 15. 信息架构与页面清单 本节用于指导你用 AI 编码时的页面/路由/组件拆分。 ## 15.1 信息架构(IA) 首页(Home):导入视频 / 高级合成 / 教程与FAQ / 最近作品列表 编辑页(Editor):比例裁剪、时长裁剪、封面帧选择、预览、生成按钮 生成进度页(Processing):阶段进度、取消/后台、失败原因与重试 结果页(Result):保存到相册、再次编辑、进入壁纸引导、分享(后续) 壁纸引导页(Wallpaper Guide):按系统版本展示步骤、常见问题、跳转设置 作品库(Library - MVP可选):最近作品、再次导出、删除缓存 设置(Settings):权限状态、清理缓存、隐私、关于、反馈 ## 15.2 页面与路由(建议命名) # 16. 用户故事与验收标准(更细颗粒) ## 16.1 用户故事(User Stories) ## 16.2 验收标准(按故事拆分) US-01:生成后在系统相册中显示 Live 标识;长按可播放;不出现仅照片或仅视频的孤儿资源。 US-02:裁剪后的导出在锁屏预览时主体居中,用户可通过手势调整;导出不拉伸。 US-03:用户选定封面帧后,相册静态显示与导出封面一致(允许系统做轻微处理)。 US-05:引导页能根据系统版本显示正确路径;并提示‘低电量模式/系统限制’等常见原因。 US-06:错误提示包含:错误标题 + 可能原因 + 可点击的解决建议(例如缩短时长/降低分辨率/改用H.264)。 # 17. 详细功能需求表(可直接喂给 AI 编码) ## 17.1 功能点-输入-处理-输出 ## 17.2 关键约束与参数建议 推荐时长:2-3秒(越长越大且更容易失败)。 推荐分辨率上限:以锁屏显示为目标,通常不需要超过 1440p;可按设备上限做自适应。 帧率:建议 30fps;高帧率素材可降到30fps以提升兼容性。 编码:优先保留原编码;失败时降级到 H.264 + AAC(更通用)。 HDR/Dolby Vision:可提示用户可能存在兼容性问题;必要时转 SDR。 # 18. 技术方案概述(研发实现导向) ## 18.1 模块划分 ## 18.2 Live Photo 合成关键点(落地检查清单) 生成 assetIdentifier(UUID字符串)。 图片侧:写入 Apple MakerNote/相关标识(建议HEIC)。 视频侧:写入 QuickTime content identifier 元数据 + still-image-time timed metadata track。 保存侧:PHAssetCreationRequest 同时写入 .photo 与 .pairedVideo。 校验侧:尝试从相册 asset 请求 PHLivePhoto 或检查 Live 标识是否出现。 ## 18.3 权限与Info.plist NSPhotoLibraryUsageDescription:读取相册用于选择素材 NSPhotoLibraryAddUsageDescription:保存生成的 Live Photo 到相册 NSCameraUsageDescription:如后续加入拍摄入口 NSMicrophoneUsageDescription:如保留或录制音频 # 19. 数据模型与本地存储 ## 19.1 本地作品模型(示例) WorkItem:id、createTime、sourceVideoLocalID、exportParams(ratio/trim/keyFrame)、resultAssetLocalID(相册asset.localIdentifier)、status(processing/success/failed)、errorCode、thumbnailPath。 缓存目录:/Library/Caches/LivePhotoBuilder/{workId}/(中间mov、heic、日志)。 清理策略:成功后保留缩略图与参数;中间文件按设置或定期清理。 # 20. QA 测试计划(MVP) ## 20.1 测试矩阵 ## 20.2 用例清单(样例) 从相册导入竖屏30fps H.264视频,默认参数生成并保存,确认相册显示Live标识且可播放。 导入60fps HEVC视频,选择3秒裁剪,生成成功;若失败需自动降级转码并提示。 导入HDR视频,提示可能兼容性风险;选择转SDR后生成成功。 拒绝相册权限后再次进入导入流程,能看到解释页并可跳转系统设置。 在iOS 16设备:壁纸引导页必须显示“系统限制/不支持动效”的文案与替代方案。 # 21. 合规、审核与版权 壁纸设置:不得宣称“一键自动设置系统壁纸”,应明确为“引导用户在系统中设置”。 权限说明:文案必须与实际用途一致,避免过度索权。 版权与内容:用户素材本地处理;若引入模板/素材库需提供版权声明与授权来源。 隐私政策:说明是否收集设备信息、崩溃日志与使用数据;提供关闭选项。 # 22. 文案与引导内容(可直接放App里) ## 22.1 关键页面文案(示例) ## 22.2 壁纸设置步骤卡片(iOS 17+ 示例) 打开【设置】->【墙纸】。 点击【添加新墙纸】->【照片】。 选择你刚保存的 Live Photo(带 Live 标识)。 点击屏幕左下角的【Live】按钮确保动效开启(若可见)。 保存并设置到锁屏。唤醒锁屏时,按压/触摸或系统动作会触发动效(以系统表现为准)。 提示:提示:若出现 “Motion not available”,请检查:是否开启低电量模式、是否选择了 Live Photo、素材是否过长/过大。 # 23. 开放问题(需你决策后再让AI编码) 商业化:免费+广告?一次性买断?订阅(模板/批量/高清导出)? 支持的最低系统版本:iOS 14/15/16?(决定了API与用户覆盖) 是否支持拍摄直接生成(AVCapture Live Photo Capture)作为后续版本? 是否需要“跨设备同步”(iCloud)保存作品参数/模板? 是否需要“微信分享优化”(检测相册资产是否仍为Live Photo形态)? # 附录:表格汇总 ## 表格 1 | 版本 | 日期 | 作者 | 说明 | | --- | --- | --- | --- | | V0.1 | 2025-12-13 | —— | 首版草案:功能范围、流程与需求拆解 | | V0.2 | 2025-12-13 | —— | 补充:信息架构、用户故事、详细需求表、技术方案、QA/合规与开放问题 | | V1.0 | —— | —— | (预留) | ## 表格 2 | 页面 | 路由/模块名 | 主要能力 | MVP | | --- | --- | --- | --- | | 首页 | HomeView | 导入入口、最近作品 | 是 | | 编辑 | EditorView | 裁剪/封面/预览/生成 | 是 | | 生成进度 | ProcessingView | 进度、取消、失败重试 | 是 | | 结果 | ResultView | 保存、再次编辑、引导入口 | 是 | | 壁纸引导 | WallpaperGuideView | 版本检测、步骤卡片、FAQ | 是 | | 作品库 | LibraryView | 作品管理 | 可选 | | 设置 | SettingsView | 权限、清理、隐私、反馈 | 可选 | ## 表格 3 | 编号 | 用户故事 | 优先级 | 备注 | | --- | --- | --- | --- | | US-01 | 作为用户,我想从相册选择一段视频并生成 Live Photo,这样我可以在相册长按播放。 | P0 | 核心闭环 | | US-02 | 作为用户,我想裁剪比例以适配锁屏,避免设置壁纸后被系统裁掉关键主体。 | P0 | 需预设模板 | | US-03 | 作为用户,我想选择封面帧(关键帧),这样锁屏静止画面最好看。 | P0 | 提供智能推荐 | | US-04 | 作为用户,我想保存到相册并看到 Live 标识,确保微信等平台可识别为实况。 | P0 | 写入 pairedVideo | | US-05 | 作为用户,我想得到清晰的设置壁纸引导,减少我找不到入口或不能动的困扰。 | P0 | 版本差异化 | | US-06 | 作为用户,我希望失败时能看到原因和解决办法,而不是一句“失败”。 | P0 | 错误可行动 | | US-07 | 作为高级用户,我想用‘照片+视频’合成,以照片为封面,视频为动效。 | P1 | 高级模式 | | US-08 | 作为用户,我想一键清理缓存,避免占用太多存储。 | P1 | 设置页 | ## 表格 4 | 功能点 | 输入 | 处理/规则 | 输出/状态 | 优先级 | | --- | --- | --- | --- | --- | | 导入视频 | PHPicker选择视频 | 读取时长/分辨率/帧率/编码;提示不推荐参数 | 进入编辑页或提示不兼容 | P0 | | 比例裁剪 | 视频画面 + 模板比例 | 支持拖拽/缩放;保持比例;实时预览 | 裁剪区域参数(scale/offset) | P0 | | 时长裁剪 | 起止时间 | 默认3秒;限制1.5-5秒;对齐关键帧建议 | trimStart/trimEnd | P0 | | 封面帧选择 | 时间点t | 提供静帧预览;可智能推荐t* | keyFrameTime | P0 | | 生成Live Photo | 视频+裁剪+关键帧(+可选封面照) | 重封装写入content identifier、still-image-time;必要时转码 | photoURL + videoURL + 成功/失败 | P0 | | 保存到相册 | photoURL+videoURL | PHAssetCreationRequest写入.photo与.pairedVideo | 相册新增Live Photo资产 | P0 | | 引导设置壁纸 | 系统版本/设备类型 | 差异化步骤卡片;提示限制与FAQ | 用户完成率提升 | P0 | | 缓存清理 | 中间文件目录 | 仅清理App生成缓存;不影响相册成品 | 释放存储空间 | P1 | ## 表格 5 | 模块 | 职责 | 关键框架/组件 | | --- | --- | --- | | MediaImport | PHPicker选择媒体、读取元信息 | PhotosUI, AVFoundation | | EditorCore | 裁剪参数管理、预览渲染 | SwiftUI/UIView, AVPlayer | | LivePhotoBuilder | 写入元数据、重封装/转码 | AVAssetReader/Writer, ImageIO | | AlbumWriter | 写入系统相册 | Photos | | Validation | 生成后校验是否为Live Photo | Photos, PHLivePhoto | | GuideEngine | 版本检测、引导内容与FAQ | UIKit/SwiftUI | | CacheManager | 中间文件管理与清理 | FileManager | | Analytics | 埋点与漏斗 | 自研/第三方SDK | ## 表格 6 | 维度 | 覆盖建议 | | --- | --- | | 设备 | 至少2款iPhone(不同分辨率)+ 1款iPad | | 系统 | iOS/iPadOS 17+(验证壁纸动效)+ iOS/iPadOS 16(验证限制提示) | | 素材 | H.264/HEVC;30/60fps;SDR/HDR;有/无音频;竖/横屏 | | 时长 | 1.5秒、3秒、5秒边界 | | 权限 | 首次拒绝/后续开启;相册只读/读写 | ## 表格 7 | 场景 | 标题 | 正文/提示 | 按钮 | | --- | --- | --- | --- | | 生成中 | 正在生成 Live Photo | 正在处理视频并写入实况信息,请不要退出。 | 取消 / 后台继续 | | 生成成功 | 生成成功 | 已生成实况照片。保存到相册后可在“照片”里长按播放。 | 保存到相册 / 去设置壁纸 | | 保存成功 | 已保存到相册 | 你可以在“Live Photos”相簿找到它。 | 去设置壁纸 / 再做一个 | | 不支持提示 | 当前系统限制 | 此系统版本无法将 Live Photo 作为可播放的锁屏壁纸。你仍可保存为实况照片,或升级系统后再设置。 | 了解原因 / 返回 | | 低电量提示 | 可能无法播放动效 | 低电量模式可能导致锁屏动效不可用。 | 知道了 |