Passer au contenu principal
Avec l’application croissante de l’IA, divers programmes d’IA sont devenus progressivement courants. L’IA s’est progressivement intégrée dans tous les aspects de la vie professionnelle et personnelle des gens. Les secteurs impliqués dans l’IA sont également de plus en plus nombreux, allant de l’écriture initiale, à l’éducation médicale, jusqu’à la vidéo actuelle. Luma est une plateforme de génération vidéo de haute qualité et professionnelle, où les utilisateurs n’ont qu’à télécharger des matériaux pour générer automatiquement des vidéos de haute qualité selon différents styles et effets. Ce générateur de vidéos AI a été développé par des membres d’équipes de sociétés technologiques renommées, avec pour objectif de permettre à chacun de créer facilement d’excellentes vidéos sans outils d’édition complexes. Cependant, Luma n’offre pas d’API officielle, AceDataCloud propose un ensemble d’API Luma, simulant l’intégration avec l’officiel de Suno, permettant de générer rapidement et facilement les vidéos souhaitées.

Demande et utilisation

Pour utiliser l’API Luma Videos, vous pouvez d’abord vous rendre sur la page Luma Videos Generation API et cliquer sur le bouton « Acquire » pour obtenir les informations d’identification nécessaires à la demande : Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter. Après vous être connecté ou inscrit, vous serez automatiquement renvoyé à la page actuelle. Lors de la première demande, un quota gratuit sera offert, permettant d’utiliser cette API gratuitement.

Utilisation de base

Pour générer une vidéo, vous pouvez entrer n’importe quel texte, par exemple, si je veux générer une vidéo sur des astronautes se déplaçant entre l’espace et un volcan, je peux entrer Astronauts shuttle from space to volcano, comme illustré ci-dessous :

Le code généré est le suivant :

Principaux paramètres de demande :
  • prompt : le mot-clé pour générer la vidéo.
  • aspect_ratio : le rapport hauteur/largeur de la vidéo, par défaut 16:9.
  • end_image_url : optionnel, spécifie la dernière image.
  • enhancement : optionnel, interrupteur d’amélioration de la clarté.
  • loop : si la vidéo doit être en boucle, par défaut false.
  • timeout : optionnel, nombre de secondes avant le timeout.
  • callback_url : adresse de rappel asynchrone.
Vous pouvez cliquer sur le bouton « Try » pour tester directement l’API, attendez 1 à 2 minutes, le résultat est le suivant :
{
  "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
}
On peut voir que nous avons obtenu les informations pertinentes de cette vidéo, y compris l’ID de la vidéo, le lien vidéo, la miniature, etc. Les explications des champs sont les suivantes :
  • success : indique si la génération a réussi, si oui, alors true, sinon false
  • task_id : l’ID unique de la tâche de génération vidéo
  • video_id : l’ID unique de la vidéo générée par cette tâche
  • prompt : le mot-clé de la tâche de génération vidéo
  • video_url : le lien de la vidéo résultante de la tâche de génération vidéo
  • video_height : la hauteur de l’image miniature générée
  • video_width : la largeur de l’image miniature générée
  • state : l’état de la tâche de génération vidéo, si la tâche est terminée, alors completed.
  • thumbnail_url : le lien de l’image miniature générée
  • thumbnail_width : la largeur de l’image miniature générée
  • thumbnail_height : la hauteur de l’image miniature générée

Génération de cadres personnalisés

Si vous souhaitez générer une vidéo en personnalisant les cadres de début et de fin, vous pouvez entrer les liens d’image des cadres : À ce moment-là, le champ start_image_url peut recevoir l’image suivante comme première image de la vidéo : Première image Ensuite, nous devons personnaliser la génération de la vidéo en fonction des cadres de début et de fin, nous pouvons spécifier le contenu suivant :
  • action : le comportement de la tâche de génération vidéo, généralement generate pour une génération normale et extend pour une génération étendue, par défaut generate.
  • start_image_url : spécifie la première image de la vidéo générée.
  • end_image_url : spécifie la dernière image de la vidéo générée.
  • prompt : le contenu des mots-clés pour générer la vidéo.
Un exemple de remplissage est le suivant :

Après avoir rempli, le code généré est le suivant :

Le code correspondant :
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)
Le résultat obtenu est le suivant :
{
  "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
}
Le résultat final est similaire à celui ci-dessus, la première image de la vidéo générée contient l’image que nous avons fournie, et il est également possible de fournir simultanément des liens d’images pour les cadres de début et de fin pour générer la vidéo, il suffit d’ajouter une image de cadre de fin sur la base de ce qui précède, les informations de l’image de cadre de fin sont les suivantes : Dernière image Un exemple de remplissage est le suivant :

Le résultat final est le suivant :
{
  "success": true,
  "task_id": "d1cb723a-e554-4775-94a4-bb6ae8c7ea67",
  "video_id": "6bebd0d2-f793-472e-9326-38528a9273bb",
  "prompt": "Des astronautes se déplacent de l'espace au volcan",
  "video_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "terminé",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/d1cb723a-e554-4775-94a4-bb6ae8c7ea67.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
Le résultat est similaire à ce qui précède, la vidéo générée contient à la fois l’image de la première et de la dernière image, ce qui complète la personnalisation des images de début et de fin pour générer la vidéo.

Fonctionnalité d’extension vidéo

Si vous souhaitez continuer à générer la vidéo créée, vous pouvez définir le paramètre action sur extend, et entrer l’ID de la vidéo ou le lien de la vidéo à continuer, l’ID de la vidéo et le lien de la vidéo peuvent être obtenus selon l’utilisation de base, comme indiqué dans l’image ci-dessous :

À ce moment-là, vous pouvez voir que l’ID de la vidéo est :
"video_id": "0105c090-03a5-425a-8026-523341cd575b",
"video_url": "https://platform.cdn.acedata.cloud/luma/12a18694-fd4b-47e7-9c50-34f30862cff6.mp4"
Remarque : ici, l’ID de la vidéo et le lien de la vidéo sont l’ID et le lien de la vidéo générée. Si vous ne savez pas comment générer une vidéo, vous pouvez vous référer à l’utilisation de base ci-dessus pour générer une vidéo.
Pour continuer à générer la vidéo, vous devez télécharger le lien de la vidéo ou l’ID de la vidéo. Ci-dessous, nous démontrons l’utilisation de l’ID de la vidéo pour l’extension, ensuite, nous devons remplir les mots-clés pour personnaliser la génération de la vidéo, ce qui nous permet de spécifier le contenu suivant :
  • action : à ce moment, le comportement d’extension de la vidéo, ici ce sera extend.
  • prompt : les mots-clés pour étendre la vidéo.
  • video_url : le lien de la vidéo à étendre.
  • video_id : l’ID unique de la vidéo à étendre.
  • end_image_url : le lien de l’image de la dernière image à spécifier pour l’extension, paramètre optionnel.
L’exemple de remplissage est le suivant :

Une fois rempli, le code généré automatiquement est le suivant :

Le code Python correspondant :
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": "Des astronautes se déplacent de l'espace au volcan"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
En cliquant sur exécuter, vous pouvez constater que vous obtiendrez un résultat, comme suit :
{
  "success": true,
  "task_id": "c6e529d1-a06d-4c12-91b2-c855135131c3",
  "video_id": "36908c49-c2bb-4a11-bd5a-b8512b004818",
  "prompt": "Des astronautes se déplacent de l'espace au volcan",
  "video_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "terminé",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/c6e529d1-a06d-4c12-91b2-c855135131c3.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
On peut voir que cette vidéo a été étendue sur la base de la vidéo à étendre, le contenu du résultat est cohérent avec ce qui précède, ce qui réalise la fonction de génération continue de la chanson. Bien sûr, nous pouvons également spécifier le lien de la vidéo pour effectuer l’extension, en remplissant les informations suivantes :

Après exécution, le résultat obtenu est le suivant :
{
  "success": true,
  "task_id": "1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca",
  "video_id": "f0187dc2-339f-4a08-a435-c3a3341f620a",
  "prompt": "Des astronautes se déplacent de l'espace au volcan",
  "video_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "terminé",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/1dcb5902-a7be-4b77-ba5d-dd8ec82b26ca.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
D’après le résultat, on peut voir que la fonctionnalité d’extension de vidéo peut également être réalisée en fonction du lien de la vidéo. Enfin, nous pouvons également spécifier une image de dernière image dans la vidéo étendue pour effectuer l’extension, ci-dessous se trouvent les informations de l’image de dernière image : Dernière image Ensuite, sur la base de ce qui précède, nous ajoutons les informations de l’image de dernière image, comme suit :

En cliquant sur exécuter, nous obtenons les informations suivantes :
{
  "success": true,
  "task_id": "b816b2b4-c345-4673-9e19-83e91f91b643",
  "video_id": "c5400053-63e6-4206-8082-31cf9dd1e7ed",
  "prompt": "Des astronautes se déplacent de l'espace au volcan",
  "video_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.mp4",
  "video_height": 656,
  "video_width": 1552,
  "state": "terminé",
  "thumbnail_url": "https://platform.cdn.acedata.cloud/luma/b816b2b4-c345-4673-9e19-83e91f91b643.jpg",
  "thumbnail_width": 1552,
  "thumbnail_height": 656
}
On peut voir qu’en plus de l’extension de la vidéo précédente, il est également possible de spécifier une image de dernière image pour effectuer l’extension.

Rappel asynchrone

Étant donné que le temps de génération de vidéo de Luma est relativement long, environ 1 à 2 minutes, si l’API ne répond pas pendant longtemps, la requête HTTP maintiendra la connexion, entraînant une consommation supplémentaire de ressources système. Par conséquent, cette API propose également un support pour les rappels asynchrones. Le processus global est le suivant : lorsque le client initie une demande, il spécifie en plus un champ callback_url. Après que le client a lancé la demande API, l’API renvoie immédiatement un résultat contenant un champ d’information task_id, représentant l’ID de la tâche actuelle. Lorsque la tâche est terminée, le résultat de la génération musicale est envoyé au callback_url spécifié par le client sous forme de POST JSON, incluant également le champ task_id, permettant ainsi de relier le résultat de la tâche par ID. Voyons maintenant un exemple pour comprendre comment procéder concrètement. Tout d’abord, le rappel Webhook est un service capable de recevoir des requêtes HTTP, les développeurs doivent le remplacer par l’URL de leur propre serveur HTTP. Ici, pour des raisons de démonstration, nous utilisons un site d’exemple Webhook public https://webhook.site/, en ouvrant ce site, vous obtiendrez une URL Webhook, comme illustré ci-dessous :

Copiez cette URL, elle peut être utilisée comme Webhook, l’exemple ici est https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13. Ensuite, nous pouvons définir le champ callback_url sur l’URL Webhook ci-dessus, tout en remplissant prompt, comme illustré ci-dessous :

En cliquant sur exécuter, vous constaterez que vous obtiendrez immédiatement un résultat, comme suit :
{
  "task_id": "732f8282-7cf8-401c-95f2-42c33aa079a6"
}
Après un court instant, nous pouvons observer le résultat de la chanson générée sur https://webhook.site/0c87ca0e-cd74-4577-8d68-f2b80fbf8a13, comme illustré ci-dessous : Le contenu est le suivant :
{
    "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
}
On peut voir que le résultat contient un champ task_id, les autres champs étant similaires à ceux mentionnés ci-dessus, permettant ainsi de relier les tâches via ce champ.