ai-chatbot/docs/video-canvas-completion-2026-09-16.md

65 lines
6.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.

# 视频画布继续完善与复测(2026-09-16)
> 后续第三轮进展见 [脚本、参考图与视频转存回归](video-canvas-followup-2026-09-16.md)。
本记录接续 [上一轮真实测试](video-canvas-real-test-2026-09-16.md)。独立工作树本地验证,沿用真实服务商和数据库配置,使用专用测试账号;没有启用模拟接口,没有修改真实用户画布或默认模型。
## 本轮完成的功能
| 功能 | 与 LibTV 对照的缺口 | 本轮实现与验证 |
|---|---|---|
| 视频提示词优化 | 原入口只提示后端待接入 | 新增真实文字模型接口;默认沿用管理员配置的官方千问 3.8,可选择已有文字模型,预览编辑后应用;真实优化 HTTP 200 |
| 视频提示词翻译 | 原入口只提示后端待接入 | 中英文双向翻译;保留素材引用;真实翻译 HTTP 200,浏览器填回通过 |
| 提示词结果编辑 | 应用后旧文字与新结果叠加 | 修复 contentEditable 与 React 更新冲突;浏览器实测应用后只剩新译文 |
| 弹窗交互 | 缺少完整模态交互 | 使用现有 Dialog 组件,焦点约束、Escape 关闭、取消请求、失败保留原文、禁止空结果应用 |
| 视频时段剪辑 | 只记录范围,不输出成片 | 按源视频实际时长定位,FFmpeg 导出独立 MP4,保留音轨,创建关联结果节点;真实 8 秒片源导出 4 秒新片通过 |
| 视频画面裁剪 | 上轮仅处理函数通过 | 本轮完整下载、处理、上传 HTTP API 通过,输出 640×360、8 秒新片 |
| 视频音轨拆分 | 上轮仅处理函数通过 | 完整 API 输出独立 AAC 音频和无音轨 MP4;不冒充人声/背景音分离 |
| 本地音视频上传 | 原来只存 blob 地址,刷新失效 | 新增真实上传接口和媒体探测,保存对象存储地址;MP4/M4A 上传通过,伪装 MP4 被拒绝;最多 125 MiB、10 分钟 |
| 上传状态恢复 | 中断后可能一直等待 | 显示上传中/失败,恢复旧 blob 或未完成上传时明确要求重新上传 |
| 脚本/画面分析长时间等待 | 旧 SDK 参数被类型断言掩盖,缺少调用时限 | 改用 maxOutputTokens,脚本预算 12000、视频分析 2200、其他分析 1600;150 秒推理时限、175 秒页面请求时限、关闭 SDK 自动重试;空白/截断/非 JSON 结果不再冒充结构化成功 |
| 项目加载失败 | 失败后还可能继续编辑未就绪画布 | 加载超时和失败显示重试,加载成功前阻止编辑,避免保存覆盖 |
## 真实调用结果
本地开发编译、数据库隧道和接口前置处理均计入 HTTP 耗时,不代表生产模型纯推理时间。
| 测试 | 结果 | 完整 HTTP 耗时 / 产物 |
|---|---|---|
| 官方千问 3.8 翻译 | 通过 | 39.325 秒;保留 @主体1,红杯/白桌/8 秒限制完整 |
| 官方千问 3.8 优化 | 通过 | 68.437 秒;返回可直接使用的视频提示词 |
| 官方千问 3.8 图片理解复测 | 通过 | 85.597 秒,HTTP 200;正确识别红杯、右侧杯柄、咖啡、灰白背景,无虚构人物 |
| 官方千问 3.8 脚本分析复测 | 未通过 | 103.003 秒,HTTP 500;连接被对端关闭,未完成脚本生成 |
| 选择 Agnes 1.5 进行翻译/优化 | 失败 | HTTP 502;不替换用户原文,不改变默认模型 |
| 误选视频模型做提示词处理 | 正确拒绝 | HTTP 400,要求文字模型 |
| Veo 3.1 Fast 文生视频 | 通过 | 151.007 秒;8 秒、1280×720、H264 + AAC,1,005,090 字节,已解码检查红杯画面 |
| Veo 首帧视频复测 | 未通过 | 164.342 秒;本站到服务商连接失败 `fetch failed`,不据此判定模型不支持 |
| Veo 首尾帧复测 | 未通过 | 15.942 秒;输入图片可达性检查失败,HTTP 400,未提交上游生成 |
| Veo 多参考复测 | 未通过 | 83.545 秒;上游拒绝 HTTP 503,请求 ID `3b068421-5c82-423b-a05b-6a557ab5c689` |
| 时段剪辑 | 通过 | 21.837 秒;4 秒、1280×720、H264 + AAC,748,275 字节 |
| 画面裁剪 | 通过 | 17.115 秒;8 秒、640×360、H264 + AAC,897,501 字节 |
| 音视频拆分 | 通过 | 27.781 秒;静音 MP4 1,526,056 字节,AAC 197,583 字节 |
| 视频上传 | 通过 | 33.266 秒,返回真实对象存储地址及 8 秒时长 |
| 音频上传 | 通过 | 22.951 秒,返回 M4A 地址及 8 秒时长 |
| 无效 MP4 上传 | 正确拒绝 | HTTP 400,文件内容校验失败 |
文生视频请求走自动匹配,响应确认实际使用 `veo-3.1-fast`。此次成功更新了上一轮该模式失败的状态,但不证明其他模式或每次调用均成功。生成接口本次返回服务商地址,其长期留存尚未验收;与本轮修复的用户上传文件持久化是两个环节。
本机代理对媒体域名使用保留网段 DNS。完整媒体 API 测试仅在开发进程对两个已知媒体域名使用经服务器解析的公网地址;生产安全下载器的 IP 校验和 SSRF 防护没有放宽。
## 页面回归与边界
- 官方千问翻译弹窗成功显示结果,应用后只保留新译文;保存重试成功后刷新,重新选择节点仍为同一译文。证据 `prompt-after-refresh.txt/png`。
- 本地冷编译和接口前置检查曾使保存超时,页面显示失败并允许重试;点击重试后已保存。未把本地耗时当作生产性能结论。
- 浏览器上传自动化被文件选择器事件超时阻塞,无法完整验收“从页面选文件到刷新后播放”;真实上传 HTTP 接口已单独通过。不能将接口通过写成整个页面流程通过。
- 58 项定向回归通过:6 项新工具契约、12 项模型/参数/媒体安全、4 项保存队列、36 项 VIP98K 相关回归。
- 源码 TypeScript 检查通过;未宣称完成生产构建,临时 Next 生成目录不纳入源码检查。
## 仍未完成
音频驱动视频没有已确认可用模型;视频超清、去字幕、专业人声分离、AutoLink、智能剪辑及逐帧功能未完成全量对齐。布局与参考站相近,但本轮以真实功能闭环为主,不能称为全站像素级复刻。
服务器已确认存在 `/usr/bin/ffmpeg` 与 `/usr/bin/ffprobe`。本轮代码未部署生产。原始证据保留在本地 `.qa/video-completion/`,包含 API 响应、ffprobe 信息、实际产物和回归日志;带临时媒体签名的原始响应不提交 Git。
收尾:两个专用测试账号已停用并撤销活跃会话;临时环境凭据已删除;本地开发服务、数据库隧道和本轮浏览器标签已关闭。开发工具自动修改的 next-env.d.ts / tsconfig.json 已还原,主工作区未修改。