Acceso y uso de la generación de videos - Amazon Nova

Acceso y uso de la generación de videos

La generación de un video con Amazon Nova Reel es un proceso asíncrono que suele tardar unos 90 segundos para un video de 6 segundos y, aproximadamente, entre 14 y 17 minutos para un video de 2 minutos. Tras iniciar la generación de un video, este se escribe en un bucket de Amazon S3 de su cuenta. Dado que Amazon Bedrock escribe un archivo en un bucket de Amazon S3 en su nombre, el rol AWS que utilice necesita permisos configurados para permitir las acciones apropiadas de Amazon Bedrock y Amazon S3, así como la acción s3:PutObject. Los permisos de acción mínimos necesarios para generar un video son los siguientes:

  • bedrock:InvokeModel

  • s3:PutObject

Sin embargo, recomendamos las siguientes acciones adicionales para poder realizar un seguimiento del estado de los trabajos de generación de video:

  • bedrock:GetAsyncInvoke

  • bedrock:ListAsyncInvokes

Cuando se completa la generación del video, el video y las tomas que lo componen se almacenan en el bucket de Amazon S3 especificado. Amazon Nova crea una carpeta para cada ID de invocación. Esta carpeta contiene los archivos manifest.json, output.mp4 y generation-status.json creados por la solicitud de generación de video.

Inicio de un trabajo de generación de video

Para iniciar la generación de un video, llame a start_async_invoke(). Esto crea un nuevo trabajo de invocación. Cuando el trabajo finaliza, Amazon Nova guarda automáticamente el video generado en el bucket de Amazon S3 especificado.

start_async_invoke() adopta los siguientes argumentos:

  • modelId (obligatorio): el ID del modelo que se utilizará. Para Amazon Nova Reel, es “amazon.nova-reel-v1:1”.

  • modelInput (obligatorio): define todos los parámetros de generación de video específicos del modelo de Amazon Nova Reel. Para obtener más información, consulte Parámetros de entrada de generación de video.

  • outputDataConfig (obligatorio): define dónde debe guardarse el video generado. El valor debe tener la estructura siguiente:

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

Parámetros de entrada de generación de video

Consulte las siguientes descripciones de los parámetros para obtener información sobre cómo generar videos con Amazon Nova Reel.

Text-to-video generation

La siguiente estructura define un trabajo de generación de video para 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 } }

Estos parámetros de entrada son necesarios para crear el trabajo de generación de video:

  • text (obligatorio): una petición de texto para generar el video. Debe tener entre 1 y 512 caracteres de longitud.

  • images (opcional): una sola imagen JPEG o PNG que se utiliza como fotograma clave inicial del video de salida. Esta imagen de entrada se utiliza junto con la petición de texto para generar el video. La imagen debe tener el formato de una cadena de base64 o debe estar almacenada en un bucket de Amazon S3.

    Las imágenes pueden estar en formato PNG o JPEG y deben tener 8 bits por canal de color (RGB). Las imágenes PNG pueden contener un canal alfa adicional, pero ese canal no debe contener píxeles transparentes o translúcidos. Actualmente, el modelo solo acepta imágenes de 1280 (ancho) x 720 (alto).

    Las imágenes incluidas a través de un bucket de Amazon S3 no pueden superar los 25 MB.

  • durationSeconds (obligatorio): duración del video de salida. 6 es el único valor admitido actualmente.

  • fps (obligatorio): velocidad de fotogramas del video de salida. 24 es el único valor admitido actualmente.

  • dimension (obligatorio): ancho y alto del video de salida. “1280 x 720” es el único valor admitido actualmente.

  • seed (opcional): determina el ajuste de ruido inicial para el proceso de generación. Si se cambia el valor de inicio y se mantienen intactos todos los demás parámetros, se obtendrá un video totalmente nuevo que seguirá ajustándose a las peticiones, las dimensiones y demás ajustes. Es habitual experimentar con una variedad de valores de inicio para encontrar la imagen perfecta.

    El valor de inicio debe estar entre 0 y 2 147 483 646, y el valor predeterminado es 42.

Esquema de imageSource

Cuando utilice una imagen como entrada, use la siguiente estructura para incluir la imagen en su solicitud:

{ "format": "png" | "jpeg" "source": { "bytes": string (base64 encoded image) } }
  • format (obligatorio): debe coincidir con el formato de la imagen de entrada. Puede ser “png” o “jpeg”.

  • source (obligatorio)

    • bytes (obligatorio): la imagen de entrada codificada como una cadena en base64. La imagen debe tener una resolución de 1280 x 720.

Automated long video generation

Puede generar videos de hasta dos minutos de duración, en incrementos de seis segundos, con solo una petición de texto utilizando la tarea MULTI_SHOT_AUTOMATED. Puede proporcionar una petición de texto de hasta 4000 caracteres, pero no puede proporcionar una imagen de entrada.

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

Estos parámetros de entrada son necesarios para crear el trabajo de generación de video:

  • text (obligatorio): una petición de texto para generar el video. Debe tener entre 1 y 4000 caracteres de longitud.

  • durationSeconds (obligatorio): duración del video de salida. Un múltiplo de 6 entre 12 y 120, inclusive.

  • fps (obligatorio): velocidad de fotogramas del video de salida. 24 es el único valor admitido actualmente.

  • dimension (obligatorio): ancho y alto del video de salida. “1280 x 720” es el único valor admitido actualmente.

  • seed (opcional): determina el ajuste de ruido inicial para el proceso de generación. Si se cambia el valor de inicio y se mantienen intactos todos los demás parámetros, se obtendrá una imagen totalmente nueva que seguirá ajustándose a las peticiones, las dimensiones y demás ajustes. Es habitual experimentar con una variedad de valores de inicio para encontrar la imagen perfecta.

    El valor de inicio debe estar entre 0 y 2 147 483 646, y el valor predeterminado es 42.

Manual long video generation

Puede utilizar la tarea MULTI_SHOT_MANUAL para generar videos de hasta dos minutos con múltiples peticiones de texto e imágenes de entrada. Para cada toma de seis segundos en el video, puede proporcionar una petición de texto con una imagen de entrada opcional. La duración del video se determina en función del número de tomas que especifique.

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 } }

Estos parámetros de entrada son necesarios para crear el trabajo de generación de video:

  • shots (obligatorio): contiene información sobre las peticiones de texto y las imágenes de entrada que se utilizan para la generación de video.

  • text (obligatorio): una petición de texto para generar el video. Debe tener entre 1 y 512 caracteres de longitud.

  • image (opcional): contiene información sobre la imagen de entrada que se utiliza para esta toma. La imagen se puede proporcionar como una cadena base64 en el campo bytes o como un URI de Amazon S3 en el campo s3Location.

    Las imágenes pueden estar en formato PNG o JPEG y deben tener 8 bits por canal de color (RGB). Las imágenes PNG pueden contener un canal alfa adicional, pero ese canal no debe contener píxeles transparentes o translúcidos. Actualmente, el modelo solo acepta imágenes de 1280 (ancho) x 720 (alto).

    Las imágenes incluidas a través de un bucket de Amazon S3 no pueden superar los 25 MB.

  • fps (obligatorio): velocidad de fotogramas del video de salida. 24 es el único valor admitido actualmente.

  • dimension (obligatorio): ancho y alto del video de salida. “1280 x 720” es el único valor admitido actualmente.

  • seed (opcional): determina el ajuste de ruido inicial para el proceso de generación. Si se cambia el valor de inicio y se mantienen intactos todos los demás parámetros, se obtendrá una imagen totalmente nueva que seguirá ajustándose a las peticiones, las dimensiones y demás ajustes. Es habitual experimentar con una variedad de valores de inicio para encontrar la imagen perfecta.

    El valor de inicio debe estar entre 0 y 2 147 483 646, y el valor predeterminado es 42.

El proceso de generación de video dará como resultado que los siguientes archivos se escriban en el destino de Amazon S3 especificado:

  • manifest.json: un archivo que se escribe al inicio del trabajo y que contiene el ID de la solicitud.

  • video-generation-status.json: este archivo se escribe tanto si el trabajo tiene éxito como si falla. Cuando un trabajo falla, contendrá información detallada que explique exactamente qué parte del trabajo falló y qué acción tomar para corregir el error.

  • output.mp4: el video completo de varias tomas. Se escribe solo si el trabajo tiene éxito.

  • shot_N.mp4: cada toma individual también se proporciona como su propio video. El nombre del archivo sigue el formato “shot_0001.mp4”, “shot_0002.mp4”, y así sucesivamente. Estos archivos se escriben solo si todo el trabajo se completa con éxito.

Comprobación del progreso de los trabajos de generación de video

Hay dos formas de comprobar el progreso de un trabajo de generación de video. Si tiene una referencia al ARN de invocación que se devolvió al iniciar la invocación, puede usar el método get_async_invoke() del tiempo de ejecución de 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}")

El estado de un trabajo será “Completado”, “En progreso” o “Fallido”. Para obtener más información sobre el uso del método get_async_invoke(), consulte la documentación de la API de Async Invoke.

Si no tiene una referencia al ARN de invocación o si desea comprobar el estado de varios trabajos a la vez, puede utilizar el método list_async_invokes() del tiempo de ejecución de 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))

Para obtener más información sobre el uso del método list_async_invokes(), consulte la documentación de la API de Async Invoke.

Acceso a los resultados de un trabajo de generación de video

Después de que un trabajo de generación de video se complete o falle, se añade un archivo JSON a su bucket de Amazon S3. Este archivo contiene metadatos sobre las tomas que se crearon para el video. El archivo se denomina video-generation-status.json.

Para una solicitud de generación de video exitosa, el archivo contiene la ubicación de cada toma individual que compone el video completo. Para una solicitud fallida, el archivo contiene el mensaje de error y detalles adicionales sobre el motivo del error de la toma.

El esquema de este archivo JSON se proporciona a continuación.

{ "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 versión del esquema JSON.

  • shots: proporciona información sobre cada toma del video.

    • status: el estado de finalización (CON ÉXITO o FALLIDO) de la toma.

    • location: el nombre del archivo y la ubicación de Amazon S3 donde se almacena la toma. La ubicación solo estará disponible cuando todas las tomas se hayan generado correctamente y el video completo se haya cargado en su ubicación de Amazon S3.

    • failureType: proporciona el motivo del error.

    • failureMessage: proporciona más información sobre el motivo del error.

  • fullVideo: proporciona información sobre el video completo.

    • status: el estado de finalización (CON ÉXITO o FALLIDO) del video completo.

    • location: el nombre del archivo y la ubicación de Amazon S3 donde se almacena el video completo.

    • failureType: proporciona el motivo del error.

    • failureMessage: proporciona más información sobre el motivo del error.

Los posibles motivos y mensajes de error son los siguientes

  • INTERNAL_SERVER_EXCEPTION: “Something went wrong on the server side.”

  • RAI_VIOLATION_OUTPUT_VIDEO_DEFLECTION: “The generated content has been blocked by our content filters.”

  • RATE_LIMIT_EXCEEDED: “Service capacity limit has been reached. Please try again later.”

  • ABORTED: “Request has been aborted.”