想在项目里用 Veo 3.1 生视频,第一关往往不是代码。官方接口国内直连不上, 账号要海外手机号,付款要国际信用卡,公司报销拿不到发票—— 等这几关跑完,需求早排到下个季度了。
甜甜圈API(dashengfenshen.cn)这边是一个密钥、兼容 OpenAI 协议的端点, model 换个字符串就切模型。这篇讲 veo3.1 具体怎么调、和另一个生视频模型怎么分工, 以及跑批时会踩的几个坑。
生视频这边有两个模型
| 模型 ID | 特点 | 用在哪 |
|---|---|---|
veo3.1 | 画面质感和镜头语言强 | 主推款、品牌片、要求高的那几条 |
Minimax-H3-10s | 固定出 10 秒 | 素材位:主图旁小视频、信息流首个素材 |
Minimax-H3-15s | 固定出 15 秒 | 要讲清一个完整动作或过程 |
模型 ID 要一个字不差地传。veo3.1 是小写、无空格,写成 Veo 3.1 会直接报模型不存在, 不会自动纠正。
分工上的经验:Minimax 那两个时长固定、行为可预期,适合批量铺量; veo3.1 的镜头表现更好但也更慢,适合单条精修。别拿它跑几百条的量。
接进来的写法
接口地址(兼容 OpenAI 协议,直接替换 base_url 即可):https://dashengfenshen.cn/v1
端点和生图是同一个,区别只有 model 和超时长度:
const BASE = 'https://dashengfenshen.cn/v1/chat/completions';
const HEAD = {
Authorization: `Bearer ${process.env.TTQ_API_KEY}`,
'Content-Type': 'application/json',
};
// 文生视频:content 直接给描述
async function textToVideo(prompt, model = 'veo3.1') {
const r = await fetch(BASE, {
method: 'POST', headers: HEAD,
body: JSON.stringify({ model, messages: [{ role: 'user', content: prompt }] }),
// 生视频是分钟级的活,超时按 5 分钟给
signal: AbortSignal.timeout(300_000),
});
if (!r.ok) throw new Error(`${model} HTTP ${r.status}`);
return r.json();
}
// 图生视频:把一张图作为首帧传进去
async function imageToVideo(frameUrl, prompt, model = 'veo3.1') {
return fetch(BASE, {
method: 'POST', headers: HEAD,
body: JSON.stringify({
model,
messages: [{ role: 'user', content: [
{ type: 'image_url', image_url: { url: frameUrl } },
{ type: 'text', text: prompt },
]}],
}),
signal: AbortSignal.timeout(300_000),
}).then((r) => r.json());
}两个函数只差 content 一处,其余完全一样,封装一次就够。
描述要写镜头,不要写形容词。「镜头缓慢环绕商品一周」「由远及近推进」 「从左向右平移」这类能被理解;「有电影感」「大气一点」它猜不到你要什么。
文生视频和图生视频,该用哪个
这是接之前就该想清楚的,两者的可控性差很远。
文生视频从零开始编画面,自由度高,但你拿不到确定的主体。 让它生成"一个白色马克杯",出来的杯子形状、比例、把手角度每次都不一样。 做概念片、氛围片可以,做具体商品不行。
图生视频给的那张图是真的作为第 0 帧进入生成过程的,后面每一帧都在它的基础上 做时序预测。所以主体是确定的——你的商品长什么样,视频里就是什么样。
两条直接跟着来的结论:
首帧的清晰度就是整条片子的清晰度上限。拿一张 800×800 的老图去生视频, 出来整条都是马赛克,没法靠参数救。所以先把图处理到 1200 以上再送进去。
首帧里没有的信息,模型会自己编。商品的 logo、五金件、配色必须在首帧里就清晰可辨, 否则生成过程中会被"想象"成别的样子。描述里也要明确写「商品保持静止」—— 不写的话商品会自己变形、转向。
所以做商品视频基本只用图生视频。文生视频留给不需要精确主体的场景。
常见问题
Q:model 到底填什么? A:veo3.1,小写无空格。填 Veo 3.1 或者带中文后缀的写法都会报模型不存在。
Q:超时设多少合适? A:按 5 分钟给。设短了最亏——服务端其实生成成功了,你的客户端已经断开, 这次照样计费,视频却拿不到。
Q:跑批并发能开多少? A:压着跑,三路起步。生视频单条成本高,一次并发跑飞几十条错的, 比慢半天难受得多。先出三条确认方向再放开。
Q:同一段描述能复现同一条视频吗? A:不能,生视频的随机性比生图大得多。满意的那条要立刻转存到自己的存储—— 返回链接有有效期,过期就真的没了。
成本怎么控
分级用:铺量的素材用固定时长的模型批量出,主推款和品牌片才上 veo3.1 单条精修。 反过来做最浪费——给一个月卖三件的商品做精修片,那笔钱花在主推款上回报高得多。
另外把入参落盘。prompt、model、首帧图 URL 存进任务表,失败的按 id 重投, 不要让人工重填一遍。生视频的失败率比生图高,这一层省下的时间比省单价更实在。
接口服务:甜甜圈API(dashengfenshen.cn)

1万+

被折叠的 条评论
为什么被折叠?



