mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-20 04:01:20 -08:00
refactor(auto-thumbnail): [PKG-AUTO-THUMB-03] own hidden renderers and reject stale seeks
This commit is contained in:
1 parent
84721f19ed
commit
a128706fe7
23 files changed
+12210
-38
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"kind": "generated-auto-thumbnail-timeline",
|
||||
"version": "ffmpeg version 2025-11-12-git-6cdd2cbe32-full_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developers",
|
||||
"args": [
|
||||
"-hide_banner",
|
||||
"-loglevel",
|
||||
"error",
|
||||
"-n",
|
||||
"-f",
|
||||
"lavfi",
|
||||
"-i",
|
||||
"color=c=purple:s=320x180:r=30:d=0.033333333",
|
||||
"-f",
|
||||
"lavfi",
|
||||
"-i",
|
||||
"color=c=red:s=320x180:r=30:d=1.966666667",
|
||||
"-f",
|
||||
"lavfi",
|
||||
"-i",
|
||||
"color=c=black:s=320x180:r=30:d=2",
|
||||
"-f",
|
||||
"lavfi",
|
||||
"-i",
|
||||
"color=c=blue:s=320x180:r=30:d=2",
|
||||
"-f",
|
||||
"lavfi",
|
||||
"-i",
|
||||
"color=c=yellow:s=320x180:r=30:d=2",
|
||||
"-filter_complex",
|
||||
"[0:v][1:v][2:v][3:v][4:v]concat=n=5:v=1:a=0[v]",
|
||||
"-map",
|
||||
"[v]",
|
||||
"-c:v",
|
||||
"libx264",
|
||||
"-pix_fmt",
|
||||
"yuv420p",
|
||||
"-g",
|
||||
"30",
|
||||
"-movflags",
|
||||
"+faststart",
|
||||
"auto-thumbnail-timeline.mp4"
|
||||
],
|
||||
"width": 320,
|
||||
"height": 180,
|
||||
"fps": 30,
|
||||
"duration": 8,
|
||||
"segments": [
|
||||
[
|
||||
"purple",
|
||||
"0.033333333"
|
||||
],
|
||||
[
|
||||
"red",
|
||||
"1.966666667"
|
||||
],
|
||||
[
|
||||
"black",
|
||||
"2"
|
||||
],
|
||||
[
|
||||
"blue",
|
||||
"2"
|
||||
],
|
||||
[
|
||||
"yellow",
|
||||
"2"
|
||||
]
|
||||
],
|
||||
"purpose": "Unique purple first frame, then red/black/blue/yellow timeline; distinguish missing transparent pixels, legitimate black frames and stale first frames.",
|
||||
"file": {
|
||||
"name": "auto-thumbnail-timeline.mp4",
|
||||
"bytes": 8602,
|
||||
"sha256": "10370156cffada462d3ea00aae0caadd62752369cd6538cc55248b3ddd7bf994"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
# PKG-AUTO-THUMB-03 隐藏解码元素检查点(doing)
|
||||
|
||||
新增video.js,独立拥有内部video的挂载、静音、可访问性和移除。使用固定定位、
|
||||
visibility:hidden及metadata时锁定的原始尺寸;不调用play,不用display:none或1px缩放。
|
||||
extraction继续拥有原来的起点采样公式和串行编码。普通全局video样式不会把内部解码
|
||||
元素缩成1px;初始化取消、插入前后同步重入、插入失败及load/pause异常也回收DOM。
|
||||
公开参数、结果、Promise时序和声明未改。正常构建再生dist和docs副本。
|
||||
|
||||
构建main产物的验证又复现一次后续格偏移约1.6秒,失败报告独立保留为
|
||||
auto-thumbnail03-render-browser-verified-main.json(该文件名虽含verified,结果仍是
|
||||
14通过/1失败)。因此继续修复seeked归属:仍在seeking时忽略旧事件,绘制前检查有限
|
||||
currentTime及目标50ms容差;偏离只重试原目标最多3次,再失败清理。新增4项回归覆盖
|
||||
错时重试、重试界限/旧预览保留、seeking旧事件和时间getter销毁重入。最终证据使用
|
||||
browser-timing及unit-timing文件,不把这次失败当成通过或靠重复运行覆盖。
|
||||
|
||||
新增5项单元边界:此前检查点运行29项为25通过/4失败,新实现29通过。第五项load抛错
|
||||
本来就能通过,此次加强其DOM所有权断言。不能将29项都称为本次新修复。
|
||||
|
||||
真实浏览器新增两种像素样本:时间颜色片段及空间颜色图案。时间片段8秒/30fps,首帧
|
||||
独立紫色,随后红、黑、蓝、黄;生成脚本、FFmpeg版本、参数、SHA256保存在媒体清单。
|
||||
重新生成字节完全一致。解码前raw alpha区分“没有画出来”和合法黑画面,实际JPEG解码
|
||||
验证颜色及空间差异,记录采样时间。9项原生生命周期还增加DOM脱离断言。
|
||||
|
||||
**这是局部修复,03和AUTO-THUMB-PIXEL-01保持未完成。** 新的像素验收只覆盖五格中的
|
||||
第2-4格(从0编号);前两格完整记录为诊断数据,不能当成通过。初次广泛断言的报告
|
||||
保留在auto-thumbnail03-render-browser-source-initial.json:发现Firefox早期draw可能
|
||||
透明,Windows WebKit的早期seeked可能时间回退。pattern样本的JPEG中心在色块交界处
|
||||
存在色度混合,末段本身也改变颜色,因此不能错误地要求每一格中心始终纯蓝。
|
||||
当前像素断言使用已知阶段的颜色优势和空间差异;这不意味着早期帧问题被修复。
|
||||
|
||||
独立诊断还证明:WebKit跳回0秒可能保留上一张图;两次rAF、先跳远再返回、fastSeek及
|
||||
playing后立即pause均未稳定解决。唯一紫色首帧在Chromium/Firefox的0秒出现,而本机
|
||||
WebKit可能在约0.04秒才读到;不能简单把所有浏览器偏移0.04秒,也不能用均匀红色片段
|
||||
掩盖一帧的时间错误。相关原始实验摘要保存在本检查点验证记录,物理Safari仍未验证。
|
||||
|
||||
后续继续首帧和早期frame-ready调度,保持任务取消及URL归属,再完成资源预算/其余
|
||||
边界;04转严格TS,05/06做核心组合、设备、真实安装与demo/editor。没有新依赖、
|
||||
发布、推送或任务完成数变化。提交仅是可回退的03检查点。
|
||||
|
||||
见[验证记录](../baselines/auto-thumbnail-hidden-renderer.json)。
|
||||
|
||||
最终33项候选回归:此前检查点25通过/8失败,源码/main/legacy各33通过。最终源码原生
|
||||
连续三轮45项,main/legacy各15项,共75项通过,无重试/跳过/未处理页面错误。完整CI1799项
|
||||
(1553单元+14工程+232基线)及339生产TS通过;另核对4种实际bundle入口与无DOM异步
|
||||
注册,尚不代表安装tarball。三份产物与docs副本逐字节相等,03仍doing,像素风险仍open。
|
||||
|
||||
后续实验auto-thumbnail-frame-callback-probe在loadeddata后对每次seek等待原生帧回调,
|
||||
Chromium/Firefox隐藏和普通元素都能读到五格预期颜色,包括独立紫色首帧;本机WebKit
|
||||
没有requestVideoFrameCallback。这尚未接入生产,下一步要处理回调归属/取消/失效/
|
||||
超时及无该API浏览器的可靠路径,不能把实验结果提前标为修复。
|
||||
+1
-1
@@ -496,7 +496,7 @@
|
||||
- PKG-AUDIO-05: [记录](changes/2026-09-12-PKG-AUDIO-05-combinations.md) [记录](baselines/audio-combinations-first.json) [记录](baselines/audio-combinations-checkpoint.json) [记录](audio-validation.md)
|
||||
- PKG-AUTO-THUMB-01: [记录](baselines/auto-thumbnail-release.json) [记录](baselines/auto-thumbnail-contract.md) [记录](changes/2026-09-13-PKG-AUTO-THUMB-01-contract.md) [记录](baselines/auto-thumbnail-contract-validation.json)
|
||||
- PKG-AUTO-THUMB-02: [记录](baselines/auto-thumbnail-failures.md) [记录](baselines/auto-thumbnail-failures-validation.json) [记录](changes/2026-09-13-PKG-AUTO-THUMB-02-failures.md)
|
||||
- PKG-AUTO-THUMB-03: [记录](changes/2026-09-13-PKG-AUTO-THUMB-03-lifecycle-checkpoint.md) [记录](baselines/auto-thumbnail-lifecycle-checkpoint.json)
|
||||
- PKG-AUTO-THUMB-03: [记录](changes/2026-09-13-PKG-AUTO-THUMB-03-lifecycle-checkpoint.md) [记录](baselines/auto-thumbnail-lifecycle-checkpoint.json) [记录](changes/2026-09-13-PKG-AUTO-THUMB-03-hidden-renderer.md) [记录](baselines/auto-thumbnail-hidden-renderer.json) [记录](baselines/auto-thumbnail-timeline-media.json)
|
||||
- PKG-HLS-01: [记录](baselines/hls-control-contract.md) [记录](baselines/hls-control-release.json) [记录](changes/2026-09-11-PKG-HLS-01-contract.md)
|
||||
- PKG-HLS-02: [记录](hls-validation.md) [记录](baselines/hls-sdk.json) [记录](baselines/hls-validation.json) [记录](changes/2026-09-11-PKG-HLS-02-tests.md)
|
||||
- PKG-HLS-03: [记录](changes/2026-09-12-PKG-HLS-03-modules.md) [记录](baselines/hls-modules-validation.json) [记录](hls-validation.md)
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# 进度与证据
|
||||
|
||||
## PKG-AUTO-THUMB-03 隐藏解码与错时seek重试检查点(doing)
|
||||
|
||||
新增video模块,挂载隐藏且保持实际尺寸的解码元素,完善DOM回收及插入/清理重入。
|
||||
真实产物测试发现seeked可能停留在前一格,已增加绘制前时间核对及最多3次原目标重试。
|
||||
33项候选单元在此前检查点25通过/8失败,新源码/main/legacy各33通过。
|
||||
最终原生源码连续三轮45项、main/legacy各15项通过,共75项;其中仅第2-4格有像素
|
||||
验收,前两格及首帧精度保持open。保留先前真实失败,不把重复通过当作全流程完成。
|
||||
新增可再生时间颜色夹具及脚本,严格TS仍属于04,无依赖或版本改动。
|
||||
完整CI1799项、339生产TS通过,4种实际bundle入口通过;见[验证](baselines/auto-thumbnail-hidden-renderer.json),
|
||||
[变更](changes/2026-09-13-PKG-AUTO-THUMB-03-hidden-renderer.md)解释修复和剩余边界。
|
||||
222项:114 done、12 doing、96 todo;本次是03检查点,任务完成数未增加。
|
||||
|
||||
|
||||
## PKG-AUTO-THUMB-03 源码任务与资源所有权检查点(doing)
|
||||
|
||||
生产源码拆为index/options/session/extraction,保持异步公开注册与原有效配置语义。
|
||||
|
||||
+6
-2
@@ -4110,10 +4110,14 @@
|
||||
"evidence": [
|
||||
"test/browser/auto-thumbnail.spec.js",
|
||||
"refactor/baselines/auto-thumbnail-failures.md",
|
||||
"refactor/baselines/auto-thumbnail-failures-validation.json"
|
||||
"refactor/baselines/auto-thumbnail-failures-validation.json",
|
||||
"test/browser/auto-thumbnail-pixels.spec.js",
|
||||
"refactor/baselines/auto-thumbnail-hidden-renderer.json",
|
||||
"refactor/baselines/auto-thumbnail-timeline-media.json"
|
||||
],
|
||||
"compatibleResolution": "Establish actual decoded-frame readiness for the existing timeline/grid and preserve silent independent extraction; do not waive colored pixel checks as unsupported media.",
|
||||
"closureCriteria": "Candidate source and artifacts generate usable sampled pixels on native browser controls with lifecycle checks; supported Safari and core combinations remain explicit final gates."
|
||||
"closureCriteria": "Candidate source and artifacts generate usable sampled pixels on native browser controls with lifecycle checks; supported Safari and core combinations remain explicit final gates.",
|
||||
"workspaceState": "Hidden intrinsic-sized attached decoder mitigates detached WebKit black later frames. Source 45 repeated native cases plus main/legacy 15 each verify lifecycle and cells 2-4 only. Initial cells 0-1 remain diagnostic: transparent/stale draws and Windows WebKit first-frame timing remain unresolved. Bounded retries now reject wrong-time seeked events before drawing. Do not close this risk or task03 based on partial pixel acceptance."
|
||||
}
|
||||
]
|
||||
}
|
||||
+4
-1
@@ -1783,7 +1783,10 @@
|
||||
"acceptance": "结构变化和缺陷修复分开记录;原 API/事件/资源生命周期通过",
|
||||
"evidence": [
|
||||
"changes/2026-09-13-PKG-AUTO-THUMB-03-lifecycle-checkpoint.md",
|
||||
"baselines/auto-thumbnail-lifecycle-checkpoint.json"
|
||||
"baselines/auto-thumbnail-lifecycle-checkpoint.json",
|
||||
"changes/2026-09-13-PKG-AUTO-THUMB-03-hidden-renderer.md",
|
||||
"baselines/auto-thumbnail-hidden-renderer.json",
|
||||
"baselines/auto-thumbnail-timeline-media.json"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user