Veo 3 和 Sora 把文生视频拉到了文生图在十八个月前所站上的同一条质量线上。 问题在于:两家供应商都把使用权挡在候补名单、地区限制,以及一套跟你其余 AI 技术栈格格不入的专有计费流程之后。
本指南带你通过 Brievio 发出第一次 Veo 3 与 Sora API 调用 —— 货真价实的模型、没有候补名单、与 OpenAI 兼容的鉴权方式、按生成视频的秒数计费,结果由一个永久有效的 URL 提供。 全程大约五分钟。
准备工作
- 在 brievio.com/app/signup 注册。 注册即送 2 美元额度 —— 足够你跑上几段 5 秒的测试片段。
- 在 /app/keys 创建一个密钥,它以
sk-brievio-开头。 - 导出它:
export BRIEVIO_API_KEY=sk-brievio-...。
用 Veo 3 做文生视频
论电影感镜头,Veo 3 目前是市面上最好的文生视频模型 —— 它懂镜头语言 (推轨、推近、移焦),能在剪辑之间保持稳定的光照,也能正确处理 24fps 的运动。一次生成耗时 30 秒到几分钟;HTTP 响应是同步的 —— 请把客户端 超时设得长一些。
import requests, os, time
KEY = os.environ["BRIEVIO_API_KEY"]
resp = requests.post(
"https://api.brievio.com/v1/video/generations",
headers={"Authorization": f"Bearer {KEY}"},
json={
"model": "veo-3",
"prompt": "A drone shot pulling back from a quiet mountain lake at dawn, mist rising off the water. Cinematic, 24fps, soft golden light.",
"duration": 8,
"aspect_ratio": "16:9",
"resolution": "1080p",
},
timeout=600, # 一次生成耗时 30 秒到几分钟
)
resp.raise_for_status()
data = resp.json()
print(data["data"][0]["url"])响应是 OpenAI 风格的: { data: [{ url: '...' }] }。这个 URL 是 永久有效的,由 files.brievio.com 提供 —— 如果你需要长期托管,下载一次 存进你自己的存储即可。该片段是货真价实的 Veo 3 输出,不是经过重新编码 或加水印的副本。
图生视频
用一张图来锚定,通常才是你拿到生产级结果的地方。Veo 3 支持两种图像 模式:
image_mode: "frame"—— 单张图作为首帧; 两张图则是首帧 + 末帧。这是image_url的默认行为。image_mode: "reference"—— 最多 3 张风格 参考图,用于在不强制指定帧的情况下,保持角色 / 服装的一致性。
# 图生视频:传入一个 image_url 来锚定首帧。
resp = requests.post(
"https://api.brievio.com/v1/video/generations",
headers={"Authorization": f"Bearer {KEY}"},
json={
"model": "veo-3",
"prompt": "She smiles, then walks out of frame to the left",
"image_url": "https://files.brievio.com/<your-upload>.jpg",
"image_mode": "frame", # 一张图 => 作为首帧
"duration": 6,
"aspect_ratio": "9:16", # 竖屏,原生适配手机
},
timeout=600,
)
print(resp.json()["data"][0]["url"])如果你手上还没有锚定图的公网 URL,把文件字节 POST 到 /v1/files,Brievio 就会替你把文件托管在 files.brievio.com 下:
# 如果你手上没有公网 URL,可以直接上传文件字节,Brievio 负责托管。
with open("anchor.jpg", "rb") as f:
up = requests.post(
"https://api.brievio.com/v1/files",
headers={"Authorization": f"Bearer {KEY}"},
files={"file": f},
)
image_url = up.json()["url"] # 永久有效的 files.brievio.com URLSora 和其他模型
目录里的每一个视频模型都用同样的接口形态 —— 传入对应的模型标识符 即可:
veo-3—— 电影感,1080p,支持图生视频。sora-2—— OpenAI Sora。seedance-1-5-pro、seedance-2-0-pro—— 字节跳动出品,在角色运动上非常出色。
实时列表以及每个模型的每秒价格,参见 /models。
从 Node / TypeScript 调用
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.BRIEVIO_API_KEY,
baseURL: "https://api.brievio.com/v1",
});
// /v1/video/generations 不在 OpenAI SDK 的方法形态里,但同一个鉴权
// 头照样能用 —— 用 fetch 直接调它:
const resp = await fetch(
"https://api.brievio.com/v1/video/generations",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${process.env.BRIEVIO_API_KEY}`,
},
body: JSON.stringify({
model: "sora-2",
prompt: "A red origami crane unfolding into a paper plane and flying away through a window",
duration: 5,
resolution: "1080p",
}),
},
);
const { data } = await resp.json();
console.log(data[0].url);计费方式
视频模型按输出的秒数计费,而不是按 token。Brievio 在 /pricing 上为每一个视频模型公布每秒费率 —— 定价略低于官方标价。常见的一段 8 秒 Veo 3 1080p 片段,只需几美分。 失败的生成(4xx / 5xx)从不计费。
上线核对清单
- 把 HTTP 超时设为 10 分钟。网关向上游轮询最长 540 秒,若模型在此之后仍在工作,则返回 504。对于特别耗时的任务, 重试即可 —— 按相同提示,生成是幂等的。
- 把结果 URL 持久化。尽管 files.brievio.com 的 URL 是永久有效的,你的产品仍应在自己掌控的 存储里拥有一份属于自己的副本。
- 用退避策略处理 429。视频模型受 GPU 资源约束; 短暂的争用是正常现象。当响应带有 retry-after 头时,会予以遵循。
- 合理时按提示哈希做缓存。相同的提示 + 种子 + 模型 会返回近乎一致的视频 —— 为它付两遍钱是浪费。
有问题请联系:contact@brievio.com。 网关背后的团队会阅读每一封邮件,并在 24 小时内回复。