Vai al contenuto principale
Con l’espansione dell’uso dell’AI, vari programmi AI sono diventati sempre più comuni. L’AI è gradualmente penetrata in ogni aspetto della vita lavorativa e quotidiana delle persone. Inoltre, i settori coinvolti nell’AI stanno aumentando, passando dalla scrittura iniziale, all’istruzione medica, fino ad arrivare ora ai video. Luma è una piattaforma professionale di generazione video di alta qualità, dove gli utenti devono solo caricare il materiale per generare automaticamente video di alta qualità in base a diversi stili ed effetti. Questo generatore di video AI è stato sviluppato da membri di un team proveniente da noti gruppi tecnologici, con l’obiettivo di consentire a chiunque di creare facilmente video eccezionali senza strumenti di editing complessi. Tuttavia, Luma non fornisce ufficialmente un’API; AceDataCloud offre un set di API di Luma, simulando l’integrazione con l’ufficiale Suno, per generare video desiderati in modo semplice e veloce.

Richiesta e utilizzo

Per utilizzare l’API Luma Videos, puoi prima visitare la pagina Luma Videos Generation API e cliccare sul pulsante “Acquire” per ottenere le credenziali necessarie per la richiesta: Se non sei ancora loggato o registrato, verrai automaticamente reindirizzato alla pagina di accesso per invitarti a registrarti e accedere; dopo aver effettuato il login o la registrazione, verrai riportato automaticamente alla pagina corrente. Alla prima richiesta, verrà fornito un credito gratuito, che ti consente di utilizzare l’API senza costi.

Utilizzo di base

Per generare un video, puoi inserire liberamente un testo, ad esempio, se desidero generare un video su astronauti che si spostano tra lo spazio e un vulcano, posso inserire Astronauts shuttle from space to volcano, come mostrato nell’immagine:

Il codice generato è il seguente:

Parametri principali della richiesta:
  • prompt: la parola chiave per generare il video.
  • aspect_ratio: il rapporto di aspetto del video, predefinito 16:9.
  • end_image_url: opzionale, specifica il fotogramma finale.
  • enhancement: opzionale, interruttore per il miglioramento della chiarezza.
  • loop: se generare un video in loop, predefinito false.
  • timeout: opzionale, numero di secondi di timeout.
  • callback_url: indirizzo di callback asincrono.
Puoi cliccare sul pulsante “Try” per testare direttamente l’API; dopo 1-2 minuti, il risultato sarà il seguente:
{
  "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
}
Possiamo vedere che abbiamo ottenuto le informazioni relative a questo video, inclusi ID video, link video, copertina video e altro. La descrizione dei campi è la seguente:
  • success: indica se la generazione è avvenuta con successo; se è riuscita, sarà true, altrimenti false.
  • task_id: ID unico per il compito di generazione video.
  • video_id: ID unico per il video generato dal compito di generazione video.
  • prompt: parola chiave per il compito di generazione video.
  • video_url: link al video risultante dal compito di generazione video.
  • video_height: altezza dell’immagine di copertura del video generato.
  • video_width: larghezza dell’immagine di copertura del video generato.
  • state: stato del compito di generazione video; se il compito è completato, sarà completed.
  • thumbnail_url: link all’immagine di copertura del video generato.
  • thumbnail_width: larghezza dell’immagine di copertura del video generato.
  • thumbnail_height: altezza dell’immagine di copertura del video generato.

Generazione di fotogrammi personalizzati

Se desideri generare un video utilizzando fotogrammi personalizzati, puoi inserire i link delle immagini per i fotogrammi iniziali e finali: In questo caso, il campo start_image_url può ricevere le seguenti immagini come fotogramma iniziale del video: Fotogramma iniziale Successivamente, per generare un video personalizzato in base ai fotogrammi iniziali e finali e alle parole chiave, puoi specificare i seguenti contenuti:
  • action: l’azione del compito di generazione video, solitamente generate per generazione normale e extend per generazione estesa, predefinito generate.
  • start_image_url: specifica il fotogramma iniziale del video generato.
  • end_image_url: specifica il fotogramma finale del video generato.
  • prompt: contenuto della parola chiave per generare il video.
Esempio di compilazione:

Dopo aver completato la compilazione, il codice generato è il seguente:

Il codice corrispondente:
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)
Il risultato ottenuto è il seguente:
{
  "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
}
Il risultato finale è simile a quello precedente, il fotogramma iniziale del video generato include l’immagine che abbiamo fornito; ovviamente, è possibile anche fornire i link delle immagini per i fotogrammi iniziali e finali per generare il video, basta aggiungere un’immagine per il fotogramma finale sulla base di quanto sopra, le informazioni dell’immagine finale sono le seguenti: Fotogramma finale Esempio di compilazione finale:

Infine, si ottiene il seguente risultato:
{
  "success": true,
  "task_id": "d1cb723a-e554-4775-94a4-bb6ae8c7ea67",
  "video_id": "6bebd0d2-f793-472e-9326-38528a9273bb",
  "prompt": "Gli astronauti si spostano dallo spazio al vulcano",
  "video_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completato",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Il risultato è simile a quanto sopra, il video generato contiene sia l’immagine del primo fotogramma che quella dell’ultimo fotogramma, completando così la personalizzazione dei fotogrammi iniziali e finali per generare il video.

Funzionalità di estensione video

Se si desidera continuare a generare il video creato, è possibile impostare il parametro action su extend e inserire l’ID del video o il link del video da continuare a generare. L’ID del video e il link del video possono essere ottenuti in base all’uso di base, come mostrato nell’immagine sottostante:

A questo punto, si può vedere che l’ID del video è:
"video_id": "0105c090-03a5-425a-8026-523341cd575b",
"video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4"
Nota: qui l’ video_id e il video_url sono l’ID e il link del video generato. Se non sai come generare un video, puoi fare riferimento all’uso di base sopra per generare un video.
Per continuare a generare il video, è necessario caricare il link del video o l’ID del video. Di seguito viene mostrato come utilizzare l’ID del video per l’estensione. Successivamente, dobbiamo compilare le parole chiave per personalizzare la generazione del video, specificando i seguenti contenuti:
  • action: in questo caso, il comportamento di estensione del video, che deve essere extend.
  • prompt: le parole chiave per estendere il video.
  • video_url: il link del video da estendere.
  • video_id: l’ID unico del video da estendere.
  • end_image_url: il link dell’immagine del fotogramma finale da specificare per l’estensione, parametro opzionale.
Esempio di compilazione:

Dopo aver completato la compilazione, il codice generato automaticamente è il seguente:

Codice Python corrispondente:
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": "Gli astronauti si spostano dallo spazio al vulcano"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
Cliccando su esegui, si può notare che si ottiene un risultato, come segue:
{
  "success": true,
  "task_id": "c6e529d1-a06d-4c12-91b2-c855135131c3",
  "video_id": "36908c49-c2bb-4a11-bd5a-b8512b004818",
  "prompt": "Gli astronauti si spostano dallo spazio al vulcano",
  "video_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completato",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Si può notare che il video è stato esteso sulla base del video da estendere, il contenuto del risultato è coerente con quello sopra, realizzando così la funzionalità di continuazione della generazione della canzone. Naturalmente, possiamo anche specificare il link del video per effettuare l’estensione, compilando le seguenti informazioni:

Dopo l’esecuzione, si ottiene il seguente risultato:
{
  "success": true,
  "task_id": "1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca",
  "video_id": "f0187dc2-339f-4a08-a435-c3a3341f620a",
  "prompt": "Gli astronauti si spostano dallo spazio al vulcano",
  "video_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completato",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Dal risultato si può vedere che anche utilizzando il link del video è possibile realizzare la funzionalità di estensione del video. Infine, possiamo anche specificare un’immagine del fotogramma finale per l’estensione del video. Di seguito sono riportate le informazioni sull’immagine del fotogramma finale: Fotogramma finale Successivamente, aggiungiamo le informazioni sull’immagine del fotogramma finale sulla base di quanto sopra, come mostrato di seguito:

Cliccando su esegui, si ottiene la seguente informazione:
{
  "success": true,
  "task_id": "b816b2b4-c345-4673-9e19-83e91f91b643",
  "video_id": "c5400053-63e6-4206-8082-31cf9dd1e7ed",
  "prompt": "Gli astronauti si spostano dallo spazio al vulcano",
  "video_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "completato",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Si può notare che, sulla base dell’estensione del video sopra, è possibile anche specificare un’immagine del fotogramma finale per l’estensione.

Callback asincrona

Poiché il tempo di generazione del video Luma è relativamente lungo, circa 1-2 minuti, se l’API non risponde per lungo tempo, la richiesta HTTP manterrà la connessione, causando un consumo aggiuntivo di risorse di sistema. Pertanto, questa API offre anche supporto per callback asincroni. Il processo complessivo è il seguente: quando il client avvia una richiesta, specifica un campo callback_url aggiuntivo. Dopo che il client ha avviato la richiesta API, l’API restituirà immediatamente un risultato, contenente un campo task_id, che rappresenta l’ID del compito attuale. Quando il compito è completato, il risultato della generazione musicale verrà inviato al callback_url specificato dal client in formato POST JSON, includendo anche il campo task_id, in modo che il risultato del compito possa essere associato tramite l’ID. Di seguito, vediamo un esempio per capire come operare concretamente. Innanzitutto, il callback Webhook è un servizio in grado di ricevere richieste HTTP, e gli sviluppatori dovrebbero sostituirlo con l’URL del server HTTP che hanno creato. Qui, per comodità di dimostrazione, utilizziamo un sito Web pubblico di esempio per Webhook https://webhook.site/, aprendo questo sito si ottiene un URL Webhook, come mostrato nell’immagine:

Copia questo URL e utilizzalo come Webhook; l’esempio qui è https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13. Successivamente, possiamo impostare il campo callback_url sull’URL Webhook sopra menzionato, riempiendo anche il prompt, come mostrato nell’immagine:

Cliccando su Esegui, possiamo notare che si ottiene immediatamente un risultato, come segue:
{
  "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6"
}
Dopo un momento, possiamo osservare il risultato della canzone generata su https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13, come mostrato nell’immagine: Il contenuto è il seguente:
{
    "success": true,
    "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6",
    "video_id": "4d8013c3-5de0-41aa-966e-0b1a51d1c633",
    "prompt": "Astronauti si spostano dallo spazio al vulcano",
    "video_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.mp4",
    "video_height": 752,
    "video_width": 1360,
    "state": "completato",
    "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/732f8282-7cf8-401c-95f2-42c33aa079a6.jpg",
    "thumbnail_width": 1360,
    "thumbnail_height": 752
}
Possiamo vedere che nel risultato c’è un campo task_id, e gli altri campi sono simili a quelli sopra, tramite questo campo è possibile realizzare l’associazione del compito.