有一类失败特别折磨人:参考视频在自己电脑上播放完全正常,一提交生成就失败,报错只有一句 InvalidParameter: Bad Request,不说是哪个参数。换提示词、换时长、重试多少次都一样。
我们查到过一个确定的原因:这段视频是「剪了,但没有重新导出」的。
原因:文件里还留着剪掉的那一段
有些工具裁剪视频时并不真的删掉画面,只是在文件里记一句「从第 X 秒开始播」(术语叫 edit list),被剪掉的数据原样留在文件开头。
- 播放器认这句话,自动跳过开头,所以你看着一切正常;
- 模型那边的解码器不认,读到开头那一段解不出画面的数据,直接报错。
上游报错的时候又不点名是哪个参数,所以两头都查不到问题在哪,只能反复重试。
自己怎么查
用 ffprobe(装了 ffmpeg 就有)跑两条命令:
# 1. 看第一个视频数据包的时间戳:负数 = 中招
ffprobe -v error -select_streams v:0 -show_packets -read_intervals "%+#1" \
-of csv=p=0 -show_entries packet=pts_time 你的视频.mp4
# 2. 数帧和包:包比帧多 = 有解不出画面的废数据
ffprobe -v error -select_streams v:0 -count_frames -count_packets \
-show_entries stream=nb_read_frames,nb_read_packets -of csv=p=0 你的视频.mp4
我们在本机复现了一次:拿一条正常视频,用「不重新编码」的方式从第 3.3 秒剪掉开头。
| 首包时间戳 | 帧数 / 包数 | 文件标注的起始时间 | |
|---|---|---|---|
| 正常视频 | 0 | 1920 / 1920 | 0 |
| 快剪后的视频 | −3.3 秒 | 482 / 680 | 0 |
注意最后一列:文件自己标注的起始时间仍然是 0,所以只看常规信息是看不出问题的,要看第一个数据包。
自己怎么修
在剪辑软件里重新导出一次(导出成新文件,不是直接保存),或者用 ffmpeg 重新编码:
ffmpeg -i 你的视频.mp4 -c:v libx264 -crf 14 -preset medium -pix_fmt yuv420p \
-c:a copy -movflags +faststart 修好的视频.mp4
重新编码时,解码器会按「从第 X 秒开始播」那句话执行,所以出来的正好是你剪好的那段。复现里修好后是首包 0、482 帧 / 482 包、时长 8.03 秒,和剪完应有的一致。
⚠️ 不要用 -c copy -avoid_negative_ts make_zero。网上常见这个「不重新编码的修法」,它确实能让时间戳变正常,但会把剪掉的那段放回开头:复现里帧数从 482 变回 680,时长从 8 秒变成 11.3 秒。时间轴是干净了,但内容已经不是你剪好的那条。
在心宇上:上传时自动处理
从 2026 年 9 月 19 日起,上传视频时我们会先检查第一个数据包的时间戳,是负数就自动重新编码一次。编码质量取得很高(crf 14),出问题的那段视频修复前后相似度是 45.6 dB,肉眼基本分不出。只处理有问题的文件,正常文件不会被重新编码。
修复后,我们用同一段出过问题的视频、同样的参数重新提交,一次通过。
如果你的视频是在这之前上传的:旧文件不会被自动修复,在节点上直接点重试也会沿用原来那份,依然失败。把同一个文件重新上传一次就行,不用自己先重新导出。
参考视频被拒的其他常见原因
如果时间戳正常,还可以对照这几条:
- 总时长超限:Seedance 2.5 的参考视频合计最长 30 秒,超出的话提交前就会提示。
- 视频编辑的原片太短或太长:原片必须在 4 到 30 秒之间。
- 参考图比例:Seedance 要求参考图的长宽比在 0.40 到 2.50 之间,详见《Seedance 为什么拒了你的参考图》。
