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

4.6 KiB
Raw Permalink Blame History

视频画布与 3D 导演台串联验收(2026-09-16 至 09-17)

测试范围:本地隔离工作树、真实登录、真实阿里云模型与现有对象存储。未部署线上,未修改线上模型目录。临时模型目录仅含官方千问 3.8 Max 和万相 wan2.6-i2v-flash。

实测发现与修复

  • 旧导演台只有 CSS 场景、计时器和固定示例截图。活动入口替换为延迟加载的 Three.js 导演台:对象变换、机位、真实截图、GLB 导入及场景持久化。
  • 通用上传拒绝 GLB。增加登录校验的专用接口,限制 25 MiB,验证 GLB 2.0 头部、总长度、JSON 场景和嵌入资源;明确拒绝外部纹理/缓冲区。
  • 当前七牛存储域名未提供浏览器跨域响应头,GLB 上传成功后仍无法渲染。使用现有登录保护的模型代理,并加入该存储域名的匹配。
  • 新画布首次携带节点保存时,先写节点再建父记录导致外键失败。改为事务内创建父记录、同步节点和关系、更新画布;已有画布加行锁校验版本。
  • 主视频编辑器声音开关未传给生成接口,现已传递 generateAudio。
  • 首帧/首尾帧快捷入口自动插入示例图片且未固定模式。改为选择画布真实图片,显式设置模式;缺少首帧/尾帧时禁止提交。
  • 裁剪尺寸一直显示固定的 1024×576,且覆盖层继承 pointer-events: none 导致拖框实际移动节点。恢复裁剪层交互,尺寸随选择区域与素材尺寸变化;未知尺寸时显示区域百分比。
  • 音轨卡片播放按钮只有占位提示。接入真实 audio 元素、播放/暂停、进度和错误反馈。
  • 提示词接口补充不含密钥和提示词正文的失败类型/状态码日志,便于区分模型与传输错误。

验收记录

步骤 实际结果
首次带节点 PUT 保存 HTTP 200,节点与画布均落库
同版本并发保存 一次 200、一次 409,未覆盖较新版本
真实 3D 渲染 人偶与上传的橙色立方体 GLB 可见;位置修改生效
多机位截图 正面 1280×720 / 40,614 B;侧面 720×1280 / 38,032 B;文件哈希不同
场景持久化 数据库保存后完整刷新页面,恢复 2 对象、3 机位、2 截图、9:16 比例及模型 X=1.8/Y=0;GLB 重新可见
千问优化 首次页面调用失败,原文保留;重试成功,HTTP 200 / 54 秒,结果应用到视频节点
真实截图引用 节点参考缩略图 URL 与导演台截图逐一一致
万相生成 HTTP 200 / 35.0 秒;1280×720,5.008 秒,708,505 B,H.264 + AAC 双声道
浏览器播放 paused=false、播放时间推进、无视频错误
自动归档 HTTP 200 / 23.8 秒,换成持久存储地址
剪辑 以正确生成视频为输入,1280×720、1.734 秒、H.264 + AAC;HTTP 200 / 32.6 秒
裁剪 在剪辑结果上真实拖框,标签和导出均为 638×358,1.734 秒、H.264 + AAC;HTTP 200 / 19.8 秒
音视频分离 裁剪结果生成 638×358、1.734 秒无音轨视频,以及 1.719 秒 AAC 双声道 M4A
完整刷新恢复 全部结果节点和 6 条处理连线恢复;独立音频与无声视频均播放成功、时间推进且无媒体错误
代码验证 TypeScript 源码检查通过,6 组共 40 条定向回归测试通过

第一轮回归过程中,遗留示例节点与导演台截图重叠导致误选,生成了汽车背景视频。这轮被判为串联失败,不能作为导演台成功证据。清理旧示例后,从修复的新入口重跑,并核对真实参考 URL,再生成上述 1280×720 视频。

能力边界

AI 识图重建尚未接入,入口禁用并标明“未接通”;不再以计时器假装完成。当前验证的是基础场景与自包含 GLB,不包括复杂压缩模型、骨骼动画、完整素材库和参考站全部界面的像素验收。视频超分、智能去字幕等未配置服务的功能不计为通过。

本地冷编译和 SSH 数据库连接抖动明显增加了初次加载耗时。测试中恢复连接并重试失败保存后完成后续流程;这些本地耗时不能当作线上性能结论。原提示词优化首次失败没有足够诊断信息,不能断言具体根因。

串联顺序与留档

实际画布连线为:导演台 → 真实机位截图 → 万相首帧视频 → 剪辑 → 裁剪 → 无声视频 + 独立音轨。每一步均使用上一步真实产物。

本地 .qa/video-chain/ 保存了截图、FFprobe 检查结果及实际 MP4/M4A;测试账户、密钥、签名地址、数据库快照不提交 Git。测试结束后禁用临时账户并清理隔离模型目录及临时服务。