54 lines
3.8 KiB
Markdown
54 lines
3.8 KiB
Markdown
# N-021 Sequencer 与音频
|
||
|
||
状态:`BLOCKED`(strip schema、真实 Main reader、确定性时间编辑、长媒体有界索引/seek/cache
|
||
和 codec 能力门已落地;Main 写回、完整媒体解码/渲染、音频波形和服务端编码仍未实现)
|
||
|
||
## 已验证切片
|
||
|
||
1. N-021-A(部分):版本化 `SequencerTimelineIR` 覆盖 Scene、Movie、Image、Sound、
|
||
Effect、Meta strip、channel、帧范围、source range、speed、proxy 和依赖;strip、
|
||
image、dependency 数量以及帧范围都有预算,资源路径经过项目沙箱规范化。
|
||
2. N-021-B(部分):`MOVE`、`TRIM`、`SPLIT` 以 revision 乐观并发控制作用于内存
|
||
timeline;编辑后重新解析依赖和预算,锁定 strip 与 stale revision 会拒绝。
|
||
3. N-021-B/C:`sequencerSourceFrame` 对 speed、trim、split 使用确定性的 source-frame
|
||
映射,避免左右片段复用越界源帧。
|
||
4. N-021-B/C(部分):`resolveSequencerFrame` 在切分边界解析当前顶层 strip、source frame
|
||
与依赖;META 覆盖的子 strip 和 inactive dependency 不会泄漏到渲染帧。
|
||
5. N-021-C/D(门):运行时只报告 WebCodecs/HTMLMedia 需要精确 probe;codec 必须
|
||
出现在已验证 MIME 集合中才可放行,本地编码固定为 `BLOCKED`。
|
||
6. N-021-A(部分):Blender 5.2 `Scene.ed/Editing.seqbase` 读取 Scene、Movie、Image、Sound、
|
||
Meta 和协议支持的 Effect;显示范围由持久 `start/startofs/endofs/len` 计算,保留 channel、
|
||
mute/lock、相对媒体路径、24/1.001 FPS 和 effect input stable ID。绝对路径、未知类型、
|
||
坏依赖或超预算将 Scene sequencer 标为 `BLOCKED`。
|
||
7. N-021-B(transition 子集):CROSS/GAMMA_CROSS 可按半开显示区间确定性解析 `[0,1)` 进度,
|
||
保持 Blender `input1,input2` 顺序,并为两个活动依赖返回各自 source frame;越界、依赖缺失、
|
||
muted 输入和非 cross effect 拒绝。
|
||
8. 桌面 Blender 5.2 fixture 经 WASM/Worker 后,在真实 CROSS 中间帧得到 factor 0.5;两个单张
|
||
Image strip 的 source range 为 `0..1`,显示 20 帧仍固定到 source frame 1,不伪造成图像序列。
|
||
9. V1 long-media 门使用本地 261-byte PNG 与 16,044-byte WAV 建立 1,000,000 帧、10,001
|
||
strips 时间线;1,024-frame bucket index 仅产生 11,914 references,不按总帧数展开 JSON。
|
||
起点/中点/终点、64 次确定性随机 seek、连续 scrub 最新请求胜出和 index/seek/decode 取消均通过。
|
||
10. preview cache 使用 20 KiB 显式 byte budget/LRU,随机 seek 发生真实淘汰且当前 audio/image key
|
||
仍 resident;timeline/current frame/asset hashes 作为内容寻址 session manifest 写入 OPFS,终止
|
||
StorageWorker 与 media Worker 后在 frame 765432 恢复。session SHA-256 固定为
|
||
`d2e7e3c5ed9ae4fda6fe358cebb474f5774f1d2037dff3df9b6dfde9e0bebd2d`。
|
||
11. 上述门只放行 fixture 的 IMAGE/SOUND 原始本地资源读取,不声称 WebCodecs MOVIE decode、
|
||
waveform/proxy 生成或最终编码完成;`video/mp4` 和 local encoding 仍结构化阻断。
|
||
|
||
## 仍然阻断
|
||
|
||
- N-021-A/B:Main strip 写回、非 CROSS transition/modifier 完整参数、undo/redo 和 save/reopen;
|
||
基础真实 reader 与 CROSS/GAMMA_CROSS 帧描述已完成。
|
||
- N-021-C:WebCodecs 精确 seek/decode、音频 waveform、proxy 生成、A/V sync、丢帧和
|
||
损坏媒体处理。
|
||
- N-021-D:浏览器不支持的 codec、混音与最终编码的服务端 Blender job。
|
||
- N-021-E:V1 有界 Chromium/OPFS 长媒体门已完成;完整桌面/Chromium 解码/渲染 golden 仍阻断。
|
||
|
||
## 验收
|
||
|
||
```bash
|
||
WEB_TEST_PORT=5321 npm --prefix web run test:e2e -- --grep "N-021 sequencer"
|
||
npm --prefix web run test:sequencer-main-reader
|
||
npm --prefix web run test:long-media-performance
|
||
```
|