# WBV2-P1128-000: ffmpeg.wasm movie codec module - task: `WBV2-P1128-000` - parent: `WBV2-P1127-000` - status: `done` - gap: `workflow:sequencer_movie_codec` - ownerFamily: `MEDIA` - targetImplementationClass: `LOCAL_BOUNDED` ## 目标 使用本地 ffmpeg.wasm Worker 作为 Chromium HTML media 解码失败时的 MOVIE probe/proxy fallback;核心 JS/WASM 同源懒加载,输入和输出均 hash-bound。 ## 输入与范围 - Dependencies: `web/package.json`, `web/package-lock.json` - Protocol: `web/protocol/sequencer.ts` - Runtime: `web/app/src/sequencer/SequencerCodecProbe.ts`, `web/app/src/sequencer/FFmpegMovieProbe.ts`, `web/app/src/sequencer/ffmpeg-movie-probe.worker.ts`, `web/app/src/sequencer/SequencerMediaProxyCache.ts` - Local core: `web/app/src/vendor/ffmpeg/ffmpeg-core.js`, `web/app/src/vendor/ffmpeg/ffmpeg-core.wasm`, `web/app/public/vendor/ffmpeg/ffmpeg-core.js`, `web/app/public/vendor/ffmpeg/ffmpeg-core.wasm` - Upstream source: `third_party/ffmpeg.wasm-source-f876f907c7e9b9bf51d4ed0b913a855a63ae63fc.tar.gz` - Production test: `web/tests/e2e/ffmpeg-movie-probe-production.spec.ts` ## 验收 ```bash npm --prefix web run typecheck npm --prefix web run build WEB_TEST_PORT=5342 npm --prefix web run test:e2e -- --workers=1 tests/e2e/ffmpeg-movie-probe-production.spec.ts ``` 必须记录原生 HTML media 失败后的 ffmpeg.wasm 正例、metadata/frame 输出、损坏/identity/runtime 负例、AbortSignal cancellation、Worker termination、cache manifest identity 和 Chromium。历史 M11 MOVIE golden 不重写;H.264/浏览器解码差异留在新 capability receipt。 ## 交付与回滚 - Receipt: `tests/golden/WBV2-P1128-000/module-receipt.json` - Manifest: `tests/golden/WBV2-P1128-000/manifest.json` - Status: `docs/status/WBV2-P1128-000.md` - 回滚:恢复 P1127 manifest 为 queue parent,保留 ffmpeg 源码下载和依赖变更供后续复用。