Files
ArtPlayer/refactor/changes/2026-09-12-PKG-MB-09-sustained-playback-checkpoint.md
T

69 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PKG-MB-09 持续播放检查点
任务保持doing。本轮新增独立的持续播放测试入口,验证发布核心与候选核心下的MediaBunny
已构建main产物。没有更改生产实现、公开API、依赖或发布版本。
## 可重复运行
HLS生成脚本新增第三个参数duration(12到3600整数秒),省略时仍生成原12秒素材。
禁止覆盖已存在目录,manifest记录FFmpeg版本、完整参数、每个文件的SHA256及大小。
600秒素材包含160×90/320×180、24fps H.264和English/French两条AAC正弦音轨。
长素材放在缓存,未替换已经冻结的短素材。每次测试验证manifest中所有媒体文件哈希。
```powershell
yarn generate:media:hls refactor/.cache/mb-long-hls 600
$env:ARTPLAYER_MB_ARTIFACT = (Resolve-Path packages/artplayer-proxy-mediabunny/dist/artplayer-proxy-mediabunny.js).Path
$env:ARTPLAYER_MB_SOAK_MEDIA = (Resolve-Path refactor/.cache/mb-long-hls).Path
yarn test:mediabunny-soak
```
使用现有已验证的构建流程生成待测产物。显式产物和媒体目录为必需参数,不允许悄悄回退
到源码构建。测试核心来源仍由browser-evidence中的manifest标识,默认候选核心为工作区
构建;若使用ARTPLAYER_BROWSER_ARTIFACTS,则按既有服务器规则读取指定核心产物。
独立playwright.soak.config.js读取test/soak,两个worker,每项270秒超时、零重试,
不会被日常test:browser自动发现。沿用8084服务器,禁止与普通浏览器测试同时运行。
结果保存refactor/.cache/soak/report.json和results;下一轮前归档整个目录。
当前入口用于本地专项验收,尚未接入GitHub托管长播放job;后续CI/发布复盘需明确安排。
## 验证内容
- 每个支持环境连续90秒墙钟1×、90秒墙钟2×,不循环短素材、不跳转伪造持续时间。
- 每5秒确认媒体时钟与画面绘制继续前进、前台可见、未暂停或报错,以及实际播放速率。
- 包装真实SDK迭代器取得解码Canvas时间戳,比较实际AudioContext主时钟;每阶段保留
帧数、最大/累计偏差和固定大小的毫秒直方图,阈值250ms。切换操作之间单独记录阶段。
- 连续播放后seek到100秒,再切换90P与French音轨,各阶段继续实际播放至少5秒。
- 包装真实AudioContext节点创建/断开,仅持有在用节点和未完成迭代器;每次采样节点少于96、
迭代器不超过2。销毁后节点/队列/迭代器归零,AudioContext关闭,创建与断开数量相同,
再等待300ms确认没有新节点或画面绘制。
- 缺少必要原生构造器的环境单独记录能力对照,不构造播放器,不计作播放通过。
本轮结果与完整CI已写入下方证据。失败记录保留,遇到实际缺陷先定位、修复并回归,
不会通过放宽阈值或把失败改为能力缺失来完成验收。
## 证据边界
这是至少195秒的实际墙钟组合,不能推导数小时音画漂移、声学输出同步、GC堆无泄漏、
后台节流或物理设备支持。资源断开计数只证明被测原生节点/迭代器的生命周期,不是完整
内存分析。前面的原生Document PiP检查点也只覆盖可见opener;MB-CAP-01、MB-LIFE-01
和MB-LICENSE-01仍按各自完整关闭条件继续,不由本检查点自动关闭。
## 本机验收结果
六项全部通过,其中Chromium/Firefox四项实际播放;两项Windows WebKit缺失能力对照
不计播放。四个原生场景都完成至少195秒墙钟播放、seek/quality/audio及destroy清理。
| 引擎 / 核心 | 五阶段墙钟合计 | 最大AV时钟偏差 | 创建 / 断开节点 | 同时在用峰值 |
| --- | --- | --- | --- | --- |
| chromium / published | 195.48s | 42.00ms | 13661 / 13661 | 64 |
| chromium / candidate | 195.52s | 41.33ms | 13661 / 13661 | 64 |
| firefox / published | 195.62s | 45.67ms | 13659 / 13659 | 64 |
| firefox / candidate | 195.62s | 51.33ms | 13675 / 13675 | 64 |
完整CI1418项和44重复契约通过,324生产TS。默认12秒生成结果与原冻结manifest、
FFmpeg版本、命令和32文件哈希完全一致。新长素材1208文件的manifest按LF归一化保存,
缓存报告保留原始字节哈希及完整results;每项原始附件包含固定直方图及逐5秒采样。
见[持续播放证据](../baselines/mb-sustained-validation.json)和[素材清单](../baselines/mb-sustained-media.json)。
本轮未发现需要修改生产实现的新运行时缺陷;新增的是可重复专项验证与工程入口。
任务保持doing并专用检查点提交,无推送或发布。