Saltar al contenido principal
Con la expansión de la aplicación de la IA, varios programas de IA se han vuelto gradualmente comunes. La IA ha penetrado cada vez más en todos los aspectos de la vida laboral y cotidiana de las personas. Además, los sectores involucrados en la IA son cada vez más numerosos, desde la escritura inicial, hasta la educación médica, y ahora, hasta los videos. Luma es una plataforma profesional de generación de videos de alta calidad, donde los usuarios solo necesitan subir material y pueden generar automáticamente videos de alta calidad según diferentes estilos y efectos. Este generador de videos de IA ha sido desarrollado por miembros de un equipo de una conocida empresa tecnológica, con el objetivo de permitir que todos puedan crear videos excepcionales sin herramientas de edición complejas. Sin embargo, Luma no proporciona oficialmente una API, AceDataCloud ofrece un conjunto de API de Luma, simulando la integración con la oficial de Suno, lo que permite generar videos deseados de manera rápida y conveniente.

Solicitud y uso

Para usar la API de Luma Videos, primero puedes ir a la página de Luma Videos Generation API y hacer clic en el botón “Acquire” para obtener las credenciales necesarias para la solicitud: Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión que te invita a registrarte e iniciar sesión. Después de iniciar sesión o registrarte, serás devuelto automáticamente a la página actual. En la primera solicitud, se otorgará un límite gratuito que permite usar la API de forma gratuita.

Uso básico

Para generar un video, puedes ingresar cualquier texto, por ejemplo, si quiero generar un video sobre astronautas viajando entre el espacio y un volcán, puedo ingresar Astronauts shuttle from space to volcano, como se muestra en la imagen:

El código generado es el siguiente:

Parámetros de solicitud principales:
  • prompt: la palabra clave para generar el video.
  • aspect_ratio: la relación de aspecto del video, por defecto 16:9.
  • end_image_url: opcional, especifica el fotograma final.
  • enhancement: opcional, interruptor de mejora de claridad.
  • loop: si se debe generar un video en bucle, por defecto false.
  • timeout: opcional, número de segundos de tiempo de espera.
  • callback_url: dirección de callback asíncrona.
Puedes hacer clic en el botón “Try” para probar la API directamente, espera 1-2 minutos, y el resultado es el siguiente:
{
  "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
}
Como se puede ver, en este momento hemos obtenido la información relacionada con este video, incluyendo el ID del video, el enlace del video, la miniatura del video, etc. La descripción de los campos es la siguiente:
  • success: si la generación fue exitosa, si es así, será true, de lo contrario, será false
  • task_id: el ID único de la tarea de generación de video
  • video_id: el ID único del video generado por esta tarea
  • prompt: la palabra clave de la tarea de generación de video
  • video_url: el enlace del video resultante de la tarea de generación de video
  • video_height: la altura de la imagen de la miniatura del video generado
  • video_width: el ancho de la imagen de la miniatura del video generado
  • state: el estado de la tarea de generación de video, si la tarea está completa, será completed.
  • thumbnail_url: el enlace de la imagen de la miniatura del video generado
  • thumbnail_width: el ancho de la imagen de la miniatura del video generado
  • thumbnail_height: la altura de la imagen de la miniatura del video generado

Generación de fotogramas iniciales y finales personalizados

Si deseas generar un video a través de fotogramas iniciales y finales personalizados, puedes ingresar los enlaces de las imágenes de los fotogramas: En este momento, el campo start_image_url del fotograma inicial del video puede recibir la siguiente imagen como fotograma inicial del video: Fotograma inicial A continuación, debemos personalizar la generación del video según los fotogramas iniciales y finales, y las palabras clave, especificando el siguiente contenido:
  • action: la acción de la tarea de generación de video, generalmente es generación normal generate y generación extendida extend, por defecto es generate.
  • start_image_url: especifica el fotograma inicial del video a generar.
  • end_image_url: especifica el fotograma final del video a generar.
  • prompt: el contenido de la palabra clave para generar el video.
Ejemplo de llenado a continuación:

Una vez completado, se generó automáticamente el siguiente código:

Código correspondiente:
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)
El resultado obtenido es el siguiente:
{
  "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
}
El resultado final es similar al anterior, el fotograma inicial del video generado incluye la imagen que proporcionamos, y también se pueden proporcionar enlaces de imágenes para los fotogramas inicial y final para generar el video, solo necesitas agregar un enlace de imagen para el fotograma final en la base anterior, la información de la imagen del fotograma final es la siguiente: Fotograma final Ejemplo de llenado a continuación:

Finalmente, se obtiene el siguiente resultado:
{
  "success": true,
  "task_id": "d1cb723a-e554-4775-94a4-bb6ae8c7ea67",
  "video_id": "6bebd0d2-f793-472e-9326-38528a9273bb",
  "prompt": "Los astronautas se trasladan del espacio al volcán",
  "video_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completado",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
El resultado es similar al anterior, el video generado también contiene imágenes del primer y último fotograma, completando así la personalización de los fotogramas inicial y final para generar el video.

Función de extensión de video

Si deseas continuar generando el video creado, puedes establecer el parámetro action en extend, e ingresar el ID del video o el enlace del video que deseas continuar generando. El ID del video y el enlace del video se obtienen según el uso básico, como se muestra en la imagen a continuación:

En este momento, puedes ver que el ID del video es:
"video_id": "0105c090-03a5-425a-8026-523341cd575b",
"video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4"
Nota: aquí el video_id y video_url del video son el ID y el enlace del video generado. Si no sabes cómo generar un video, puedes consultar el uso básico mencionado anteriormente.
Para continuar generando el video, debes subir el enlace del video o el ID del video. A continuación, se muestra cómo usar el ID del video para realizar la extensión. Luego, debemos completar las palabras clave para personalizar la generación del video, especificando el siguiente contenido:
  • action: en este caso, la acción de extensión del video, que debe ser extend.
  • prompt: las palabras clave para extender el video.
  • video_url: el enlace del video que necesita ser extendido.
  • video_id: el ID único del video que necesita ser extendido.
  • end_image_url: el enlace de la imagen del fotograma final que se puede especificar, es un parámetro opcional.
El ejemplo de llenado es el siguiente:

Una vez completado, se generó automáticamente el siguiente código:

El código correspondiente en 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": "Los astronautas se trasladan del espacio al volcán"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Al hacer clic en ejecutar, se puede ver que se obtiene un resultado como el siguiente:
{
  "success": true,
  "task_id": "c6e529d1-a06d-4c12-91b2-c855135131c3",
  "video_id": "36908c49-c2bb-4a11-bd5a-b8512b004818",
  "prompt": "Los astronautas se trasladan del espacio al volcán",
  "video_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completado",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Se puede ver que este video se ha extendido sobre la base del video que necesita ser extendido, el contenido del resultado es consistente con el anterior, lo que también logra la función de continuación de la generación de la canción. Por supuesto, también podemos especificar el enlace del video para realizar la extensión, llenando la siguiente información:

Después de ejecutar, se obtuvo el siguiente resultado:
{
  "success": true,
  "task_id": "1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca",
  "video_id": "f0187dc2-339f-4a08-a435-c3a3341f620a",
  "prompt": "Los astronautas se trasladan del espacio al volcán",
  "video_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completado",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Según el resultado, se puede ver que también se puede lograr la función de extensión del video según el enlace del video. Finalmente, también podemos especificar una imagen de fotograma final en el video extendido para realizar la extensión. A continuación se muestra la información de la imagen del fotograma final: Fotograma final A continuación, se agrega la información de la imagen del fotograma final sobre la base anterior, como se muestra a continuación:

Al hacer clic en ejecutar, se obtiene la siguiente información:
{
  "success": true,
  "task_id": "b816b2b4-c345-4673-9e19-83e91f91b643",
  "video_id": "c5400053-63e6-4206-8082-31cf9dd1e7ed",
  "prompt": "Los astronautas se trasladan del espacio al volcán",
  "video_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completado",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Se puede ver que, sobre la base del video extendido anterior, también se puede especificar una imagen de fotograma final para realizar la extensión.

Callback asíncrono

Dado que el tiempo de generación de videos de Luma es relativamente largo, aproximadamente de 1 a 2 minutos, si la API no responde durante mucho tiempo, la solicitud HTTP mantendrá la conexión, lo que provocará un consumo adicional de recursos del sistema. Por lo tanto, esta API también ofrece soporte para callbacks asíncronos. 整体流程是:客户端发起请求的时候,额外指定一个 callback_url 字段,客户端发起 API 请求之后,API 会立马返回一个结果,包含一个 task_id 的字段信息,代表当前的任务 ID。当任务完成之后,生成音乐的结果会通过 POST JSON 的形式发送到客户端指定的 callback_url,其中也包括了 task_id 字段,这样任务结果就可以通过 ID 关联起来了。 下面我们通过示例来了解下具体怎样操作。 首先,Webhook 回调是一个可以接收 HTTP 请求的服务,开发者应该替换为自己搭建的 HTTP 服务器的 URL。此处为了方便演示,使用一个公开的 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": "Astronautas se trasladan del espacio al volcán",
    "video_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.mp4",
    "video_height": 752,
    "video_width": 1360,
    "state": "completado",
    "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.jpg",
    "thumbnail_width": 1360,
    "thumbnail_height": 752
}
可以看到结果中有一个 task_id 字段,其他的字段都和上文类似,通过该字段即可实现任务的关联。