feat: 初始化 Live Photo 项目结构
- 添加 PRD、技术规范、交互规范文档 (V0.2) - 创建 Swift Package 和 Xcode 项目 - 实现 LivePhotoCore 基础模块 - 添加 HEIC MakerNote 元数据写入功能 - 创建项目结构文档和任务清单 - 添加 .gitignore 忽略规则
This commit is contained in:
101
TASK.md
Normal file
101
TASK.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# TASK|to-live-photo
|
||||
|
||||
> 说明:本清单按阶段拆解研发事项,默认最低支持 iOS/iPadOS 16+,先完成 MVP 闭环,再逐步完善。
|
||||
|
||||
## M0|技术预研 / POC(以“系统可识别 Live Photo”为第一目标)
|
||||
|
||||
- [ ] 建立 Xcode 工程骨架(SwiftUI 优先),设置 Deployment Target = iOS/iPadOS 16.0
|
||||
- [ ] 补齐权限与 Info.plist 文案:
|
||||
- [ ] NSPhotoLibraryUsageDescription
|
||||
- [ ] NSPhotoLibraryAddUsageDescription
|
||||
- [ ] POC:最小链路跑通(不做复杂编辑)
|
||||
- [ ] 从相册导入视频(PHPicker,视频过滤)
|
||||
- [ ] 以默认参数(3s、maxDimension、30fps 策略)生成 photo + pairedVideo
|
||||
- [ ] 写入相册(PHAssetCreationRequest 同时写入 .photo 与 .pairedVideo)
|
||||
- [ ] 校验:保存后按 assetId 取回并验证 Live 识别(至少做到“相册 Live 标识 + 长按可播”的人工确认路径)
|
||||
- [ ] 约束与策略确认(写入代码常量/配置):
|
||||
- [ ] 时长限制:1.5~5s(默认 3s)
|
||||
- [ ] 分辨率上限:默认 1920(可后续自适应)
|
||||
- [ ] 帧率策略:>30fps 降到 30fps
|
||||
- [ ] HDR 策略:默认转 SDR 或首次提示(确认最终策略)
|
||||
- [ ] 编码策略:优先 re-mux,失败再转 H.264 兼容导出(确认兜底策略)
|
||||
- [ ] 设计基础设施:
|
||||
- [ ] WorkItem / ExportParams 数据模型(与 TECHSPEC 对齐)
|
||||
- [ ] CacheManager:按 workId 建目录、成功/失败保留 24h 清理策略
|
||||
- [ ] Logger:阶段化日志(stage enum + progress + error_code)
|
||||
|
||||
### M0 完成定义
|
||||
|
||||
- [ ] 能在至少 1 台 iPhone + 1 台 iPad 上生成并保存 Live Photo,且系统相册可识别(有 Live 标识,长按可播放)。
|
||||
|
||||
## M1|MVP(导入→编辑→生成→保存→引导)
|
||||
|
||||
### 1) UI 页面闭环
|
||||
|
||||
- [ ] HomeView:首页导入入口、最近作品(可先仅内存态/本地简单持久化)
|
||||
- [ ] EditorView:比例裁剪、时长裁剪、封面帧选择、预览
|
||||
- [ ] ProcessingView:进度条 + 阶段文案 + 取消/重试/返回编辑
|
||||
- [ ] ResultView:保存到相册、再次编辑、进入壁纸引导
|
||||
- [ ] WallpaperGuideView:按系统版本展示步骤卡片、FAQ、打开设置、完成确认
|
||||
|
||||
### 2) 编辑能力(MVP 版)
|
||||
|
||||
- [ ] 比例模板:iPhone 锁屏 / 全面屏 / 4:3 等(先做 2~3 个核心模板)
|
||||
- [ ] 裁剪手势:缩放 + 拖拽,保持比例
|
||||
- [ ] 时长裁剪:range slider(1.5~5s,默认 0~3s)
|
||||
- [ ] 封面帧:滑杆选择 keyFrameTime,实时刷新封面预览
|
||||
|
||||
### 3) 生成与保存(与 TECHSPEC 阶段枚举对齐)
|
||||
|
||||
- [ ] 生成管线:normalize → extractKeyFrame → writePhotoMetadata → writeVideoMetadata → saveToAlbum → validate
|
||||
- [ ] 取消策略:取消时终止任务并清理未写入相册的中间文件
|
||||
- [ ] 错误码与可行动建议:至少覆盖 LPB-001/101/201/301/401/501/901
|
||||
|
||||
### 4) 引导内容(MVP 版)
|
||||
|
||||
- [ ] 版本检测:iOS/iPadOS 16 显示“系统限制/不支持锁屏 Live 动效”的明确文案与替代方案
|
||||
- [ ] iOS/iPadOS 17+:展示步骤卡片(设置→墙纸→添加新墙纸→照片→选择 Live Photo→开启 Live)
|
||||
- [ ] FAQ:Motion not available、低电量模式、找不到 Live 按钮等
|
||||
|
||||
### 5) 基础埋点(可先打印日志,后续再接 SDK)
|
||||
|
||||
- [ ] home_import_video_click / import_video_success
|
||||
- [ ] editor_generate_click / build_livephoto_start / build_livephoto_fail
|
||||
- [ ] save_album_success / save_album_fail
|
||||
- [ ] guide_open / guide_complete
|
||||
|
||||
### 6) MVP QA(手工为主)
|
||||
|
||||
- [ ] 测试矩阵:iPhone 1~2 台 + iPad 1 台;iOS/iPadOS 17+ 与 16 各至少 1 台
|
||||
- [ ] 素材覆盖:H.264/HEVC、30/60fps、竖/横、SDR/HDR
|
||||
- [ ] 验收点:生成成功率、保存成功率、相册识别率、引导文案准确性
|
||||
|
||||
### M1 完成定义
|
||||
|
||||
- [ ] 按 PRD 的 MVP 验收标准打通闭环:生成 Live Photo → 保存相册可识别 → 可进入引导并在不同系统版本下给出正确提示。
|
||||
|
||||
## M2|完善(体验提升 + 失败率降低)
|
||||
|
||||
- [ ] 兼容模式开关(UI 可见):降分辨率/30fps/H.264/SDR
|
||||
- [ ] 自动诊断与建议:根据素材参数提示“建议缩短/建议兼容模式/建议转 SDR”等
|
||||
- [ ] iPad 编辑页布局优化:左右分栏(预览/参数)
|
||||
- [ ] 最近作品列表完善:持久化(仅存参数与缩略图/assetId,不重复存媒体)
|
||||
- [ ] 设置页(可选):权限状态、清理缓存、反馈入口
|
||||
- [ ] 错误反馈包导出(可选):builder.log + 参数(不包含媒体内容)
|
||||
|
||||
## M3|稳定性 / 上线准备
|
||||
|
||||
- [ ] 性能与内存优化:大视频处理、峰值内存控制
|
||||
- [ ] 崩溃与异常收敛:日志脱敏、错误归因完善(按 stage 统计)
|
||||
- [ ] App Store 合规检查:权限文案、引导表述(不承诺一键设置壁纸)、隐私说明
|
||||
- [ ] 产出核心文档补齐(按需要最小化):
|
||||
- [ ] 测试文档:MVP 测试矩阵与用例
|
||||
- [ ] 用户手册:导入/生成/保存/设置引导与常见问题
|
||||
|
||||
---
|
||||
|
||||
## 决策备忘(后续需要你拍板)
|
||||
|
||||
- [ ] HDR 默认策略:默认转 SDR vs 首次提示用户选择
|
||||
- [ ] 编码兜底策略:完全自动兜底 vs 失败后提示开启兼容模式
|
||||
- [ ] 高级合成(照片+视频)进入哪个阶段(建议 M2)
|
||||
Reference in New Issue
Block a user