mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-22 13:21:20 -08:00
65 lines
4.4 KiB
Markdown
65 lines
4.4 KiB
Markdown
# PKG-ASR-10 原生媒体错误取消与恢复
|
||
|
||
来源 HEAD:`3c89b48514e9fe02b4cac64a1630c50380c4c947`。从 PKG-ASR-05 的
|
||
不支持媒体验收中拆出本项独立缺陷修复,任务05新增对此项的依赖。
|
||
|
||
## 问题与修复
|
||
|
||
真实 PCM 进入调用方识别 Promise 后,通过公开 `art.video.src` 切换到 HTTP
|
||
JSON 内容,Chromium 发出 `video:emptied`、`video:error`(MediaError code 4),
|
||
但没有 pause。此前 ASR 只处理 play/pause/restart/destroy,仍运行原采集会话。
|
||
延迟识别完成会把失败媒体的过期字幕显示出来,显式捕获图也仍保持 running。
|
||
两种模式和新旧核心的四项原生复现全部失败于旧字幕断言。
|
||
|
||
修复在工厂注册处将 `video:error` 连接到既有 `capture.stop()` 路径,并在 destroy
|
||
时对称移除该监听。不另建状态机、不改变停止语义:错误会同步清空队列/定时器,
|
||
使 pending 识别和迟到 Worklet 消息失效;捕获模式关闭 Context/轨道,默认直接
|
||
绑定保留视频所需的原音频连接。已有字幕沿用原 auto-hide 期限,后续合法播放
|
||
可以复用或重新创建采集。不会取消调用方自己的识别网络请求。
|
||
|
||
这不是声称普通 `art.url` 切换必然有同一问题,也不是网络中断/所有解码错误的
|
||
完整证明。本轮原生错误来自不可解码 HTTP 内容;受控单测覆盖相同错误事件在
|
||
其他异步阶段的取消。正常参数、根及 `/runtime` 类型、返回对象、事件名、分发
|
||
入口保持不变;改变的是错误后不应继续显示旧识别结果的行为。
|
||
|
||
## 测试与构建
|
||
|
||
新增五项单元回归,旧代码全部失败、修复后全部通过:两种模式的 pending 识别
|
||
与迟到 port 消息、两种模式的 Worklet 加载中取消、延迟捕获关闭期间取消重启。
|
||
同时检查默认 Context 保留、捕获资源释放、正常再播放、既有字幕期限和销毁解绑。
|
||
|
||
原生 `asr-media-error.spec.js` 使用真实本地 AAC、AudioContext/Worklet、原生错误;
|
||
只有调用方识别 Promise 由测试控制。验证错误后旧结果不显示,随后切回 AAC
|
||
恢复至少三块非零 PCM 和正常字幕,销毁关闭所有 Context。安装轮包含真实旧核心
|
||
5.3.0、5.4.0 与候选核心,以及两种音频输入模式。
|
||
|
||
第一轮跨浏览器检查的三个 Firefox 失败发生在触发错误之前:测试挂起了首个
|
||
静音块,又等待被该 Promise 阻止的后续非零块。已修正为仅在首个非零 PCM
|
||
到达后挂起识别;保留失败报告、原 7 秒等待和非零 PCM 断言,不作为生产回归。
|
||
|
||
正常 `yarn build artplayer-plugin-asr` 生成 main/legacy/ESM 与 docs/compiled。
|
||
三个格式都与隔离安装快照逐字节相同。`run-gTeZ8R` 通过重新构建、Yarn pack、
|
||
仓库外安装/冻结复装及文件核验;通用 36 runtime、5 旧类型、8 精确类型仍只
|
||
属于 core/chapter,ASR 的运行证据来自本批专项与实际安装浏览器测试。
|
||
|
||
最终命令、版本、输入指纹、失败与通过结果见
|
||
[验证记录](../baselines/asr-media-error-validation.json)。Node 24.21.0、Yarn 1.22.22;
|
||
234 项 ASR 专项及 main/legacy 各43项生命周期回归通过,类型/lint/工具链与清单
|
||
检查通过。安装回归同时保留正常音量/静音、无音轨和跨域显式捕获用例。
|
||
Windows WebKit 无 WebAudio 的项目明确跳过,不以这些跳过关闭设备要求。
|
||
|
||
最终源码轮为 8 通过/4 能力跳过;加入 5.3.0 错误路径及正常回归的 installed
|
||
main/legacy 各 36 通过/18 能力跳过。合计 80 通过、40 跳过、0 失败、0 重试。
|
||
这与修复前四项全红及测试等待修正前的 5 通过/3 失败/4 跳过分别保存,不能
|
||
合并成一个全部成功的历史结果。Chromium 的媒体取消诊断仍保留在机器证据中。
|
||
|
||
## 维护与剩余
|
||
|
||
包内 README/ARCHITECTURE 解释新错误边界、监听所有权、重启和调用方请求职责。
|
||
`test:asr`、`test:unit` 与 installed CI 清单均纳入回归;远端 CI 仍待执行。
|
||
没有新增依赖或改锁,类型文件未改;最终各包大版本升级由既有发布任务承接。
|
||
|
||
本项不关闭 PKG-ASR-05 的其他不支持媒体、真实设备或分发门槛,也不改变默认
|
||
CORS 限制。回退需同时撤销错误监听/解绑、测试/文档并正常重建产物;这样会
|
||
重新引入已证明的过期识别问题。未推送、部署或发布。
|