Veo 3 — это современная модель Google для генерации высококачественных 8-секундных видео в разрешении 720p или 1080p с потрясающим реализмом и нативно сгенерированным аудио. Вы можете получить доступ к этой модели программно через Gemini API.
Veo 3.1 отлично справляется с широким спектром визуальных и кинематографических стилей и предлагает несколько новых возможностей:
- Продолжение видео: создавайте продолжение для видео, которые были ранее сгенерированы с помощью Veo
- Генерация с указанием кадров: создавайте видео, указывая первый и последний кадры
- Управление через изображения: используйте до трех референсных изображений для управления содержимым вашего сгенерированного видео
Выберите пример, чтобы увидеть, как сгенерировать видео с диалогом, кинематографическим реализмом или креативной анимацией.
# GEMINI API Base URL BASE_URL="https://api.proxyapi.ru/google/v1beta" # Отправить запрос на генерацию видео и сохранить имя операции в переменную operation_name=$(curl -s "${BASE_URL}/models/veo-3.1-generate-preview:predictLongRunning" \ -H "x-goog-api-key: <КЛЮЧ>" \ -H "Content-Type: application/json" \ -X "POST" \ -d '{ "instances": [{ "prompt": "Крупный план двух людей, смотрящих на загадочный рисунок на стене, мерцающий свет факела. Мужчина бормочет: \"Это должно быть оно. Это секретный код.\" Женщина смотрит на него и взволнованно шепчет: \"Что ты нашел?\"" } ] }' | jq -r .name) # Опрашивать статус операции, пока видео не будет готово while true; do # Получить полный JSON статуса и сохранить в переменную status_response=$(curl -s -H "x-goog-api-key: <КЛЮЧ>" "${BASE_URL}/${operation_name}") # Проверить поле "done" из JSON, сохраненного в переменной is_done=$(echo "${status_response}" | jq .done) if [ "${is_done}" = "true" ]; then # Извлечь URI для загрузки из финального ответа video_uri=$(echo "${status_response}" | jq -r '.response.generateVideoResponse.generatedSamples[0].video.uri') echo "Загрузка видео из: ${video_uri}" # Загрузить видео, используя URI и API ключ, следуя перенаправлениям curl -L -o dialogue_example.mp4 -H "x-goog-api-key: <КЛЮЧ>" "${video_uri}" break fi # Ожидать 10 секунд перед следующей проверкой sleep 10 done
Следующий код демонстрирует генерацию изображения с помощью Gemini 2.5 Flash Image, а затем использование этого изображения в качестве начального кадра для генерации видео с Veo 3.1.
import time from google import genai client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) prompt = "Панорамный широкий кадр спящего на солнце котенка калико" # Шаг 1: Сгенерировать изображение с Gemini 2.5 Flash Image image = client.models.generate_content( model="gemini-2.5-flash-image", contents=prompt, config={"response_modalities":['IMAGE']} ) # Шаг 2: Сгенерировать видео с Veo 3.1, используя изображение operation = client.models.generate_videos( model="veo-3.1-generate-preview", prompt=prompt, image=image.parts[0].as_image(), ) # Опрашивать статус операции, пока видео не будет готово while not operation.done: print("Ожидание завершения генерации видео...") time.sleep(10) operation = client.operations.get(operation) # Загрузить видео video = operation.response.generated_videos[0] client.files.download(file=video.video) video.video.save("veo3_with_image_input.mp4") print("Сгенерированное видео сохранено в veo3_with_image_input.mp4")
Примечание: Эта функция доступна только для моделей Veo 3.1
Veo 3.1 теперь принимает до 3 референсных изображений для управления содержимым вашего сгенерированного видео. Предоставьте изображения человека, персонажа или продукта, чтобы сохранить внешний вид объекта в выходном видео.
Например, использование этих трех изображений, сгенерированных с помощью Gemini 2.5 Flash Image, в качестве референсов с хорошо написанным промптом создает следующее видео.
import time from google import genai client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) prompt = """Видео открывается средним кадром на уровне глаз красивой женщины с темными волосами и теплыми карими глазами. Она носит великолепное высокомодное платье-фламинго со слоями розовых и фуксиевых перьев, дополненное причудливыми розовыми солнцезащитными очками в форме сердца. Она идет с безмятежной уверенностью по кристально чистой, мелкой бирюзовой воде залитой солнцем лагуны. Камера медленно отодвигается до средне-широкого кадра, открывая захватывающую сцену, когда длинный шлейф платья скользит и плавно плывет по поверхности воды позади нее. Кинематографическая, сказочная атмосфера усиливается яркими цветами платья на фоне спокойного, минималистичного пейзажа, запечатлевая момент чистой элегантности и высокой моды.""" dress_reference = types.VideoGenerationReferenceImage( image=dress_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image reference_type="asset" ) sunglasses_reference = types.VideoGenerationReferenceImage( image=glasses_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image reference_type="asset" ) woman_reference = types.VideoGenerationReferenceImage( image=woman_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image reference_type="asset" ) operation = client.models.generate_videos( model="veo-3.1-generate-preview", prompt=prompt, config=types.GenerateVideosConfig( reference_images=[dress_reference, glasses_reference, woman_reference], ), ) # Опрашивать статус операции, пока видео не будет готово while not operation.done: print("Ожидание завершения генерации видео...") time.sleep(10) operation = client.operations.get(operation) # Загрузить видео video = operation.response.generated_videos[0] client.files.download(file=video.video) video.video.save("veo3.1_with_reference_images.mp4") print("Сгенерированное видео сохранено в veo3.1_with_reference_images.mp4")
Примечание: Эта функция доступна только для моделей Veo 3.1
Veo 3.1 позволяет создавать видео с использованием интерполяции, указывая первый и последний кадры видео.
import time from google import genai client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) prompt = """Кинематографическое, жуткое видео. Призрачная женщина с длинными белыми волосами и развевающимся платьем мягко качается на веревочных качелях под массивным, корявым деревом в туманной, освещенной луной поляне. Туман сгущается и кружится вокруг нее, и она медленно исчезает, полностью растворяясь. Пустые качели остаются ритмично раскачиваться сами по себе в жуткой тишине.""" operation = client.models.generate_videos( model="veo-3.1-generate-preview", prompt=prompt, image=first_image, # Сгенерировано отдельно с Gemini 2.5 Flash Image config=types.GenerateVideosConfig( last_frame=last_image # Сгенерировано отдельно с Gemini 2.5 Flash Image ), ) # Опрашивать статус операции, пока видео не будет готово while not operation.done: print("Ожидание завершения генерации видео...") time.sleep(10) operation = client.operations.get(operation) # Загрузить видео video = operation.response.generated_videos[0] client.files.download(file=video.video) video.video.save("veo3.1_with_interpolation.mp4") print("Сгенерированное видео сохранено в veo3.1_with_interpolation.mp4")
Примечание: Эта функция доступна только для моделей Veo 3.1
Используйте Veo 3.1 для создания продолжения видео, которые вы ранее сгенерировали с помощью Veo, на 7 секунд и до 20 раз.
Ограничения входного видео:
- Только видео, сгенерированные Veo, длительностью до 141 секунды
- Gemini API поддерживает продолжение видео только для видео, сгенерированных Veo
- Видео должно быть из предыдущей генерации, например
operation.response.generated_videos[0].video - Ожидается, что входные видео имеют определенную длину, соотношение сторон и размеры:
- Соотношение сторон: 9:16 или 16:9
- Разрешение: 720p
- Длина видео: 141 секунда или меньше
Выходное видео с продолжением — это одно видео, объединяющее входное видео пользователя и сгенерированное продолжение, общей длительностью до 148 секунд.
Этот пример берет видео, сгенерированное Veo, показанное здесь с его оригинальным промптом, и создает для него продолжение, используя параметр video и новый промпт:
import time from google import genai client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) prompt = "Проследить за бабочкой в сад, когда она приземляется на оранжевый цветок оригами. Пушистый белый щенок подбегает и нежно трогает цветок." operation = client.models.generate_videos( model="veo-3.1-generate-preview", video=operation.response.generated_videos[0].video, # Это должно быть видео из предыдущей генерации prompt=prompt, config=types.GenerateVideosConfig( number_of_videos=1, resolution="720p" ), ) # Опрашивать статус операции, пока видео не будет готово while not operation.done: print("Ожидание завершения генерации видео...") time.sleep(10) operation = client.operations.get(operation) # Загрузить видео video = operation.response.generated_videos[0] client.files.download(file=video.video) video.video.save("veo3.1_extension.mp4") print("Сгенерированное видео сохранено в veo3.1_extension.mp4")
Генерация видео — это вычислительно интенсивная задача. Когда вы отправляете запрос в API, он запускает долгосрочное задание и немедленно возвращает объект operation. Затем вы должны опрашивать статус, пока видео не будет готово, что обозначается статусом done равным true.
Суть этого процесса — цикл опроса, который периодически проверяет статус задания.
import time from google import genai from google.genai import types client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) # После запуска задания вы получаете объект operation operation = client.models.generate_videos( model="veo-3.1-generate-preview", prompt="Кинематографический кадр величественного льва в саванне.", ) # Альтернативно, вы можете использовать operation.name для получения операции operation = types.GenerateVideosOperation(name=operation.name) # Этот цикл проверяет статус задания каждые 10 секунд while not operation.done: time.sleep(10) # Обновить объект operation для получения последнего статуса operation = client.operations.get(operation) # Когда готово, результат находится в operation.response # ... обработать и загрузить ваше видео ...
Это параметры, которые вы можете установить в вашем API запросе для управления процессом генерации видео.
| Параметр | Описание | Veo 3.1 & Veo 3.1 Fast | Veo 3 & Veo 3 Fast |
|---|---|---|---|
prompt | Текстовое описание для видео. Поддерживает аудио-подсказки. | string | string |
negativePrompt | Текст, описывающий, что не следует включать в видео. | string | string |
image | Начальное изображение для анимации. | Объект Image | Объект Image |
lastFrame | Финальное изображение для интерполяционного видео для перехода. Должно использоваться в комбинации с параметром image. | Объект Image | Объект Image |
referenceImages | До трех изображений для использования в качестве референсов стиля и содержимого. | Объект VideoGenerationReferenceImage (только Veo 3.1) | н/д |
video | Видео для использования при создании продолжения. | Объект Video | н/д |
aspectRatio | Соотношение сторон видео. | "16:9" (по умолчанию, 720p & 1080p), "9:16" (720p & 1080p) | "16:9" (по умолчанию, 720p & 1080p), "9:16" (720p & 1080p) |
resolution | Разрешение видео. | "720p" (по умолчанию), "1080p" (поддерживает только длительность 8с), "720p" только для продолжения | "720p" (по умолчанию), "1080p" (только 16:9) |
durationSeconds | Длина сгенерированного видео. | "4", "6", "8". Должно быть "8" при использовании продолжения или интерполяции (поддерживает 16:9 и 9:16), и при использовании referenceImages (поддерживает только 16:9) | "4", "6", "8" |
personGeneration | Контролирует генерацию людей. (См. раздел Ограничения для региональных ограничений) | Text-to-video & Продолжение: только "allow_all" Image-to-video, Interpolation & Reference images: только "allow_adult" | Text-to-video: только "allow_all" Image-to-video: только "allow_adult" |
Обратите внимание, что параметр seed также доступен для моделей Veo 3. Он не гарантирует детерминизм, но немного улучшает его.
Вы можете настроить вашу генерацию видео, установив параметры в вашем запросе. Например, вы можете указать negativePrompt для управления моделью.
import time from google import genai from google.genai import types client = genai.Client( api_key="<КЛЮЧ>", http_options={"base_url": "https://api.proxyapi.ru/google"} ) operation = client.models.generate_videos( model="veo-3.1-generate-preview", prompt="Кинематографический кадр величественного льва в саванне.", config=types.GenerateVideosConfig(negative_prompt="мультфильм, рисунок, низкое качество"), ) # Опрашивать статус операции, пока видео не будет готово while not operation.done: print("Ожидание завершения генерации видео...") time.sleep(10) operation = client.operations.get(operation) # Загрузить сгенерированное видео generated_video = operation.response.generated_videos[0] client.files.download(file=generated_video.video) generated_video.video.save("parameters_example.mp4") print("Сгенерированное видео сохранено в parameters_example.mp4")
- Задержка запроса: Мин: 11 секунд; Макс: 6 минут (в часы пик)
- Региональные ограничения: В регионах EU, UK, CH, MENA для
personGenerationдоступно только значениеallow_adult - Хранение видео: Сгенерированные видео хранятся на сервере 2 дня, после чего они удаляются. Чтобы сохранить локальную копию, вы должны загрузить ваше видео в течение 2 дней после генерации. Видео с продолжением рассматриваются как новые сгенерированные видео
- Водяные знаки: Видео, созданные Veo, помечаются водяными знаками с использованием SynthID, инструмента Google для нанесения водяных знаков и идентификации контента, сгенерированного ИИ. Видео могут быть проверены с использованием платформы проверки SynthID
- Безопасность: Сгенерированные видео проходят через фильтры безопасности и процессы проверки запоминания, которые помогают снизить риски конфиденциальности, авторских прав и предвзятости
- Ошибка аудио: Veo 3.1 иногда блокирует генерацию видео из-за фильтров безопасности или других проблем обработки аудио. С вас не будет взиматься плата, если ваше видео было заблокировано от генерации