Saltar para o conteúdo principal
Com a ampliação do uso da IA, diversos programas de IA têm se tornado cada vez mais comuns. A IA tem se infiltrado em todos os aspectos da vida e do trabalho das pessoas. E os setores envolvidos com a IA estão se expandindo, desde a escrita inicial, passando pela educação médica, até agora, com vídeos. Luma é uma plataforma profissional de geração de vídeos de alta qualidade, onde os usuários podem simplesmente fazer o upload de materiais e gerar automaticamente vídeos de alta qualidade com base em diferentes estilos e efeitos. Este gerador de vídeo AI foi desenvolvido por membros de uma equipe de uma conhecida empresa de tecnologia, com o objetivo de permitir que todos possam facilmente criar vídeos impressionantes, sem a necessidade de ferramentas de edição complexas. No entanto, a Luma não fornece uma API oficial, e a AceDataCloud oferece um conjunto de APIs da Luma, simulando a integração com a oficial da Suno, permitindo gerar vídeos desejados de forma rápida e conveniente.

Solicitação e Uso

Para usar a API de Vídeos da Luma, primeiro você pode acessar a página Luma Videos Generation API e clicar no botão “Acquire” para obter as credenciais necessárias para a solicitação: Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, convidando-o a se registrar e fazer login. Após o registro e login, você será redirecionado de volta para a página atual. Na primeira solicitação, haverá um crédito gratuito disponível, permitindo o uso gratuito da API.

Uso Básico

Para gerar um vídeo, você pode inserir qualquer texto, por exemplo, se eu quiser gerar um vídeo sobre astronautas se deslocando entre o espaço e um vulcão, posso inserir Astronauts shuttle from space to volcano, como mostrado na imagem:

O código gerado é o seguinte:

Principais parâmetros de solicitação:
  • prompt: a palavra-chave para gerar o vídeo.
  • aspect_ratio: a proporção largura-altura do vídeo, padrão 16:9.
  • end_image_url: opcional, especifica o quadro final.
  • enhancement: opcional, interruptor de aumento de clareza.
  • loop: se deve gerar um vídeo em loop, padrão false.
  • timeout: opcional, número de segundos para timeout.
  • callback_url: endereço de callback assíncrono.
Você pode clicar no botão “Try” para testar a API diretamente, aguarde 1-2 minutos, e o resultado será o seguinte:
{
  "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
}
Podemos ver que agora temos as informações relacionadas a este vídeo, incluindo ID do vídeo, link do vídeo, capa do vídeo, entre outros. As descrições dos campos são as seguintes:
  • success: se a geração foi bem-sucedida, se sim, será true, caso contrário, false
  • task_id: ID único da tarefa de geração de vídeo
  • video_id: ID único do vídeo gerado pela tarefa de geração de vídeo
  • prompt: palavra-chave da tarefa de geração de vídeo
  • video_url: link do vídeo resultante da tarefa de geração de vídeo
  • video_height: altura da imagem da capa do vídeo gerado
  • video_width: largura da imagem da capa do vídeo gerado
  • state: estado da tarefa de geração de vídeo, se a tarefa estiver concluída, será completed.
  • thumbnail_url: link da imagem da capa do vídeo gerado
  • thumbnail_width: largura da imagem da capa do vídeo gerado
  • thumbnail_height: altura da imagem da capa do vídeo gerado

Geração de Quadros Personalizados

Se você deseja gerar um vídeo através de quadros personalizados, pode inserir os links das imagens dos quadros inicial e final: Neste caso, o campo start_image_url pode receber a seguinte imagem como o quadro inicial do vídeo: Quadro Inicial Em seguida, para personalizar a geração do vídeo com base nos quadros inicial e final, você pode especificar o seguinte conteúdo:
  • action: a ação da tarefa de geração de vídeo, geralmente é geração normal generate e geração expandida extend, padrão é generate.
  • start_image_url: especifica o quadro inicial do vídeo gerado.
  • end_image_url: especifica o quadro final do vídeo gerado.
  • prompt: conteúdo da palavra-chave para gerar o vídeo.
Um exemplo de preenchimento é o seguinte:

Após o preenchimento, o código gerado é o seguinte:

O código correspondente:
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)
O resultado obtido é o seguinte:
{
  "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
}
O resultado final é semelhante ao anterior, o quadro inicial do vídeo gerado contém a imagem que fornecemos. Claro, também é possível fornecer links de imagens para os quadros inicial e final para gerar o vídeo, basta adicionar uma imagem de quadro final ao que foi mencionado anteriormente, as informações da imagem do quadro final são as seguintes: Quadro Final Um exemplo de preenchimento é o seguinte:

O resultado final será o seguinte:
{
  "success": true,
  "task_id": "d1cb723a-e554-4775-94a4-bb6ae8c7ea67",
  "video_id": "6bebd0d2-f793-472e-9326-38528a9273bb",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Os resultados são semelhantes ao texto acima, o vídeo gerado contém simultaneamente a imagem do primeiro e do último quadro, completando assim a personalização do primeiro e do último quadro para gerar o vídeo.

Funcionalidade de Extensão de Vídeo

Se você deseja continuar gerando o vídeo criado, pode definir o parâmetro action como extend e inserir o ID do vídeo ou o link do vídeo que precisa ser continuado. O ID do vídeo e o link do vídeo podem ser obtidos com base no uso básico, conforme mostrado na imagem abaixo:

Neste momento, você pode ver que o ID do vídeo é:
"video_id": "0105c090-03a5-425a-8026-523341cd575b",
"video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4"
Nota: Aqui, o video_id e o video_url do vídeo são o ID e o link do vídeo gerado. Se você não souber como gerar um vídeo, pode consultar o uso básico mencionado acima.
Para continuar gerando o vídeo, é necessário enviar o link do vídeo ou o ID do vídeo. Abaixo, demonstramos como usar o ID do vídeo para fazer a extensão. Em seguida, devemos preencher as palavras-chave para personalizar a geração do vídeo, podendo especificar o seguinte conteúdo:
  • action: neste caso, a ação de extensão do vídeo, que deve ser extend.
  • prompt: as palavras-chave para a extensão do vídeo.
  • video_url: o link do vídeo que precisa ser estendido.
  • video_id: o ID único do vídeo que precisa ser estendido.
  • end_image_url: o link da imagem do último quadro que pode ser especificado, parâmetro opcional.
Um exemplo de preenchimento é mostrado abaixo:

Após o preenchimento, o código gerado automaticamente é o seguinte:

Código correspondente em 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": "Astronautas se deslocam do espaço para o vulcão"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Ao clicar em executar, você pode notar que um resultado é obtido, conforme abaixo:
{
  "success": true,
  "task_id": "c6e529d1-a06d-4c12-91b2-c855135131c3",
  "video_id": "36908c49-c2bb-4a11-bd5a-b8512b004818",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Pode-se observar que o vídeo foi estendido com base no vídeo que precisava ser ampliado, e o conteúdo do resultado é consistente com o texto acima, o que também realiza a função de continuação da geração da música. Claro, também podemos especificar o link do vídeo para realizar a extensão, preenchendo as informações a seguir:

Após a execução, obtemos o seguinte resultado:
{
  "success": true,
  "task_id": "1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca",
  "video_id": "f0187dc2-339f-4a08-a435-c3a3341f620a",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Com base no resultado, pode-se observar que a funcionalidade de extensão do vídeo também pode ser realizada com base no link do vídeo. Por fim, também podemos especificar uma imagem do último quadro no vídeo estendido para realizar a extensão. Abaixo estão as informações da imagem do último quadro: Último Quadro Em seguida, adicionamos as informações da imagem do último quadro com base no que foi mencionado acima, conforme mostrado abaixo:

Ao clicar em executar, obtemos as seguintes informações:
{
  "success": true,
  "task_id": "b816b2b4-c345-4673-9e19-83e91f91b643",
  "video_id": "c5400053-63e6-4206-8082-31cf9dd1e7ed",
  "prompt": "Astronautas se deslocam do espaço para o vulcão",
  "video_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completo",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Pode-se observar que, com base na extensão do vídeo mencionada acima, também é possível especificar uma imagem do último quadro para realizar a extensão.

Callback Assíncrono

Como o tempo para gerar vídeos no Luma é relativamente longo, cerca de 1 a 2 minutos, se a API não responder por um longo período, a solicitação HTTP manterá a conexão, resultando em um consumo adicional de recursos do sistema. Portanto, esta API também oferece suporte a callbacks assíncronos. 整体流程是:o cliente inicia a solicitação, especificando um campo adicional callback_url. Após o cliente fazer a solicitação da API, a API retornará imediatamente um resultado, contendo um campo de informação task_id, que representa o ID da tarefa atual. Quando a tarefa for concluída, o resultado da música será enviado ao callback_url especificado pelo cliente no formato POST JSON, que também incluirá o campo task_id, assim o resultado da tarefa pode ser associado pelo ID. Abaixo, vamos entender como operar isso através de um exemplo. Primeiro, o callback Webhook é um serviço que pode receber solicitações HTTP, e os desenvolvedores devem substituí-lo pela URL do servidor HTTP que construíram. Aqui, para facilitar a demonstração, usamos um site de exemplo de Webhook público https://webhook.site/, ao abrir este site, você obterá uma URL de Webhook, como mostrado na imagem:

Copie esta URL e você pode usá-la como Webhook, o exemplo aqui é https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13. Em seguida, podemos definir o campo callback_url para a URL do Webhook acima, enquanto preenchemos prompt, como mostrado na imagem:

Clique em executar, e você verá que receberá imediatamente um resultado, como abaixo:
{
  "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6"
}
Após alguns instantes, podemos observar o resultado da música gerada em https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13, como mostrado na imagem: O conteúdo é o seguinte:
{
    "success": true,
    "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6",
    "video_id": "4d8013c3-5de0-41aa-966e-0b1a51d1c633",
    "prompt": "Astronautas se deslocam do espaço para o vulcão",
    "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
}
Pode-se ver que o resultado contém um campo task_id, e os outros campos são semelhantes aos mencionados acima, permitindo a associação da tarefa através deste campo.