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 — это gemini-omni-1.1-flash от Google, в GA с 27 августа 2026 года, модель семейства Gemini, а не Veo. Её capability на двух кадрах мы держим как google/omni-1.1-flash/start-end-frame-to-video и считаем по секундам вывода — $0.09 на 720p, это постоянные минус 40% от прайсовой ставки $0.15. Восьмисекундный ролик по умолчанию — $0.72.
Внутрь идут три поля: стартовый кадр, финальный кадр, prompt. Ваше первое изображение становится первым кадром, второе — последним, всё между ними придумывается. Это не запрос ролика, а запрос моста, а мост стоит ровно столько, сколько стоят два его берега.
Тоже новое: у прошлого поколения Omni Flash этого не было вовсе — самое наглядное подтверждение тезиса из нашего разбора релиза 1.1. Релиз про непрерывность, а не про качество.
Наши ставки, проверено 28 августа 2026 года:
| Длительность | 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 четырёхсекундный мост — это девяносто шесть кадров, два из которых дали вы. Остальные девяносто четыре — это утверждение о физике, высказанное независимо от того, верно оно или нет. Кадр — 16:9 или 9:16; закладывайте четыре минуты на job.
Пару решают три вопроса. Тот же объект? Не похожий — тот же. Тот же свет? Направление рисующего, цветовая температура, контраст. Могла ли камера физически проделать этот путь? Если вы не можете описать его фразой, которую выполнил бы оператор, модель тоже не сможет.
Когда ответ отрицательный, никакой ошибки не будет — модель замажет разрыв, и делает она это в четырёх формах:
Ролик, который нельзя использовать, стоит столько же, сколько пригодный.
По $0.0297 за секунду четырёхсекундный тест на 360p — это $0.1188; восьмисекундный финал на 720p — $0.72, в пять раз больше. И 360p, слишком мелкий, чтобы судить о лице, вполне годится, чтобы судить о середине. Склейка остаётся склейкой при любом разрешении. Морфинг остаётся морфингом. Google к тому же заявляет, что этот уровень работает до 60% быстрее — формулировка из блога о запуске, а не цифра из справочника по API.
Это делает работу по раскадровке достаточно дешёвой, чтобы её итерировать. По два ключевых кадра на бит, шот-лист прогнан по четыре секунды на 360p и собран как аниматик — двенадцать битов примерно за $1.73. Провалы почти всегда идут от пары кадров и лечатся перерисовкой одного борда, а не пятью переписываниями prompt. Рендерьте только выживших. У Veo 3.1 Fast start-end-frame-to-video чернового уровня нет вообще.
duration принимает 4, 6, 8 или 10 строкой. Каждая секунда стоит одинаково, поэтому поле читается как бюджетный регулятор. На деле оно режиссёрское.
Одни и те же два кадра на четырёх секундах и на десяти — это два разных кадра. Четыре заставляют пройти путь: камера идёт решительно, придумывать особо негде. Десять надо чем-то заполнить, и модель найдёт наполнитель сама: дрейф, задержанный бит, второй жест. Эта придуманная отсебятина — самый непредсказуемый вывод здесь.
Соотносите длину с расстоянием: два ракурса продукта, разведённые на тридцать градусов и растянутые до десяти секунд, покупают вам вялое ползание и мёртвый воздух. Десять — потолок Omni и реальное преимущество: Veo встаёт на восьми.
Выпустите ключ, держите его на сервере, отправьте job. Обязательны prompt, start_frame_url и end_frame_url, и оба изображения забираем мы, поэтому каждая ссылка должна отвечать на запрос без авторизации.
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"
}
}'
Опрашивайте 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 | Кадры соединяются и восьми секунд хватает |
| Omni 1.1 Flash start-end-frame-to-video | $0.72 | Нужны десять секунд, 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 не эквивалентны напрямую стандартному on-demand API request, поскольку планирование, доступность и условия обработки отличаются; поэтому они исключены из этого сравнения. Это ограниченное по охвату сравнение, а не утверждение, что E2X — самый дешёвый вариант в мире при любой конфигурации.
Начинайте с Veo. Возвращайтесь, когда её стена в восемь секунд встаёт поперёк дороги, когда сдавать надо 4K или когда черновой проход экономит больше, чем стоит. Остальное лежит в категории image-to-video и категории text-to-video, а весь каталог моделей — на одной странице.
Описывайте переход, а не декорации — оба конца модель и так видит. Назовите движение, которое их связывает («дуга вправо», «кран вниз», «перевод фокуса на дальнее окно»), а затем скажите, как это должно звучать: звук пишется с той же строки. Не просите событий, которых не подразумевает ни один из кадров. Больше операторской лексики — в нашем гайде по prompt для Omni; единственный оценённый язык prompt — английский.
Три вещи до того, как это уйдёт к клиенту. Каждый кадр несёт SynthID, невидимую метку происхождения от Google, и снять её не может ни один провайдер. Карточка модели Google говорит прямо, что «сохранение полной консистентности на протяжении всех правок, генерация сцен со сложным движением и отрисовка идеально точного текста остаются сложной задачей» — а сложное движение это ровно то, чего требует широкий разрыв между кадрами. В ЕЭЗ, Швейцарии и Великобритании нельзя загружать изображения с несовершеннолетними и с частью узнаваемых людей — ограничение на ваш вход. Ссылки на результат временные: перекладывайте файлы к себе в обработчике завершения.
Мы берём $0.09 за каждую секунду вывода 720p, так что восьмисекундный ролик — $0.72, а максимум в десять секунд — $0.90; это минус 40% от прайсовой ставки $0.15. Разрешение работает множителем: четырёхсекундный черновик на 360p выходит в $0.1188, а десятисекундный рендер в 4K — в $1.80. Проверено 28 августа 2026 года.
Тот же объект, та же схема света и движение камеры, которое физически успевает пройти путь за запрошенное время. Два кадра с одной съёмки, снятые с разницей в минуты, работают почти всегда. Кадры, снятые в разных условиях, заставляют модель разбираться с разницей прямо на экране.
Ошибки не будет. Вы получите ролик, который прячет разрыв одним из четырёх способов: придуманная склейка, морфинг сквозь невозможную геометрию, скачок света или фигуры, проявляющиеся из пустоты. Оплачивается это так же, как удачный рендер, — поэтому черновик за $0.1188 себя окупает.
В большинстве случаев сначала Veo 3.1 Fast: она делает стартовый и финальный кадр по $0.01 за секунду против наших $0.09, так что восемь секунд стоят $0.08, а не $0.72. Omni отрабатывает разрыв в трёх местах: длительность в десять секунд, вывод 4K и тестовый уровень 360p.
От трёх до десяти секунд на вызов. Enum duration несёт 4, 6, 8, 10, и всё это строки. Десять — жёсткий потолок, а всё, что длиннее, сшивается из нескольких job.
Да. Оба забираются на стороне сервера, поэтому каждый должен отвечать на запрос без авторизации, пока job не закончится. Короткоживущие подписанные ссылки, приватные бакеты, адреса на localhost и data URI не сработают.
Да — каждый кадр помечен SynthID, незаметным сигналом происхождения от Google: зрителям его не видно, а их инструментами он проверяется. Отключить его не может ни один провайдер. Если договор запрещает маркированные ИИ-материалы, решите это с клиентом заранее.