fix: 预览请求补传 output_width/output_height,匹配 video_ratio #1488
Reference in New Issue
Block a user
Delete Branch "fix/preview-resolution"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
调用 POST /generation/preview 时没有传 output_width/output_height,导致预览视频一律以默认 1280×720 横屏渲染,与用户选择的 9:16 竖屏不符,画面两侧出现黑边。
改动
新增
calculateResolution共享工具函数CreatePreviewRequest 类型新增 output_width/output_height
buildPreviewRequest 传入计算后的分辨率
output_width: 1080, output_height: 1920(9:16 时)useGenerateVideo 改用共享函数
验收标准
【阻塞级判定】
📊 审查概览
🔴 阻塞级问题(必须修复)
无
💡 改进建议(不阻塞合并)
[apps/web/src/pages/generate/hooks/useGenerateVideo.ts: 64-67] 冗余计算
GeneratePage中已经通过useMemo计算了resolution并通过 props 传入useGenerateVideo,但在useGenerateVideo内部又重新调用了一次calculateResolution。这导致了重复计算,且如果未来GeneratePage的计算逻辑变更(例如增加了额外的偏移量),useGenerateVideo中的逻辑将不一致。props.resolution,移除 Hook 内部的calculateResolution调用。如果resolution未在UseGenerateVideoProps类型定义中,请一并添加。[apps/web/src/pages/generate/utils/calculateResolution.ts: 1-10] 注释与逻辑不符
ratio包含:的情况(如 9:16)。对于包含x的情况(如 1080x1920),代码直接返回解析后的数值,并未强制长边为 1920。x格式(如 1080x1920)将直接使用输入的像素值,不进行归一化处理;或者确认代码逻辑是否需要统一强制 1920 长边。✅ 良好实践
calculateResolution,提高了代码的可复用性和可测试性。calculateResolution中包含baseShort - (baseShort % 2)逻辑,确保视频分辨率为偶数,符合视频编码标准(如 H.264 通常要求宽高为偶数),这是一个很好的细节处理。calculateResolution中对空值、非法字符串格式进行了兜底处理,返回默认分辨率,增强了代码的健壮性。🤖 由 AI 代码审查机器人自动生成 | 2026-08-25 01:05:44 | 模型:
🚀 预览环境已部署
CI全绿,自动审批通过。
CI全绿,自动审批通过。
🗑️ 预览环境已清理
PR #1488 已关闭或合并,对应的预览环境已被清理。