Accès et utilisation de la génération vidéo - Amazon Nova

Accès et utilisation de la génération vidéo

La génération d’une vidéo avec Amazon Nova Reel est un processus asynchrone qui prend généralement environ 90 secondes pour une vidéo de 6 secondes et environ 14 à 17 minutes pour une vidéo de 2 minutes. Une fois la génération d’une vidéo lancée, celle-ci est enregistrée dans un compartiment Amazon S3 de votre compte. Étant donné qu’Amazon Bedrock enregistre un fichier dans un compartiment Amazon S3 en votre nom, le rôle AWS que vous utilisez doit disposer des autorisations configurées pour permettre les actions Amazon Bedrock et Amazon S3 appropriées, ainsi que l’action s3:PutObject. Les autorisations d’action minimales requises pour générer une vidéo sont les suivantes :

  • bedrock:InvokeModel

  • s3:PutObject

Cependant, nous recommandons les actions supplémentaires suivantes afin que vous puissiez suivre l’état des tâches de génération de vidéo :

  • bedrock:GetAsyncInvoke

  • bedrock:ListAsyncInvokes

Une fois la génération de la vidéo terminée, celle-ci et les plans qui la composent sont stockés dans le compartiment Amazon S3 que vous avez spécifié. Amazon Nova crée un dossier pour chaque ID d’invocation. Ce dossier contient les fichiers manifest.json, output.mp4 et generation-status.json créés par la demande de génération de vidéo.

Démarrer une tâche de génération de vidéo

Pour lancer la génération d’une vidéo, appelez start_async_invoke(). Cela crée une nouvelle tâche d’invocation. Une fois la tâche terminée, Amazon Nova enregistre automatiquement la vidéo générée dans un compartiment Amazon S3 que vous spécifiez.

start_async_invoke() accepte les arguments suivants :

  • modelId (obligatoire) : l’ID de modèle à utiliser. Pour Amazon Nova Reel, il s’agit de « amazon.nova-reel-v1:1 »

  • modelInput (obligatoire) : définit tous les paramètres de génération vidéo spécifiques au modèle Amazon Nova Reel. Pour de plus amples informations, consultez Paramètres d’entrée pour la génération de vidéos.

  • outputDataConfig (obligatoire) : définit l’emplacement où la vidéo générée doit être enregistrée. La valeur doit présenter la structure suivante :

    { "s3OutputDataConfig": { "s3Uri": string (S3 URL starting with "s3://") } }

Paramètres d’entrée pour la génération de vidéos

Veuillez vous référer aux descriptions des paramètres suivants pour obtenir des informations sur la génération de vidéos à l’aide d’Amazon Nova Reel.

Text-to-video generation

La structure suivante définit une tâche de génération de vidéo pour Amazon Nova Reel :

{ "taskType": "TEXT_VIDEO", "textToVideoParams": { "text": string, "images": ImageSource[] (list containing a single ImageSource) }, "videoGenerationConfig": { "durationSeconds": int, "fps": int, "dimension": string, "seed": int } }

Ces paramètres d’entrée sont nécessaires pour créer la tâche de génération de vidéo :

  • text (obligatoire) : invite de texte pour générer la vidéo. La longueur doit être comprise entre 1 et 512 caractères.

  • images (facultatif) : une seule image JPEG ou PNG utilisée comme image clé de départ de la vidéo de sortie. Cette image d’entrée est utilisée avec l’invite de texte pour générer la vidéo. L’image doit être formatée sous forme de chaîne base64 ou stockée dans un compartiment Amazon S3.

    Les images peuvent être au format PNG ou JPEG et doivent être de 8 bits par canal de couleur (RVB). Les images PNG peuvent contenir un canal alpha supplémentaire, mais ce canal ne doit contenir aucun pixel transparent ou translucide. Actuellement, le modèle n’accepte que les images de 1280 (largeur) x 720 (hauteur).

    Les images incluses dans un compartiment Amazon S3 ne peuvent pas dépasser 25 Mo.

  • durationSeconds (obligatoire) : durée de la vidéo de sortie. 6 est la seule valeur prise en charge actuellement.

  • fps (obligatoire) : fréquence d’images de la vidéo de sortie. 24 est la seule valeur prise en charge actuellement.

  • dimension (obligatoire) : largeur et hauteur de la vidéo de sortie. « 1280x720 » est actuellement la seule valeur prise en charge.

  • seed (facultatif) : détermine le paramètre de bruit initial pour le processus de génération. Modifier la valeur de départ tout en conservant les autres paramètres inchangés permettra d’obtenir une vidéo entièrement nouvelle qui respectera toujours votre invite, vos dimensions et vos autres paramètres. Il est courant d’expérimenter différentes valeurs de graine pour trouver l’image parfaite.

    La valeur de départ doit être comprise entre 0 et 2 147 483 646. La valeur par défaut est 42.

Schéma imageSource

Lorsque vous utilisez une image comme entrée, utilisez la structure suivante pour inclure l’image dans votre demande :

{ "format": "png" | "jpeg" "source": { "bytes": string (base64 encoded image) } }
  • format (obligatoire) : doit correspondre au format de l’image d’entrée. « png » ou « jpeg ».

  • source (obligatoire)

    • bytes (obligatoire) : l’image d’entrée codée sous forme de chaîne base64. Elle doit avoir une résolution de 1280 x 720.

Automated long video generation

Vous pouvez générer des vidéos d’une durée maximale de deux minutes, par incréments de six secondes, à l’aide d’une simple invite textuelle à l’aide de la tâche MULTI_SHOT_AUTOMATED. Vous pouvez fournir une invite textuelle de 4 000 caractères maximum, mais vous ne pouvez pas fournir d’image d’entrée.

{ "taskType": "MULTI_SHOT_AUTOMATED", "multiShotAutomatedParams": { "text": string, }, "videoGenerationConfig": { "durationSeconds": int, "fps": int, "dimension": string, "seed": int } }

Ces paramètres d’entrée sont nécessaires pour créer la tâche de génération de vidéo :

  • text (obligatoire) : invite de texte pour générer la vidéo. La longueur doit être comprise entre 1 et 4 000 caractères.

  • durationSeconds (obligatoire) : durée de la vidéo de sortie. Un multiple de 6 compris entre 12 et 120 inclus.

  • fps (obligatoire) : fréquence d’images de la vidéo de sortie. 24 est la seule valeur prise en charge actuellement.

  • dimension (obligatoire) : largeur et hauteur de la vidéo de sortie. « 1280x720 » est actuellement la seule valeur prise en charge.

  • seed (facultatif) : détermine le paramètre de bruit initial pour le processus de génération. Modifier la valeur de la graine tout en laissant tous les autres paramètres inchangés produira une image totalement nouvelle qui respectera toujours votre invite, vos dimensions et vos autres paramètres. Il est courant d’expérimenter différentes valeurs de graine pour trouver l’image parfaite.

    La valeur de départ doit être comprise entre 0 et 2 147 483 646. La valeur par défaut est 42.

Manual long video generation

Vous pouvez utiliser la tâche MULTI_SHOT_MANUAL pour générer des vidéos d’une durée maximale de deux minutes avec plusieurs invites de texte et images d’entrée. Pour chaque plan de six secondes dans la vidéo, vous pouvez fournir une invite de texte avec une image d’entrée facultative. La durée de la vidéo est déterminée en fonction du nombre de plans que vous spécifiez.

model_input = { "taskType": "MULTI_SHOT_MANUAL", "multiShotManualParams": { "shots": [ { "text": "Information for shot 1" }, { "text": "Information for shot 2", "image": { "format": "png", # Must be "png" or "jpeg" "source": { "bytes": "<base64 image string>" }, }, }, { "text": "Information for shot 3", "image": { "format": "png", # Must be "png" or "jpeg" "source": { "s3Location": { "uri": "<S3 URI string>", "bucketOwner": "<S3 bucket owner string>" # Optional } } } }, ] }, "videoGenerationConfig": { "fps": int, "dimension": string, "seed": int } }

Ces paramètres d’entrée sont nécessaires pour créer la tâche de génération de vidéo :

  • shots (obligatoire) : contient des informations sur les invites de texte et les images d’entrée utilisées pour la génération de la vidéo.

  • text (obligatoire) : invite de texte pour générer la vidéo. La longueur doit être comprise entre 1 et 512 caractères.

  • image (facultatif) : contient des informations sur l’image d’entrée utilisée pour cette séquence. L’image peut être fournie sous forme de chaîne base64 dans le champ bytes ou sous forme d’URI Amazon S3 dans le champ s3Location.

    Les images peuvent être au format PNG ou JPEG et doivent être de 8 bits par canal de couleur (RVB). Les images PNG peuvent contenir un canal alpha supplémentaire, mais ce canal ne doit contenir aucun pixel transparent ou translucide. Actuellement, le modèle n’accepte que les images de 1280 (largeur) x 720 (hauteur).

    Les images incluses dans un compartiment Amazon S3 ne peuvent pas dépasser 25 Mo.

  • fps (obligatoire) : fréquence d’images de la vidéo de sortie. 24 est la seule valeur prise en charge actuellement.

  • dimension (obligatoire) : largeur et hauteur de la vidéo de sortie. « 1280x720 » est actuellement la seule valeur prise en charge.

  • seed (facultatif) : détermine le paramètre de bruit initial pour le processus de génération. Modifier la valeur de la graine tout en laissant tous les autres paramètres inchangés produira une image totalement nouvelle qui respectera toujours votre invite, vos dimensions et vos autres paramètres. Il est courant d’expérimenter différentes valeurs de graine pour trouver l’image parfaite.

    La valeur de départ doit être comprise entre 0 et 2 147 483 646. La valeur par défaut est 42.

Le processus de génération de vidéo entraînera l’écriture des fichiers suivants dans la destination Amazon S3 que vous spécifiez :

  • manifest.json : fichier enregistré au début de la tâche, contenant l’ID de la demande.

  • video-generation-status.json : ce fichier est enregistré, que la tâche aboutisse ou échoue. En cas d’échec, il contient des informations détaillées expliquant précisément quelle partie de la tâche a échoué et les mesures à prendre pour corriger l’erreur.

  • output.mp4 : vidéo multi-plans complète. Écrit uniquement si la tâche aboutit.

  • shot_N.mp4 : chaque prise individuelle est également fournie sous forme de vidéo distincte. Le nom du fichier suit le format « shot_0001.mp4 », « shot_0002.mp4 », etc. Ces fichiers ne sont écrits que si l’ensemble de la tâche aboutit.

Vérification de la progression des tâches de génération de vidéo

Il existe deux façons de vérifier la progression d’une tâche de génération de vidéo. Si vous disposez d’une référence à l’ARN d’invocation qui a été renvoyé lors du démarrage de l’invocation, vous pouvez utiliser la méthode get_async_invoke() de l’exécution Amazon Bedrock.

response = bedrock_runtime.get_async_invoke( invocationArn="arn:AWS:bedrock:us-east-1:account-id:async-invoke/invocation-id" ) status = response["status"] print(f"Status: {status}")

Le statut d’une tâche sera « Terminé », « En cours » ou « Échec ». Pour plus d’informations sur l’utilisation de la méthode get_async_invoke(), consultez la documentation de l’API Async Invoke.

Si vous ne disposez pas d’une référence à l’ARN d’invocation ou si vous souhaitez vérifier le statut de plusieurs tâches à la fois, vous pouvez utiliser la méthode list_async_invokes() de l’exécution Amazon Bedrock.

invocations_details = bedrock_runtime.list_async_invokes( maxResults=10, # (Optional) statusEquals="InProgress", # (Optional) Can be "Completed", "InProgress", or "Failed". Omit this argument to list all jobs, regardless of status. # Note: There are other supported arguments not demonstrated here. ) print(json.dumps(invocations_details, indent=2, default=str))

Pour plus d’informations sur l’utilisation de la méthode list_async_invokes(), consultez la documentation de l’API Async Invoke.

Accès aux résultats d’une tâche de génération vidéo

Une fois qu’une tâche de génération vidéo a abouti ou échoué, un fichier JSON est ajouté à votre compartiment Amazon S3. Ce fichier contient des métadonnées sur les plans qui ont été créés pour la vidéo. Ce fichier est nommé video-generation-status.json.

Pour une demande de génération vidéo réussie, le fichier contient l’emplacement de chaque plan individuel qui compose la vidéo complète. Pour une demande ayant échoué, le fichier contient le message d’échec et des détails supplémentaires sur la raison de l’échec du plan.

Le schéma de ce fichier JSON est fourni ci-dessous.

{ "schemaVersion": string, "shots": [{ "status": enum, // where success is generation + upload "location": string, "failureType": enum, "failureMessage": string, }, ... ], "fullVideo": { "status": enum, // where success is generation + upload "location": string, "failureType": enum, "failureMessage": string, } }
  • schemaVersion : la version du schéma JSON.

  • shots : fournit des informations sur chaque plan de la vidéo.

    • status : l’état d’achèvement (SUCCESS ou FAILURE) du plan.

    • location : le nom du fichier et l’emplacement Amazon S3 où la prise de vue est stockée. L’emplacement ne sera disponible que lorsque toutes les prises de vue auront été générées avec succès et que la vidéo complète aura été chargée vers son emplacement Amazon S3.

    • failureType : fournit la raison de l’échec.

    • failureMessage : fournit plus d’informations sur la raison de l’échec.

  • fullVideo : fournit des informations sur la vidéo complète.

    • status : l’état d’achèvement (SUCCESS ou FAILURE) de la vidéo complète.

    • location : le nom du fichier et l’emplacement Amazon S3 où la vidéo complète est stockée.

    • failureType : fournit la raison de l’échec.

    • failureMessage : fournit plus d’informations sur la raison de l’échec.

Les raisons et messages d’échec possibles sont les suivants

  • INTERNAL_SERVER_EXCEPTION : « Une erreur s’est produite côté serveur. »

  • RAI_VIOLATION_OUTPUT_VIDEO_DEFLECTION : « Le contenu généré a été bloqué par nos filtres de contenu. »

  • RATE_LIMIT_EXCEEDED : « La limite de capacité du service a été atteinte. Réessayez ultérieurement. »

  • ABORTED : « La demande a été abandonnée. »