test(dash): [PKG-DASH-05] checkpoint real SDK media and seek diagnostics

This commit is contained in:
Harvey Zhao committed 2026-09-12 05:45:24 +08:00
1 parent 6840544e0e
commit c4b5f5f454
47 files changed
+2216 -11

No files matched your search

@@ -0,0 +1,66 @@
# PKG-DASH-05:真实 DASH SDK 与本地媒体验证检查点
起点 `6840544e`。本批新增真实 SDK/媒体测试与来源证据,没有修改生产实现、公开声明、
依赖或版本。05 保持 doing,不把浏览器能力缺口或尚未解释的播放停滞计为完成。
## 输入与执行
- 固定实际 npm dash.js 4.5.2 与 5.2.1,归档 SHA512 integrity/SHA256,保存运行脚本、
package.json、原始声明和 BSD-3-Clause 许可证成员指纹。SDK 仅供测试,未复制进生产包。
- 新增 `scripts/generate-dash-fixture.mjs`:FFmpeg 合成 12 秒、90p/180p、英语 440 Hz/
法语 880 Hz AAC 的本地 DASH。三种 MPD 分别为双画质双音轨、纯视频、单画质纯视频。
31 个资源逐字节校验,生成器拒绝覆盖已有目录;MPD 强制 LF,m4s 作为二进制。
MPD 保留生成时移除音轨/画质节点留下的空白节点,Git 对此类夹具关闭行尾空白提示,
不手改已运行的 XML 字节或重新写指纹;此例外不适用于源码与其他文件。
- `test/browser/dash-sdk.spec.js` 加载真实 SDK、发布插件或候选插件、新旧核心,在真实
Chromium/Firefox/WebKit 执行。测试控制栏选择、Auto、实际解码视频尺寸与时钟、
外部 SDK 选择后的同步 update、换源菜单拓扑、旧回调与调用方 SDK 销毁所有权。
- 原生对照不创建 ArtPlayer/插件实例,直接用同一 SDK、video、媒体、缓冲配置执行
画质/音轨与暂停 seek。页面仍加载核心脚本,另断言 Artplayer.instances 为零。
- 每例附 SDK/插件/媒体来源、输入指纹、能力、轨道/画质、媒体缓冲区、事件时间、片段请求
和浏览器 trace。报告与整个 results 目录在下一次套件前归档到独立缓存。
## 失败原因与证据边界
首轮 24 项:10 通过、8 失败、6 跳过。6 个能力探针的失败来自测试主动 destroy 未 initialize
的 SDK:实际 4.5.2 源码 destroy → reset → attachSource(null),后者要求已初始化。
探针只读取版本/能力,不创建媒体资源;已移除错误的未初始化销毁,实际播放用例仍验证销毁。
其余两项分别出现在 Chromium 候选核心/发布插件与 Firefox 发布核心/候选插件的 SDK 4.5.2
组合:暂停后 seek 到 6 秒无法推进。trace 证明 AbortError 在测试超时后的销毁才出现,
不能把它当成停滞起因。补充诊断后 24 项为 17 通过、1 失败、6 跳过;Chromium 停滞复现:
视频缓冲终点 5.999999 秒,time=6、paused=false、seeking=true、readyState=1,未请求
下一段视频,SDK 错误列表为空。SDK 音轨 rendered 事件已先于 seeking 到达,不能简单
归因为“没有等音轨切完”。DASH-SEEK-01 保持 open。
原生初始对照、增加缓冲终点接近 6 秒的前提后各 6 项为 4 通过、2 跳过,均没有复现停滞。
这些通过不能证明 ArtPlayer 是根因,也不能关闭此前新旧核心组合的失败。后续应继续比较
SourceBuffer 与 video.buffered 的范围、SDK 调度和暂停/seek 顺序;不得仅增大超时、偏移
seek 目标或吞掉未处理异常来制造通过。
外部 update 与换源首轮 24 项为 8 通过、8 失败、8 跳过。8 个换源失败源于测试保留了
registry 的可变 option 对象;Component.update 会 Object.assign 修改它,调用到的是新
回调。改为在换源前保存实际函数和旧 selector item;定向重跑 12 项为 8 通过、4 跳过。
验证真实 SDK 连续切到无音轨、单画质、原拓扑,旧回调不改变新 SDK,四次 SDK 生命周期
由调用方恰好销毁四次。没有据此修改生产组件更新语义。
正式 main 整套 54 项为 36 通过、2 失败、16 跳过;两个失败是 Chromium 新旧核心/发布插件
的同类 SDK 4.5.2 seek 停滞。候选组合本轮通过不能关闭首轮 Firefox 候选插件失败。
完整 `yarn ci:check` 717 项通过(661 单元、14 工程、42 基线),261 个生产 TS 严格检查通过;
它不包含该浏览器套件,不能把本地工程检查通过表述为全部浏览器通过。生成器整理参数后
在新目录重建,31 个资源与冻结字节全部相同;只证明同一 FFmpeg/主机下本次重建。
已查看候选核心/main/SDK 5.2.1 的 Chromium 播放截图,6 秒画面和 Auto/fr 控件显示正常。
最终 main 执行和 CI 摘要见 [机器证据](../baselines/dash-sdk-checkpoint.json)。所有早期报告、
trace 和结果目录均保留;本地缓存未上传,换机器应重新执行。后续通过不覆盖开放失败。
## 后续范围与回退
当前 217 项:74 done、4 doing、139 todo。DASH-05 仍需完成停滞排查、实际 SDK 类型消费者、
SDK 驱动状态刷新/错误和播放组合、legacy 正式产物与有效 MSE/设备环境验证。
原有同步 update 已通过实际 SDK 对照;当前插件不会自动订阅 SDK 状态变化,自动刷新是否
增强及其订阅/重入/销毁规则需单独验证,不能从显式 update 的通过推导自动同步已实现。
06 继续实际 8082 示例生命周期与完整隔离分发,版本升级和全项目发布复盘按总计划执行。
本批为独立本地 checkpoint,不推送、不发布。回退只移除这批测试、合成媒体、生成器和记录,
保留 01~04 已完成的源码、兼容声明与验证。新增基线测试纳入已有 test:baseline/ci:check。