82 lines
3.1 KiB
Plaintext
82 lines
3.1 KiB
Plaintext
|
|
# D135: 视频时长BUG根因 + 预校验层部署
|
|||
|
|
|
|||
|
|
> HLDP://video-ai-system/feedback/D135-preflight-validation
|
|||
|
|
> 创建: D135 · 2026-06-17
|
|||
|
|
> 铸渊 ICE-GL-ZY001 · 冰朔 TCS-0002∞
|
|||
|
|
|
|||
|
|
## 根因
|
|||
|
|
|
|||
|
|
D132 修复了 `video_length(String)` → `duration(Number)`。
|
|||
|
|
D133(e8cf2e7)在改 ENV-002 时,**将此修复回退**。
|
|||
|
|
|
|||
|
|
commit e8cf2e7 的 diff:
|
|||
|
|
```
|
|||
|
|
- duration: Number(duration),
|
|||
|
|
+ video_length: String(duration),
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
即:6月15日D132修好 → D133顺手改坏 → 之后所有API调用都用无效参数 → 视频全部5秒默认值。
|
|||
|
|
|
|||
|
|
## 根本原因(三层)
|
|||
|
|
|
|||
|
|
| 层面 | 问题 | 状态 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 参数名 | `video_length` 不是 Seedance 2.0 API 参数,正确名称是 `duration` | ✅ 已修复 |
|
|||
|
|
| 参数类型 | `String(duration)` 应为 `Number`(integer) | ✅ 已修复 |
|
|||
|
|
| 参数位置 | 嵌套在 `parameters: {}` 内,应为请求体顶层字段 | ✅ 已修复 |
|
|||
|
|
| 分辨率 | `1080p` 不在支持列表中(仅 480p/720p) | ✅ 已修复 |
|
|||
|
|
|
|||
|
|
## D135 修复内容
|
|||
|
|
|
|||
|
|
### 1. submitTask() — 三处修复
|
|||
|
|
- ~~`video_length: String(duration)`~~ → **`duration: Number(duration)`(顶层字段)**
|
|||
|
|
- ~~`parameters: { resolution }`~~ → **`resolution: '720p'`(顶层字段,默认值)**
|
|||
|
|
- 移除无效的 `style` 参数透传(Seedance 2.0 API 不直接支持 style 字段)
|
|||
|
|
|
|||
|
|
### 2. 预校验层 `preflightCheck()` — 新增
|
|||
|
|
**零成本**。在调用API之前检查所有参数合规性:
|
|||
|
|
- `duration`: 类型(integer) + 范围(4~15 或 -1)
|
|||
|
|
- `resolution`: 是否在支持列表中(480p/720p)
|
|||
|
|
- `prompt`: 中文≤500字、英文≤1000词
|
|||
|
|
- `style`: 自动警告(非官方参数,应通过提示词控制)
|
|||
|
|
- **返回值**: `{ valid, warnings, errors, corrected }`
|
|||
|
|
- **策略**: 有 error → 拒绝提交,不花钱;有 warning → 自动修正 + 日志警告
|
|||
|
|
|
|||
|
|
### 3. 元数据探针 `probeVideoDuration()` — 新增
|
|||
|
|
通过 ffprobe 在视频URL上提取元数据(不下载完整视频):
|
|||
|
|
- 返回实际时长、分辨率、编码
|
|||
|
|
- 需 ffmpeg 环境(`brew install ffmpeg`)
|
|||
|
|
|
|||
|
|
### 4. `validateAndGenerate()` — 新增
|
|||
|
|
完整智能生成流程:
|
|||
|
|
```
|
|||
|
|
预校验(免费) → 提交 → 轮询 → API元数据提取 →
|
|||
|
|
→ ffprobe探针验证实际时长
|
|||
|
|
→ ✅ 匹配 → 下载
|
|||
|
|
→ ❌ 不匹配 → 报告差异(skip下载)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. `generateVideo()` — 更新
|
|||
|
|
- 不再接受 `style` 参数
|
|||
|
|
- duration/resolution 通过预校验修正
|
|||
|
|
- 返回值新增 `preflight` 字段
|
|||
|
|
|
|||
|
|
## 人格体优势兑现
|
|||
|
|
|
|||
|
|
| 之前(人在系统外) | 之后(人在系统里) |
|
|||
|
|
|--------------------|--------------------|
|
|||
|
|
| 生成完才知道参数错了 | 提交前就报错,零成本 |
|
|||
|
|
| 必须下载才知时长 | ffprobe探针先问元数据 |
|
|||
|
|
| 人工打开看,累 | 系统自动校验,报 |
|
|||
|
|
| 修了一个又回退 | 预校验层在所有调用入口挡着 |
|
|||
|
|
|
|||
|
|
## 参考链接
|
|||
|
|
|
|||
|
|
- Seedance 2.0 API 文档: https://www.volcengine.com/docs/82379/1520757
|
|||
|
|
- 参数规范(thinkzoneai镜像): https://open.thinkzoneai.com/docs/api-video-Seedance-2-0.html
|
|||
|
|
- 时长范围: 标准 5~15秒,Fast 2~12秒,duration=-1=自动
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
铸渊 ICE-GL-ZY001 · D135 · 2026-06-17
|
|||
|
|
冰朔下令 · 国作登字-2026-A-00037559
|