feat(player): 进度条拖动预览改用雪碧图
This commit is contained in:
1 parent
89a94f85c2
commit
12b733d111
16 files changed
+1312
-31
No files matched your search
@@ -479,3 +479,55 @@ $ flutter test --no-pub
|
||||
消失均通过;全量静态分析零告警,606 项测试全过。性能红线保持:主线程不做
|
||||
图片解码/取帧、原生并发 1、预览最大宽 240px、缓存最多 24 帧、不增依赖、
|
||||
不改后端。原生取帧真实画面与设备性能由 PM 真机验收。
|
||||
|
||||
## 2026-10-22 雪碧图 VTT 拖动预览
|
||||
|
||||
- 已从 `develop`(`89a94f8`)创建 `feature/sprite-scrub-preview`。
|
||||
- 计划文档:`docs/plans/2026-10-22-sprite-scrub-preview.md`。
|
||||
- 性能红线:拖动帧不发起网络/解码,只做 cue 二分与 sourceRect 绘制;
|
||||
VTT 缓存 10 分钟且只解析一次;sprite ui.Image 最多 2 张;超过 2048px
|
||||
按比例缩放;签名地址不进入持久化缓存。
|
||||
- 回退链:雪碧图 -> 现有本地原生取帧 -> 集封面。
|
||||
|
||||
```text
|
||||
$ git status --short --branch
|
||||
## feature/sprite-scrub-preview
|
||||
|
||||
$ git rev-parse --short HEAD
|
||||
89a94f8
|
||||
```
|
||||
|
||||
解读:工作树从指定最新 develop 创建,开工前无未提交改动;主工作区现有
|
||||
`pubspec.lock` 未复制、未修改。
|
||||
|
||||
### 实现结果
|
||||
|
||||
- `Episode` / `PlayTicket` 增加 nullable `thumbnailsUrl`;票据写回和详情来源都保留,
|
||||
本地下载只覆盖视频地址,不丢 VTT;签名地址未进入持久化缓存。
|
||||
- 新增 `SpriteThumbnailAxisService`:Dio VTT 拉取、10 分钟缓存、403 清缓存重试一次、
|
||||
cue 解析与二分、sprite `ui.Image` LRU2、2048px 解码上限。
|
||||
- `PlayerPage` 在选中集就绪时预取当前及相邻 sprite;dispose 释放 VTT 与图片。
|
||||
- `ScrubPreviewCard` 优先用 `CustomPaint.drawImageRect` 绘制 `sourceRect`;
|
||||
VTT 未就绪显示封面,轴为空/加载失败回退本地原生取帧,再失败保留封面。
|
||||
- 拖动帧只做缓存查询、二分、矩形裁剪与 drawImageRect,不发起网络或图片解码。
|
||||
|
||||
执行命令与原始输出:
|
||||
|
||||
```text
|
||||
$ flutter test --no-pub test/playback/sprite_thumbnail_axis_test.dart test/player/scrub_preview_card_test.dart
|
||||
00:00 +11: All tests passed!
|
||||
|
||||
$ flutter test --no-pub test/playback/seek_progress_bar_test.dart test/home/home_preview_layout_test.dart test/player/player_fullscreen_test.dart
|
||||
00:10 +55: All tests passed!
|
||||
|
||||
$ dart analyze lib test
|
||||
Analyzing lib, test...
|
||||
No issues found!
|
||||
|
||||
$ flutter test --no-pub
|
||||
00:54 +617: All tests passed!
|
||||
```
|
||||
|
||||
解读:VTT 时间/xywh/多 sprite、越界最近 cue、LRU2、403 重试、10 分钟 TTL、
|
||||
回退链、sprite 零本地取帧、无 URL 本地回退和最终封面兜底均通过;全量静态分析
|
||||
零告警,617 项测试全过。`pubspec.lock` 已还原,未启停服务,未操作真机。
|
||||
Reference in new issue
Block a user