Из текста или из фото: как генерировать видео
Text-to-video или image-to-video: что даёт стартовый кадр, какие настройки он взамен забирает и почему одна модель в двух режимах стоит на разных местах.

Стартовый кадр — единственный способ узнать заранее, как будет выглядеть начало ролика. Всё остальное в генерации остаётся вероятностью. Отсюда рабочее правило: есть картинка, отдавайте её модели; нет — генерируйте из текста.
Что каждый режим забирает взамен и почему одна модель в двух режимах стоит на разных местах — по документации вендоров на 15 августа 2026 года.
Что именно закрепляет стартовый кадр
Из текста модель придумывает всё: композицию, свет, лицо, цвет упаковки, движение камеры. Из картинки — только движение.
Google описывает это без метафор: Veo «uses the input image as the initial frame» [1]. У OpenAI формулировка почти дословно та же: входное изображение «acts as the first frame of your video» [2].
Отсюда простое следствие. Фирменный цвет, форма флакона, лицо героя — либо вы закрепляете их кадром, либо спорите о них с промптом на каждой попытке. Второй путь работает, но стоит больше попыток.
Стартовый кадр отбирает часть настроек
Тут прячется неочевидное. Дали картинку — потеряли управление геометрией кадра.
У Kling 3.0 Pro это записано в разделе ограничений дословно: «Aspect ratio is
inferred from the start image. The aspect_ratio field in the UI is ignored by the
model» [3]. Поле в интерфейсе есть, модель его не читает.
У Seedance 2.0 то же самое сказано мягче: aspect_ratio по умолчанию auto, то
есть «inferred from image» [4]. У OpenAI требование жёстче всех: «The image must
match the target video’s resolution» [2] — несовпадение просто не примут.
Практический вывод скучный и полезный: соотношение сторон ролика решается не при генерации видео, а раньше — когда вы делаете стартовый кадр. Вертикальный ролик из горизонтальной фотографии не получится ни при каком промпте.
Одна модель, два разных места в рейтинге
Artificial Analysis ведёт два отдельных рейтинга видеомоделей — на слепых попарных голосах пользователей. Ниже — как выглядят одни и те же модели в обоих, по состоянию на 15 августа 2026 года: text-to-video [5] и image-to-video [6].
| Модель | Из текста | Из картинки |
|---|---|---|
| Seedance 2.0 720p | 3-е, Elo 1222 | 1-е, Elo 1198 |
| Gemini Omni Flash | 1-е, Elo 1241 | 3-е, Elo 1191 |
| MiniMax H3 | 2-е, Elo 1238 | 2-е, Elo 1192 |
| HappyHorse 1.1 | 5-е, Elo 1146 | 5-е, Elo 1112 |
| Kling 3.0 1080p Pro | 8-е, Elo 1109 | 12-е, Elo 1077 |
| Veo 3.1 | 11-е, Elo 1091 | 10-е, Elo 1086 |
| Grok Imagine Video | 18-е, Elo 1065 | 11-е, Elo 1079 |
| Wan 2.6 | 20-е, Elo 1025 | 28-е, Elo 895 |
Самый резкий случай — Wan 2.6: двадцатое место из текста и двадцать восьмое из картинки, притом что Elo падает на 130 пунктов. Grok Imagine Video двигается в обратную сторону — с восемнадцатого на одиннадцатое.
Две оговорки, без которых таблицей пользоваться нельзя. Первая: доверительный интервал по строкам от ±6 до ±9, так что разрыв в два-три пункта — шум. Kling 3.0 Omni в вариантах 720p и 1080p вообще стоят на одинаковых 1089.
Вторая: Elo двух таблиц считаются по разным наборам сравнений. Сопоставлять между таблицами можно порядок, но не абсолютные числа.
И то, что в таблицу не помещается: модель может просто не иметь режима. Wan 2.7-260612 стоит четвёртым в text-to-video, а в image-to-video его нет вовсе. Отдельная модель Grok Imagine 1.5 — наоборот, четвёртая из картинки и в рейтинге из текста не значится.
Первый и последний кадр — отдельный разговор
Кроме «дать стартовый кадр» есть режим «дать два кадра»: начальный и конечный. Модель придумывает переход между ними.
- Veo 3.1. Параметр
lastFrame, и он «must be used in combination with the image parameter» — без первого кадра последний не принимается [1]. - Seedance 2.0. Поле
end_image_url, описание — «The video transitions from start to end image» [4]. - Kling 3.0. Тоже
end_image_url, длительность 3–15 секунд [3].
Задачи под этот режим узкие, зато решаются они только им: зацикленный ролик, где последний кадр равен первому; превращение одного объекта в другой; склейка двух кадров раскадровки без монтажа.
Заодно о том, чему верить, когда документ спорит сам с собой. На странице Veo раздел про первый и последний кадры открывается примечанием «This feature is available for Veo 3.1 models only».
Двумя экранами ниже, в таблице параметров, строка lastFrame заполнена значением
Image object во всех четырёх колонках — включая Veo 3 и Veo 2.
Какой ответ верный, из страницы не следует. Раздражает это сильнее, чем если бы ответа не было вовсе: пробел виден сразу, а противоречие — только если дочитать до таблицы.
Что запрещено именно в режиме с картинкой
У режимов разные ограничения — вплоть до того, кого разрешено показывать в кадре.
У Veo параметр personGeneration в text-to-video принимает только allow_all, а в
image-to-video, интерполяции и работе с референсами — только allow_adult [1].
Читается это так: ролик с ребёнком в кадре Veo сделает из текста и не сделает из
фотографии.
Асимметрия держится и в старых версиях. У Veo 2 из картинки доступны allow_adult
и dont_allow, а allow_all нет.
Длительность тоже связана с режимом. Обычно у Veo 3.1 на выбор 4, 6 или 8 секунд, но при работе с референсными изображениями остаётся только «8».
А продление готового ролика устроено ровно наоборот — оно работает из текста. У Veo 3.1 продление добавляет по 7 секунд за раз, до 20 раз, итог до 148 секунд. Только в 720p и только к видео, сгенерированному самим Veo.
И только два дня: «Videos are stored for 2 days», дальше файл с сервера убирают.
Третий вход, про который забывают
Разделение на два режима устарело: у Google, ByteDance и Kling есть третий.
Seedance зовёт его reference-to-video: до 9 изображений, 3 видеофрагментов и 3
аудиофайлов в одной генерации, с адресацией прямо в промпте через [Image1],
[Video1] [7].
У Veo это referenceImages — до трёх изображений «of a single person, character, or
product», и вендор обещает, что «Veo preserves the subject’s appearance in the output
video». У Kling — массив elements с обращением @Element1.
Именно этого обычно хотят, когда говорят «пусть герой будет тот же». Стартовый кадр удерживает первый момент ролика, референс — внешность персонажа на всём протяжении. Разные инструменты, и подменять один другим бессмысленно.
Когда из текста — единственный вариант
Кадра не существует, а снимать дороже, чем генерировать. Тут выбора нет.
Камера уходит от стартового кадра. Первый кадр держит начало, а на длинном проезде через две секунды от него не остаётся ничего — и вы получаете ту же лотерею, только заплатив за подготовку картинки.
Нужны люди без ограничения по возрасту у Veo — режим с картинкой их не отдаст.
Нужно перебрать десяток композиций. Секунда в обоих режимах стоит одинаково: у Kling 3.0 Pro на fal.ai это $0.112 без звука и $0.168 со звуком независимо от входа. Цена генерации тут ни при чём. Дело в том, что под image-to-video сначала придётся сделать десять картинок.
Порядок выбора
- Картинка уже есть — отдавайте её. Это единственный способ получить предсказуемый первый кадр.
- Соотношение сторон решайте на этапе кадра, а не промпта: у Kling поле
aspect_ratioв этом режиме игнорируется, у Seedance выводится из картинки. - Один и тот же герой в серии роликов — берите режим с референсами, а не стартовый кадр.
- Переход из состояния А в состояние Б — первый и последний кадр, где он есть.
- Промпт пишите по-английски. У Veo прямо сказано: полностью поддержан английский, остальные языки «have not been evaluated». Заготовки под оба режима есть в нашей библиотеке промптов.
- Скачивайте результат сразу. У Veo ролики живут на сервере 2 дня.
Оговорка про интерес: это блог RED AI, сервиса доступа к нейросетям за рубли.
Проверяемое — в коде: у Veo режим переключает поле generationType с тремя
значениями, у Seedance последний кадр уходит провайдеру как
last_frame_url, а в формах HappyHorse и Kling 2.6 поля соотношения
сторон в режиме с картинкой нет — ровно по вендорской причине.
Чего этот разбор не покрывает
Собственных прогонов здесь нет. Всё сказанное — то, что вендоры написали о своих моделях, плюс два публичных рейтинга. Утверждение «из картинки лицо держится лучше» проверялось бы замерами, а не документацией, и такого замера у меня нет.
Официальную спецификацию Kling подтвердить не удалось. Портал разработчика Kling — приложение на JavaScript, в исходном коде страницы текста нет. Параметры взяты с карточки модели на fal.ai, это площадка-посредник, а не сам вендор. Расхождение возможно.
Даты редакции есть не у всех источников. У документации Google дата стоит внизу страницы (30.07.2026), у карточек fal.ai её нет вовсе — там указано только состояние на день просмотра.
Runway и Grok остались за рамками. Их документация отдаёт 403 и на обычный запрос, и на запрос с браузерным заголовком. По пересказам утверждать не буду.
Рейтинги — это голоса, а не измерение. Artificial Analysis описывает методику как «blind user votes»: люди выбирают, что им больше нравится. К вашей задаче их вкус может не иметь отношения.
Sora 2 в разбор не вошла намеренно. OpenAI сама предупреждает на странице руководства, что модели и Videos API отключаются 24 сентября 2026 года, — строить на них выбор сейчас смысла нет.
Источники ниже открывались 15 августа 2026 года. Условия и параметры моделей меняются без объявления, так что перед решением стоит открыть первоисточник заново. Черновик готовился с языковой моделью, цитаты сверялись по исходному коду страниц.
Источники
- Google, документация Gemini API, раздел Veo (редакция от 30.07.2026).
- OpenAI, руководство Videos API (video generation guide).
- fal.ai, карточка модели Kling 3.0 Pro (image-to-video).
- fal.ai, карточка модели Seedance 2.0 (image-to-video).
- Artificial Analysis, рейтинг видеомоделей text-to-video.
- Artificial Analysis, рейтинг видеомоделей image-to-video.
- fal.ai, карточка модели Seedance 2.0 (text-to-video).