Перейти к основному содержанию
С расширением применения ИИ различные программы на его основе постепенно становятся популярными. ИИ проникает во все аспекты жизни и работы людей. От первоначального написания текстов до медицины и образования, а теперь и до видео. Luma — это профессиональная платформа для генерации высококачественного видео, где пользователю достаточно загрузить материалы, чтобы автоматически создать высококачественное видео в соответствии с различными стилями и эффектами. Этот генератор видео на основе ИИ разработан командой из известных технологических компаний, цель которой — позволить каждому легко создавать отличные видео без сложных инструментов редактирования. Однако Luma официально не предоставляет API, AceDataCloud предлагает набор API Luma, который имитирует интеграцию с официальным Suno, что позволяет быстро и удобно генерировать нужные видео.

Запрос и использование

Чтобы использовать API Luma Videos, сначала перейдите на страницу Luma Videos Generation API и нажмите кнопку «Acquire», чтобы получить необходимые для запроса учетные данные: Если вы еще не вошли в систему или не зарегистрированы, вас автоматически перенаправят на страницу входа, пригласив зарегистрироваться и войти в систему. После входа или регистрации вы автоматически вернетесь на текущую страницу. При первом запросе предоставляется бесплатный лимит, который можно использовать для бесплатного доступа к этому API.

Основное использование

Чтобы сгенерировать видео, вы можете ввести любой текст, например, если я хочу создать видео о том, как астронавты перемещаются между космосом и вулканом, я могу ввести Astronauts shuttle from space to volcano, как показано на рисунке:

Сгенерированный код выглядит следующим образом:

Основные параметры запроса:
  • prompt: подсказка для генерации видео.
  • aspect_ratio: соотношение сторон видео, по умолчанию 16:9.
  • end_image_url: необязательный, указывает конечный кадр.
  • enhancement: необязательный, переключатель улучшения четкости.
  • loop: генерировать ли циклическое видео, по умолчанию false.
  • timeout: необязательный, время ожидания в секундах.
  • callback_url: адрес асинхронного обратного вызова.
Вы можете нажать кнопку «Try», чтобы протестировать API, подождите 1-2 минуты, и результат будет следующим:
{
  "success": true,
  "task_id": "e4018a99-1522-4f24-9330-62c2a9b50b59",
  "video_id": "155838f8-7f1e-44d8-b387-192f3b4b509d",
  "prompt": "Astronauts shuttle from space to volcano",
  "video_url": "https://storage.cdn-luma.com/dream_machine/af94e7ca-da35-4b5f-a636-2d7254184d0d/watermarked_video0585de3737db946e5a0ac895384ecd180.mp4",
  "video_height": 752,
  "video_width": 1360,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/e4018a99-1522-4f24-9330-62c2a9b50b59.jpg",
  "thumbnail_width": 1360,
  "thumbnail_height": 752
}
Как видно, мы получили информацию о видео, включая ID видео, ссылку на видео, обложку видео и другие данные. Описание полей:
  • success: успешность генерации, если успешно, то true, иначе false
  • task_id: уникальный ID задачи генерации видео
  • video_id: уникальный ID видео, созданного в результате задачи
  • prompt: ключевые слова задачи генерации видео
  • video_url: ссылка на результат видео задачи генерации
  • video_height: высота изображения обложки сгенерированного видео
  • video_width: ширина изображения обложки сгенерированного видео
  • state: статус задачи генерации видео, если задача завершена, то completed.
  • thumbnail_url: ссылка на изображение обложки сгенерированного видео
  • thumbnail_width: ширина изображения обложки сгенерированного видео
  • thumbnail_height: высота изображения обложки сгенерированного видео

Генерация пользовательских начальных и конечных кадров

Если вы хотите создать видео с пользовательскими начальным и конечным кадрами, вы можете ввести ссылки на изображения начального и конечного кадров: В этом случае поле start_image_url может принимать следующее изображение в качестве начального кадра видео: Начальный кадр Далее мы можем настроить генерацию видео на основе начального и конечного кадров, указав следующие параметры:
  • action: действие задачи генерации видео, обычно это обычная генерация generate и расширенная генерация extend, по умолчанию generate.
  • start_image_url: указывает начальный кадр для генерации видео.
  • end_image_url: указывает конечный кадр для генерации видео.
  • prompt: ключевые слова для генерации видео.
Пример заполнения:

После заполнения автоматически сгенерировался следующий код:

Соответствующий код:
import requests

url = "https://api.acedata.cloud/luma/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "start_image_url": "https://cdn.acedata.cloud/r9vsv9.png",
    "action": "generate",
    "prompt": "Astronauts shuttle from space to volcano"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Полученный результат будет следующим:
{
  "success": true,
  "task_id": "12a18694-fd4b-47e7-9c50-34f30862cff6",
  "video_id": "0105c090-03a5-425a-8026-523341cd575b",
  "prompt": "Astronauts shuttle from space to volcano",
  "video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completed",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
В конечном итоге полученный результат будет похож на предыдущий, сгенерированный начальный кадр видео будет содержать переданное изображение, конечно, также можно одновременно передать ссылки на изображения начального и конечного кадров для генерации видео, просто добавив еще одно изображение конечного кадра к вышеуказанному. Информация о конечном кадре следующая: Конечный кадр Пример заполнения:

В конечном итоге получаем следующий результат:
{
  "success": true,
  "task_id": "d1cb723a-e554-4775-94a4-bb6ae8c7ea67",
  "video_id": "6bebd0d2-f793-472e-9326-38528a9273bb",
  "prompt": "Астронавты перемещаются из космоса к вулкану",
  "video_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "завершено",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Результат аналогичен вышеуказанному, сгенерированное видео одновременно содержит изображения первого и последнего кадров, что завершает настройку пользовательских первых и последних кадров для генерации видео.

Функция расширения видео

Если вы хотите продолжить генерацию сгенерированного видео, вы можете установить параметр action в значение extend, и ввести ID видео или ссылку на видео, которые можно получить на основе базового использования, как показано на следующем изображении:

В это время можно увидеть, что ID видео равен:
"video_id": "0105c090-03a5-425a-8026-523341cd575b",
"video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4"
Обратите внимание, что здесь video_id и video_url являются ID и ссылкой на сгенерированное видео. Если вы не знаете, как сгенерировать видео, вы можете обратиться к базовому использованию, описанному выше.
Чтобы продолжить генерацию видео, необходимо загрузить ссылку на видео или ID видео. Далее мы продемонстрируем использование ID видео для расширения, после чего необходимо заполнить ключевые слова для настройки генерации видео, чтобы указать следующее содержимое:
  • action: в это время действие расширения видео, здесь должно быть extend.
  • prompt: ключевые слова, которые необходимо расширить для видео.
  • video_url: ссылка на видео, которое необходимо расширить.
  • video_id: уникальный ID видео, которое необходимо расширить.
  • end_image_url: ссылка на изображение, которое можно указать для последнего кадра видео, необязательный параметр.
Пример заполнения приведен ниже:

После заполнения автоматически сгенерирован следующий код:

Соответствующий код на Python:
import requests

url = "https://api.acedata.cloud/luma/videos"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "action": "extend",
    "video_id": "0105c090-03a5-425a-8026-523341cd575b",
    "prompt": "Астронавты перемещаются из космоса к вулкану"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Нажав “Запустить”, можно увидеть результат, как показано ниже:
{
  "success": true,
  "task_id": "c6e529d1-a06d-4c12-91b2-c855135131c3",
  "video_id": "36908c49-c2bb-4a11-bd5a-b8512b004818",
  "prompt": "Астронавты перемещаются из космоса к вулкану",
  "video_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "завершено",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Можно увидеть, что это видео было расширено на основе видео, которое нужно было расширить, и результат совпадает с вышеуказанным, что реализует функцию продолжения генерации песни. Конечно, мы также можем указать ссылку на видео для расширенной генерации, заполнив следующую информацию:

После выполнения получен следующий результат:
{
  "success": true,
  "task_id": "1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca",
  "video_id": "f0187dc2-339f-4a08-a435-c3a3341f620a",
  "prompt": "Астронавты перемещаются из космоса к вулкану",
  "video_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "завершено",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Согласно результату, можно увидеть, что функция расширения видео также может быть реализована на основе ссылки на видео. Наконец, мы также можем указать изображение последнего кадра для расширения видео, ниже приведена информация о последнем кадре: Последний кадр Теперь добавим информацию о последнем кадре на основе вышеуказанного, конкретно это будет выглядеть следующим образом:

Нажав “Запустить”, получаем следующую информацию:
{
  "success": true,
  "task_id": "b816b2b4-c345-4673-9e19-83e91f91b643",
  "video_id": "c5400053-63e6-4206-8082-31cf9dd1e7ed",
  "prompt": "Астронавты перемещаются из космоса к вулкану",
  "video_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "завершено",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Можно увидеть, что на основе расширенного видео также можно указать изображение последнего кадра для расширения.

Асинхронный обратный вызов

Поскольку время генерации видео Luma относительно долгое, примерно 1-2 минуты, если API долго не отвечает, HTTP-запрос будет поддерживать соединение, что приведет к дополнительному потреблению системных ресурсов, поэтому этот API также предоставляет поддержку асинхронного обратного вызова. 整体流程是:клиент инициирует запрос, дополнительно указывая поле callback_url, после того как клиент инициирует API запрос, API немедленно возвращает результат, содержащий информацию о поле task_id, представляющем текущий ID задачи. Когда задача завершена, результат генерации музыки будет отправлен на указанный клиентом callback_url в формате POST JSON, который также включает поле task_id, таким образом, результаты задачи могут быть связаны по ID. Ниже мы рассмотрим пример, чтобы понять, как именно это работает. Во-первых, Webhook обратный вызов — это служба, которая может принимать HTTP запросы, разработчики должны заменить его на URL своего собственного HTTP сервера. Здесь для удобства демонстрации используется публичный пример сайта Webhook https://webhook.site/, открыв этот сайт, вы получите Webhook URL, как показано на изображении:

Скопируйте этот URL, и вы сможете использовать его в качестве Webhook, пример здесь — https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13. Далее мы можем установить поле callback_url на указанный Webhook URL, одновременно заполнив prompt, как показано на изображении:

Нажмите “Запустить”, и вы сразу получите результат, как показано ниже:
{
  "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6"
}
Подождите немного, и вы сможете наблюдать результат генерации песни на https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13, как показано на изображении: Содержимое следующее:
{
    "success": true,
    "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6",
    "video_id": "4d8013c3-5de0-41aa-966e-0b1a51d1c633",
    "prompt": "Astronauts shuttle from space to volcano",
    "video_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.mp4",
    "video_height": 752,
    "video_width": 1360,
    "state": "completed",
    "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.jpg",
    "thumbnail_width": 1360,
    "thumbnail_height": 752
}
Можно увидеть, что в результате есть поле task_id, остальные поля аналогичны вышеупомянутым, с помощью этого поля можно связать задачи.