Loading...
Loading...
Generate smooth video transitions between two key frames with Gemini Omni 1.1 Flash. Provide a start frame, an end frame and a text prompt to guide the in-between motion.
No output yet
Run the model to see generated results.
import requests
result = requests.post(
'https://api.e2x.ai/v1/jobs/submit',
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json'
},
json={
'model': 'google/omni-1.1-flash/start-end-frame-to-video',
'input': {}
}
)import time
job_id = result.json()['jobId']
while True:
response = requests.get(
f'https://api.e2x.ai/v1/jobs/{'{job_id}'}',
headers={'Authorization': f'Bearer {'{API_KEY}'}'}
)
data = response.json()['data']
if data['status'] == 'completed':
print('Done!', data['outputs'][0]['url'])
break
elif data['status'] == 'failed':
raise Exception(f"Job failed: {'{'}data['error']['message']{'}'}")
time.sleep(2)按时长和分辨率估算每次生成的成本。您只需为实际运行的部分付费。
Gemini Omni 1.1 Flash 就是 Google 的 gemini-omni-1.1-flash,自 2026年8月27日起 GA,属于 Gemini 家族而不是 Veo。我们把它的双帧 capability 运行为 google/omni-1.1-flash/start-end-frame-to-video,并按输出的每一秒计费——720p 下 $0.09,是 $0.15 标价上常年 40% 折扣的结果。默认的 8 秒片段是 $0.72。
进去的是三个字段:一个起始帧、一个结束帧、一条 prompt。您的第一张图成为第一帧,第二张成为最后一帧,中间的一切由模型发明。这不是一次片段请求,而是一次架桥请求,而一座桥值多少钱,取决于它两端的河岸值多少钱。
这个能力也是新的——上一代 Omni Flash 压根没有它,这是我们那篇 1.1 发布记录里最朴素的一条论据。这是一次连续性的发布,不是一次画质的发布。
我们的费率,核查日期为 2026年8月28日:
| 时长 | 360p | 720p | 1080p | 4K |
|---|---|---|---|---|
| 4 秒 | $0.1188 | $0.36 | $0.54 | $0.72 |
| 6 秒 | $0.1782 | $0.54 | $0.81 | $1.08 |
| 8 秒(默认) | $0.2376 | $0.72 | $1.08 | $1.44 |
| 10 秒 | $0.297 | $0.90 | $1.35 | $1.80 |
1080p 和 4K 是放大出来的,不是原生渲染。
把它想成补间是错的。补间工具是把像素 A 混合到像素 B。这个模型读的是两张图像,判断什么样的事件说得通地把场景从一头带到了另一头,然后把那件事渲染出来——音频也在内,从同一条 prompt 原生生成。没有 has_sound 字段,没有静音开关。
在 24 fps 下,一段 4 秒的桥是 96 帧,其中两帧是您给的。剩下 94 帧是一场关于物理的论证,不管站不站得住,它都要论一遍。取景是 16:9 或 9:16;每个 job 请按 4 分钟预留。
三个问题就能定下这一对。同一个主体吗? 不是「相似」——是「同一个」。同一种光吗? 主光方向、色温、反差。这个运动,摄影机做得出来吗? 如果您没法用一句摄影师听得懂的话说出来,那模型也做不到。
答案是「否」的时候,什么错都不会报——模型会把这道缝糊过去,有四种形状:
一段用不了的片子,跟一段能用的一样贵。
按每秒 $0.0297 算,一次 4 秒的 360p 测试是 $0.1188;8 秒的 720p 成片是 $0.72,贵五倍。而 360p 虽然小到看不清一张脸,用来判断中间那一段却完全够。剪辑点在任何分辨率下都是剪辑点。形变在任何分辨率下都是形变。Google 还称这一档最多快 60%——这是发布博客的措辞,不是 API 参考里的数字。
这就让分镜工作便宜到可以反复迭代。每个节拍两张关键帧,整份镜头表按 4 秒、360p 跑一遍,当作动态分镜播出来——12 个节拍大约 $1.73。失败几乎总是帧对的问题,改一张分镜板就能解决,而不是把 prompt 重写五遍。只渲活下来的那几条。Veo 3.1 Fast start-end-frame-to-video 则完全没有草稿档。
duration 接受 4、6、8 或 10,以字符串传入。每一秒的价钱都一样,所以它看起来像个预算旋钮。它其实是个导演旋钮。
同样两帧,跑 4 秒和跑 10 秒是两个不同的镜头。4 秒逼着它赶路——摄影机必须下决心,没多少余地去发明。10 秒得被填满,而模型会自己找填充物:一次漂移、一个停顿、第二个动作。这些被发明出来的小动作,是这里最不可预测的输出。
请让长度匹配距离:两个相差 30 度的产品角度,硬拉到 10 秒,买到的是一次爬行加一段死气。10 秒是 Omni 的天花板,也是一处实打实的优势——Veo 到 8 秒就停了。
生成一把 key,留在服务端,把 job 提交出去。prompt、start_frame_url 和 end_frame_url 是必填的,而且两张图都由我们去取,所以每个 URL 都必须能响应一个未鉴权的 request。
curl -X POST https://api.e2x.ai/v1/jobs/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "google/omni-1.1-flash/start-end-frame-to-video",
"input": {
"prompt": "蒸汽渐起,摄影机绕着意式咖啡机向右划弧。磨豆机的嗡鸣,咖啡馆的人声。",
"start_frame_url": "https://example.com/07a-left.jpg",
"end_frame_url": "https://example.com/07b-right.jpg",
"duration": "6",
"resolution": "360p"
}
}'
去 poll 那个 job id,或者传一个 webhookUrl:
const headers = {
Authorization: `Bearer ${process.env.E2X_API_KEY}`,
"Content-Type": "application/json",
};
const { data } = await fetch("https://api.e2x.ai/v1/jobs/submit", {
method: "POST",
headers,
body: JSON.stringify({
model: "google/omni-1.1-flash/start-end-frame-to-video",
input: {
prompt: "从天台栏杆缓慢摇臂下降到庭院的桌子。一个连续的运动。",
start_frame_url: "https://example.com/12a-roof.jpg",
end_frame_url: "https://example.com/12b-courtyard.jpg",
duration: "10",
resolution: "720p",
},
}),
}).then((r) => r.json());
let url = null;
while (!url) {
const job = await fetch(`https://api.e2x.ai/v1/jobs/${data.jobId}`, { headers })
.then((r) => r.json());
if (job.data.status === "completed") url = job.data.outputs[0].url;
else if (["failed", "cancelled"].includes(job.data.status))
throw new Error(job.data.error?.message ?? job.data.status);
else await new Promise((r) => setTimeout(r, 5000));
}
状态依次是 pending、processing、completed,或者落到 failed/cancelled。有两个 schema 陷阱:duration 和 resolution 是字符串;字段名是 start_frame_url 和 end_frame_url,不是别处用的那个单数 image_url。实时取值都在机器可读规格里。
同样的活儿,Veo 3.1 Fast 只要九分之一的钱:
| Endpoint | 8 秒,720p | 什么时候选它 |
|---|---|---|
| Veo 3.1 Fast start-end-frame-to-video | $0.08 | 两帧接得上,而且 8 秒够用 |
| Omni 1.1 Flash start-end-frame-to-video | $0.72 | 您需要 10 秒、4K,或者一轮草稿 |
| Omni 1.1 Flash image-to-video | $0.72 | 镜头只有一端是定死的 |
| Omni 1.1 Flash reference-to-video | $0.72 | 一个主体要跨很多镜头保持是它自己 |
| Omni 1.1 Flash text-to-video | $0.72 | 压根没有源帧 |
价格与产品条款可能随时间变化;在做出采购决定前,请核对各家提供商的当前价格。Google 的 Batch 或 Flex 价格在调度、可用容量和处理条件上均有所不同,因此与标准的按需 API request 并不直接等价,已从本对比中排除。这是一次限定范围的对比,并非声称 E2X 在任何配置下都是全球最便宜的选择。
请从 Veo 起步。等到它那道 8 秒的墙挡了路、交付物是 4K,或者一轮草稿省下的比花掉的多时,再回来。其余的东西在 image-to-video 和 text-to-video 分类下,而整个模型目录就在一页里。
描述这段位移,不要描述景物——两端模型都已经看见了。点名把它们连起来的那个运动(「向右划弧」「摇臂下降」「变焦点到远处的窗」),然后说清楚它该是什么声音——音频就是从这同一行里写出来的。不要要求两帧都没有暗示过的事件。更多摄影机词汇在我们的 Omni prompt 指南里;英语是唯一被评测过的 prompt 语言。
这东西送到客户手上之前,有三件事要办。每一帧都带 SynthID,Google 那个隐形的来源标记,没有任何提供商能剥掉它。Google 的模型卡说得很直白:「在编辑全程保持完全一致、生成包含复杂运动的场景,或渲染完全准确的文字,仍然是一项挑战。」——而两帧之间的缺口越大,要的恰恰就是复杂运动。在欧洲经济区、瑞士和英国,您不得上传含有未成年人或某些可辨识人物的图像——这是对您输入端的限制。结果 URL 是临时的:请在完成回调里就把它们重新托管。
720p 输出我们每秒收 $0.09,所以 8 秒片段是 $0.72,10 秒的上限是 $0.90——是 $0.15 标价打 4 折的结果。分辨率会往上乘,于是 4 秒的 360p 草稿是 $0.1188,10 秒的 4K 成片是 $1.80。核查日期为 2026年8月28日。
同一个主体、同一套布光,以及一个在所要求的时间内物理上走得完的摄影机运动。同一场拍摄里相隔几分钟的两张静帧,几乎总是有效。在不同条件下拍的帧,会逼着模型在画面上把差异调和掉。
什么错都不会报。您会拿到一段用四种方式之一把缺口藏起来的片子:一次凭空的剪辑、一次穿过不可能几何的形变、一次跳光,或者人物从虚无里生出鬼影。这些的账单跟一次好渲染一模一样,这也正是那 $0.1188 的草稿能把自己赚回来的原因。
多数情况下先用 Veo 3.1 Fast——它也做首尾帧,每秒 $0.01 对我们的 $0.09,所以 8 秒是 $0.08 而不是 $0.72。Omni 在三个地方把这个差价赚回来:10 秒时长、4K 输出,以及 360p 测试档。
每次调用 3 到 10 秒。duration 枚举带着 4、6、8、10,全是字符串。10 是硬上限,再长就得由多个 job 拼起来。
必须。两张图都在服务端被取回,所以在 job 结束之前,每一张都得能响应未鉴权的 request。短命的签名 URL、私有存储桶、localhost 地址和 data URI 都会失败。
带——每一帧都打上 SynthID,Google 那个人眼察觉不到的来源信号,观众看不见,但可以用他们的工具验证出来。没有任何提供商能把它关掉。如果某份合同禁止带标签的 AI 素材,请先跟客户把这件事谈定。