prunaai
P-Video 2
Быстрая генерация видео из текста с длительностью 1–20 секунд, выводом 720p и 1080p, опциональным звуком и распространёнными соотношениями сторон.
≈15,00 ₽за видео
5 секунд720p
pruna-ai/p-video-2/text-to-videoДанные каталога получены .
Цена
- Генерация видео
- 15,00 ₽ за видеоПример расчёта: Начальное значение: -1, Черновой режим: Нет, Длительность: 5 секунд, Разрешение: 720p, Сохранить звук: Да, Соотношение сторон: Альбомная (16:9), текст до 100 символов. Точная цена появится в студии перед запуском.
Цена указана в рублях для выбранной операции и её параметров.
Перед оплачиваемым запросом создаётся резерв. Итоговый расход привязан к сохранённым параметрам и тарифу запроса. При неизвестном результате резерв удерживается до проверки; такой запрос не следует повторять с новым идентификатором.
О модели
Быстрая генерация видео из текста с длительностью 1–20 секунд, выводом 720p и 1080p, опциональным звуком и распространёнными соотношениями сторон.
Характеристики
- Тип модели
- Видео
- Вход модели
- Текст
Данные, которые модель принимает вместе с запросом.
- Выход модели
- Видео
Форматы результата, которые создаёт модель.
- Операции
- Генерация видео
- Возможности модели
- Видео по тексту
Настройки
По умолчаниюНет
Быстрый предварительный просмотрПо умолчаниюДа
Улучшить промпт перед генерациейПо умолчанию5 секунд
Длительность видео в секундахПо умолчанию720p
Разрешение выходного видеоПо умолчаниюАльбомная (16:9)
Соотношение сторон выходного видеоПо умолчаниюДа
Сохранить сгенерированное видео со звукомПо умолчанию-1
Управление воспроизводимостью (-1 для случайного значения)Примеры

Молодая женщина садится в последний городской автобус дождливой ночью и садится у окна, уставшая после долгого дня. На следующей остановке входит мужчина с мокрым букетом цветов и замирает, увидев её. Она тоже узнаёт его: это тот парень, которого она когда-то ждала много лет назад и так и не встретила. Автобус трогается, и сначала никто не знает, что сказать. Камера начинает снаружи у окна, покрытого дождевыми струями, затем скользит в тёплый салон автобуса, задерживаясь на их нерешительных выражениях, прежде чем перейти в мягкий общий план. Нежная романтическая драма, огни дождливого города, тихое эмоциональное напряжение.
Видео из текста | 5 с | 720p | Полный | Звук включён
На многолюдном футуристическом ночном рынке молодой человек входит в скрытую лавку, где воспоминания покупают и продают в виде светящихся стеклянных капсул. Он передаёт одну капсулу и смотрит, как лавочник проигрывает её внутри машины. Спроецированное воспоминание показывает его самого, танцующего с женщиной, которую он не помнит. Когда он спрашивает, кто она, лавочник пугается и говорит: «Ты уже продал её». Камера открывается хаосом яркого неонового рынка, затем становится интимной и неподвижной внутри лавки воспоминаний, медленно приближаясь к светящейся капсуле, пока правда осознаётся. Эмоциональный научно-фантастический нуар, мрачная неоновая цветовая палитра, кинематографическое повествование.
Видео из текста | 5 с | 720p | Полный | Звук включёнКонтрольные показатели
Для этой версии модели оценок пока нет.
Оценки относятся к этой версии модели и методике источника. Качество и скорость конкретного запроса они не гарантируют.
API-запрос
Пример API-запроса подготовлен для этой операции. Ключ храните в переменной окружения на своём сервере. REQUEST_ID: уникальный идентификатор запроса. При повторе сохраняйте его и тело запроса.
Ответ содержит задание. Проверяйте его по GET /v1/jobs/{id}. Перед отправкой получите стоимость через POST /v1/quotes и укажите допустимый лимит: как задать бюджет запроса.
import json
import os
from urllib.request import Request, HTTPRedirectHandler, build_opener
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
opener = build_opener(NoRedirect)
def post(url, payload):
request = Request(url, data=json.dumps(payload).encode("utf-8"), headers={
"Authorization": "Bearer " + os.environ["KVANTORA_API_KEY"],
"Content-Type": "application/json",
"Idempotency-Key": os.environ["REQUEST_ID"],
}, method="POST")
with opener.open(request, timeout=120) as response:
return json.load(response)
def get(url):
request = Request(url, headers={
"Authorization": "Bearer " + os.environ["KVANTORA_API_KEY"],
}, method="GET")
with opener.open(request, timeout=120) as response:
return json.load(response)
def format_rubles(value):
amount = int(value)
sign, absolute = ("-" if amount < 0 else ""), abs(amount)
if 0 < absolute < 10_000:
return sign + "<0,01 ₽"
cents = (absolute + 5_000) // 10_000
return f"{sign}{cents // 100},{cents % 100:02d} ₽"
quote = post("https://api.kvantora.ai/v1/quotes", {
"model": "pruna-ai/p-video-2/text-to-video",
"prompt": "Плавная заставка с геометрическими формами, без текста",
"settings": {
"seed": -1,
"draft": false,
"duration": "5",
"resolution": "720p",
"save_audio": true,
"aspect_ratio": "16:9",
"prompt_upsampling": true
},
"operation": "video_generation"
})
print("Стоимость:", format_rubles(quote["estimated_cost_microrub"]))
# Укажите допустимый бюджет вместо max_cost_microrub: 0.
payload = {
"model": "pruna-ai/p-video-2/text-to-video",
"prompt": "Плавная заставка с геометрическими формами, без текста",
"settings": {
"seed": -1,
"draft": false,
"duration": "5",
"resolution": "720p",
"save_audio": true,
"aspect_ratio": "16:9",
"prompt_upsampling": true
},
"max_cost_microrub": 0
}
job = post("https://api.kvantora.ai/v1/videos", payload)
print(get("https://api.kvantora.ai/v1/jobs" + "/" + job["id"]))








