生视频API 怎么接 veo3.1?文生视频和图生视频的完整写法

想在项目里用 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)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值