Accesso e utilizzo della generazione di video - Amazon Nova

Accesso e utilizzo della generazione di video

La generazione di un video con Amazon Nova Reel è un processo asincrono che richiede generalmente circa 90 secondi per un video di 6 secondi e circa 14-17 minuti per un video di 2 minuti. Dopo aver avviato la generazione, il video viene scritto in un bucket Amazon S3 nell’account. Poiché Amazon Bedrock scrive un file in un bucket Amazon S3 per tuo conto, il ruolo AWS utilizzato richiede la configurazione di autorizzazioni per consentire le operazioni Amazon Bedrock e Amazon S3 adeguate e l’operazione s3:PutObject. Le operazioni minime da autorizzare per generare un video sono:

  • bedrock:InvokeModel

  • s3:PutObject

Tuttavia, consigliamo di includere le seguenti operazioni aggiuntive per poter monitorare lo stato dei processi di generazione dei video:

  • bedrock:GetAsyncInvoke

  • bedrock:ListAsyncInvokes

Al termine della generazione, il video e le riprese che lo costituiscono vengono archiviati nel bucket Amazon S3 specificato. Amazon Nova crea una cartella per ogni ID di invocazione. Questa cartella contiene i file manifest.json, output.mp4 e generation-status.json creati dalla richiesta di generazione di video.

Avviare un processo di generazione di video

Per avviare la generazione di un video, effettua una chiamata start_async_invoke(). In questo modo viene creato un nuovo processo di invocazione. Al termine del processo, Amazon Nova salva automaticamente il video generato nel bucket Amazon S3 specificato.

start_async_invoke() accetta i seguenti argomenti:

  • modelId (obbligatorio): l’ID modello da utilizzare. Per Amazon Nova Reel è “amazon.nova-reel-v1:1”.

  • modelInput (obbligatorio): definisce tutti i parametri di generazione di video specifici per il modello Amazon Nova Reel. Per ulteriori informazioni, consulta Parametri di input per la generazione di video.

  • outputDataConfig (obbligatorio): definisce dove deve essere salvato il video generato. Il valore deve avere la seguente struttura:

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

Parametri di input per la generazione di video

Consulta le descrizioni dei parametri riportate di seguito per informazioni su come generare video utilizzando Amazon Nova Reel.

Text-to-video generation

La seguente struttura definisce un processo di generazione di video per 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 } }

Questi parametri di input sono necessari per creare il processo di generazione di video:

  • text (obbligatorio): un prompt di testo per generare l’immagine. Deve avere una lunghezza compresa tra 1 e 512 caratteri.

  • images (facoltativo): una singola immagine JPEG o PNG utilizzata come primo fotogramma principale del video di output. Questa immagine di input viene utilizzata insieme al prompt di testo per generare il video. L’immagine deve essere formattata come stringa base64 oppure archiviata in un bucket Amazon S3.

    Le immagini possono essere in formato PNG o JPEG e devono avere una dimensione di 8 bit per canale di colore (RGB). Le immagini PNG possono contenere un canale alfa aggiuntivo, che però non deve contenere pixel trasparenti o traslucidi. Al momento, il modello accetta solamente immagini di 1280 (larghezza) x 720 (altezza).

    Le immagini a partire da un bucket Amazon S3 non possono superare i 25 MB.

  • durationSeconds (obbligatorio): la durata del video di output. Al momento, l’unico valore supportato è 6.

  • fps (obbligatorio): frequenza dei fotogrammi del video di output. Al momento, l’unico valore supportato è 24.

  • dimension (obbligatorio): larghezza e altezza del video di output. Al momento, l’unico valore supportato è “1280x720”.

  • seed (facoltativo): determina l’impostazione iniziale del rumore per il processo di generazione. Modificando il valore di seed e lasciando tutti gli altri parametri invariati, verrà prodotto un video completamente nuovo che rispetta comunque il prompt, le dimensioni e le altre impostazioni. È comune sperimentare con diversi valori di seed per trovare l’immagine perfetta.

    Il valore di seed iniziare deve essere compreso tra 0 e 2.147.483.646 e il valore predefinito è 42.

Schema imageSource

Quando utilizzi un’immagine come input, segui questa struttura per includerla nella richiesta:

{ "format": "png" | "jpeg" "source": { "bytes": string (base64 encoded image) } }
  • format (obbligatorio): deve corrispondere al formato dell’immagine di input, quindi “png” o “jpeg”.

  • source (obbligatorio).

    • bytes (obbligatorio): l’immagine di input codificata come stringa base64. L’immagine deve avere una risoluzione di 1280x720.

Automated long video generation

Puoi generare video della durata massima di due minuti, con incrementi di sei secondi, con un solo prompt di testo utilizzando l’attività MULTI_SHOT_AUTOMATED. Puoi fornire un prompt di testo della lunghezza massima di 4.000 caratteri, ma non puoi fornire un’immagine di input.

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

Questi parametri di input sono necessari per creare il processo di generazione di video:

  • text (obbligatorio): un prompt di testo per generare l’immagine. Deve avere una lunghezza compresa tra 1 e 4.000 caratteri.

  • durationSeconds (obbligatorio): durata del video di output. Un multiplo di 6 compreso tra 12 e 120 (inclusi).

  • fps (obbligatorio): frequenza dei fotogrammi del video di output. Al momento, l’unico valore supportato è 24.

  • dimension (obbligatorio): larghezza e altezza del video di output. Al momento, l’unico valore supportato è “1280x720”.

  • seed (facoltativo): determina l’impostazione iniziale del rumore per il processo di generazione. Modificando il valore di seed e lasciando tutti gli altri parametri invariati, verrà prodotta un’immagine completamente nuova che rispetta comunque il prompt, le dimensioni e le altre impostazioni. È comune sperimentare con diversi valori di seed per trovare l’immagine perfetta.

    Il valore di seed iniziare deve essere compreso tra 0 e 2.147.483.646 e il valore predefinito è 42.

Manual long video generation

Puoi utilizzare l’attività MULTI_SHOT_MANUAL per generare video della durata massima di due minuti con più prompt di testo e immagini di input. Per ogni ripresa di sei secondi del video, puoi fornire un prompt di testo con un’immagine di input facoltativa. La durata del video viene determinata in base al numero di riprese specificato.

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

Questi parametri di input sono necessari per creare il processo di generazione di video:

  • shots (obbligatorio): contiene informazioni relative ai prompt di testo e alle immagini di input utilizzati per la generazione di video.

  • text (obbligatorio): un prompt di testo per generare l’immagine. Deve avere una lunghezza compresa tra 1 e 512 caratteri.

  • image (facoltativo): contiene informazioni sull’immagine di input utilizzata per questa ripresa. L’immagine può essere fornita come stringa base64 nel campo bytes o come URI Amazon S3 nel campo s3Location.

    Le immagini possono essere in formato PNG o JPEG e devono avere una dimensione di 8 bit per canale di colore (RGB). Le immagini PNG possono contenere un canale alfa aggiuntivo, che però non deve contenere pixel trasparenti o traslucidi. Al momento, il modello accetta solamente immagini di 1280 (larghezza) x 720 (altezza).

    Le immagini a partire da un bucket Amazon S3 non possono superare i 25 MB.

  • fps (obbligatorio): frequenza dei fotogrammi del video di output. Al momento, l’unico valore supportato è 24.

  • dimension (obbligatorio): larghezza e altezza del video di output. Al momento, l’unico valore supportato è “1280x720”.

  • seed (facoltativo): determina l’impostazione iniziale del rumore per il processo di generazione. Modificando il valore di seed e lasciando tutti gli altri parametri invariati, verrà prodotta un’immagine completamente nuova che rispetta comunque il prompt, le dimensioni e le altre impostazioni. È comune sperimentare con diversi valori di seed per trovare l’immagine perfetta.

    Il valore di seed iniziare deve essere compreso tra 0 e 2.147.483.646 e il valore predefinito è 42.

Il processo di generazione di video avrà come risultato la scrittura dei seguenti file nella destinazione Amazon S3 specificata:

  • manifest.json: un file scritto all’inizio del processo che contiene l’ID della richiesta.

  • video-generation-status.json: questo file viene scritto sia quando il processo va a buon fine, sia quando non riesce. Quando un processo non va a buon fine, conterrà informazioni dettagliate che spiegano esattamente quale parte del processo non è riuscita e quale operazione eseguire per correggere l’errore.

  • output.mp4: il video con più riprese completo. Viene scritto solo se il processo va a buon fine.

  • shot_N.mp4: ogni singola ripresa viene fornita anche come video a parte. Il nome del file segue il formato “shot_0001.mp4”, “shot_0002.mp4” e così via. Questi file vengono scritti solo se l’intero processo va a buon fine.

Controllare l’avanzamento dei processi di generazione di video

È possibile controllare l’avanzamento di un processo di generazione di video in due modi. Se disponi di un riferimento all’ARN di invocazione restituito al momento dell’avvio dell’invocazione, puoi utilizzare il metodo get_async_invoke() di Amazon Bedrock Runtime.

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

Lo stato di un processo sarà “Completed”, “InProgress” o “Failed”. Per ulteriori informazioni sull’utilizzo del metodo get_async_invoke(), consulta la documentazione di riferimento dell’API Async Invoke.

Se non disponi di un riferimento all’ARN di invocazione o se desideri controllare lo stato di più processi contemporaneamente, puoi utilizzare il metodo list_async_invokes() di Amazon Bedrock Runtime.

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

Per ulteriori informazioni sull’utilizzo del metodo list_async_invokes(), consulta la documentazione di riferimento dell’API Async Invoke.

Accedere ai risultati di un processo di generazione video

Una volta che un processo di generazione di video ha esito positivo o negativo, viene aggiunto un file JSON al bucket Amazon S3. Questo file contiene i metadati relativi alle riprese create per il video. Il file è denominato video-generation-status.json.

Per una richiesta di generazione video con esito positivo, il file contiene la posizione di ogni singola ripresa da cui è costituito il video completo. Per una richiesta di generazione video con esito negativo, il file contiene un messaggio di errore e dettagli aggiuntivi sul motivo dell’errore della ripresa.

Lo schema di questo file JSON è riportato di seguito.

{ "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 versione dello schema JSON.

  • shots: fornisce informazioni su ogni ripresa del video.

    • status: lo stato di completamento (SUCCESS o FAILURE) della ripresa.

    • location: il nome del file e la posizione Amazon S3 in cui è archiviata la ripresa. La posizione sarà disponibile solo quando tutte le riprese vengono generate correttamente e il video completo viene caricato nella posizione Amazon S3.

    • failureType: indica il motivo dell’errore.

    • failureMessage: fornisce ulteriori informazioni sul motivo dell’errore.

  • fullVideo: fornisce informazioni sul video completo.

    • status: lo stato di completamento (SUCCESS o FAILURE) del video completo.

    • location: il nome del file e la posizione Amazon S3 in cui è archiviato il video completo.

    • failureType: indica il motivo dell’errore.

    • failureMessage: fornisce ulteriori informazioni sul motivo dell’errore.

Possibili cause di errore e messaggi sono:

  • INTERNAL_SERVER_EXCEPTION: “Si è verificato un errore lato server”.

  • RAI_VIOLATION_OUTPUT_VIDEO_DEFLECTION: “Il contenuto generato è stato bloccato dai nostri filtri di contenuto”.

  • RATE_LIMIT_EXCEEDED: “È stato raggiunto il limite di capacità del server. Riprova più tardi”.

  • ABORTED: “La richiesta è stata interrotta”.