Guida di base su S3 Delivery - Amazon Kinesis Video Streams

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Guida di base su S3 Delivery

Attualmente, i clienti eseguono e gestiscono la propria pipeline di transcodifica delle immagini per creare immagini per vari scopi come lo scrubbing, l'anteprima delle immagini, l'esecuzione di modelli ML sulle immagini, ecc. KVS Images è un servizio gestito che offre al cliente la possibilità di transcodificare e distribuire le immagini. KVS estrae automaticamente le immagini dai dati video in tempo reale in base a un tag e consegnerà le immagini a un bucket S3 specificato dal cliente.

Aggiorna la configurazione della generazione di immagini

Procedura per configurare i flussi KVS per abilitare la generazione di immagini su S3:

1. Creazione di unBucket S3per la generazione di immagini in base ai tag aggiunti nell'SDK utilizzando la nuova API (istruzioni di esempio di seguito). Nota:S3 URI, che è richiesto nella fase successiva, quando si aggiornano le configurazioni di generazione di immagini per i flussi.

2. Crea un file JSON denominatoupdate-image-generation-input.jsoncon il contenuto riportato di seguito come input:

{ "StreamName": "TestStream", "ImageGenerationConfiguration": { "Status": "ENABLED", "DestinationConfig": { "DestinationRegion": "us-east-1", "Uri": "s3://bucket-name" }, "SamplingInterval": 3000, "ImageSelectorType": "PRODUCER_TIMESTAMP", "Format": "JPEG", "FormatConfig": { "JPEGQuality": "80" }, "WidthPixels": 320, "HeightPixels": 240 } }

È possibile utilizzare la AWS CLI per richiamareUpdateImageGenerationConfigurationAPI per aggiungere l'ARN S3 creato sopra per lo stream e modificare lo stato inENABLED.

aws kinesisvideo update-image-generation-configuration \ --cli-input-json file://./update-image-generation-input.json \

Richiesta:

UpdateImageGenerationConfiguration HTTP/1.1 Method: 'POST' Path: '/updateImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed ImageGenerationConfiguration : { // required Status: 'Enum', // ENABLED | DISABLED, ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP.. DestinationConfig: { DestinationRegion: 'String', Uri: string, }, SamplingInterval: 'Number'// Format: 'Enum', // JPEG | PNG // Optional parameters FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', // 1 - 3840 (4k). HeightPixels: 'Number' // 1 - 2160 (4k). } }

Risposta:

HTTP/1.1 200 Content-type: application/json Body: { }
Nota

1. Ci vorrà almeno un minuto per attivare il flusso di lavoro di generazione dell'immagine dopo l'aggiornamento della configurazione di generazione dell'immagine. Aspetta almeno un minuto prima di invocarePutMediadopo la chiamata di aggiornamento.

2. L'intervallo minimo di campionamento è 3 secondi. Se hai bisogno di un intervallo di campionamento più breve, aumenta una richiesta di aumento limite tramite il supporto.

Descrivi la configurazione della generazione di immagini

Richiesta:

DescribeImageGenerationConfiguration HTTP/1.1 Method: 'POST' Path: '/describeImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed }

Risposta:

HTTP/1.1 200 Content-type: application/json Body: { ImageGenerationConfiguration : { Status: 'Enum', ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP DestinationConfig: { DestinationRegion: 'String' Uri: 'string', }, SamplingInterval: 'Number', Format: 'Enum', FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', HeightPixels: 'Number' } }

Per ulteriori informazioni suDescribeImageGenerationConfigurationfunzione, vedi ilDescribeImageGenerationConfigurationpagina nella guida di riferimento dell'API di Amazon Kinesis Video Streams.

Producer MKV Tags

L'SDK KVS Producer consentirà al cliente di taggare specifici frammenti di interesse esponendo un'API nell'SDK.qui. Dopo aver chiamato questa API, l'SDK aggiungerà un set di tag MKV predefiniti insieme ai dati del frammento. Kinesis Video Service riconoscerà questi tag MKV speciali e attiverà il flusso di lavoro di generazione delle immagini in base alla configurazione di elaborazione delle immagini di quel flusso.

Tutti i metadati di frammento forniti insieme ai tag di generazione di immagini S3 verranno salvati come metadati S3.

Sintassi

|+ Tags | + Tag | // MANDATORY: Predefined MKV tag to trigger image generation for the fragment | + Simple | + Name: AWS_KINESISVIDEO_IMAGE_GENERATION | // OPTIONAL: S3 prefix which will be set as prefix for generated image. | + Simple | + Name: AWS_KINESISVIDEO_IMAGE_PREFIX | + String: image_prefix_in_s3 // 256 bytes max m | // OPTIONAL: Key value pairs that will be persisted as S3 Image object metadata. | + Simple | + Name: CUSTOM_KEY_1 // Max 128 bytes | + String:CUSTOM_VALUE_1 // Max 256 bytes | + Simple | + Name: CUSTOM_KEY_2 // Max 128 bytes | + String: CUSTOM_VALUE_2 // Max 256 bytes

PutEventMetaData(Interfaccia in Producer SDK per l'aggiunta di metadati tag):

È possibile inviare ulteriori metadati come chiave, valori tramite ilPStreamEventMetadata.

Limiti

Limite Valore massimo Tipo di limite

Lunghezza prefisso immagine

256

difficile

Lunghezza chiave dei metadata opzionale

128

difficile

Lunghezza del valore dei metadata opzionale

256

difficile

Numero massimo di metadati opzionali

10

morbido

Metadata dell'oggetto S3

Per impostazione predefinita, KVS imposterà ilnumero di frammento,produttoreetimestamp del serverdell'immagine generata come metadati dell'oggetto S3. Se nei tag MKV vengono specificati dati di frammento aggiuntivi, tali tag verranno aggiunti anche ai metadati dell'oggetto S3.

{ // KVS S3 object metadata x-amz-meta-aws_kinesisvideo_fragment_number : 'string', x-amz-meta-aws_kinesisvideo_producer_timestamp: 'number', x-amz-meta-aws_kinesisvideo_server_timestamp: 'number', // Optional key value pair sent as part of the MKV tags custom_key_1: custom_value_1, custom_key_2: custom_value_2, }

Percorso oggetto S3 (immagine)

Format:

Prefisso immagine_ID account_StreamName_Codice temporale immagine_ID casuale.estensione file

1.ImagePrefix - Valore diAWS_KINESISVIDEO_IMAGE_PREFIX.

2.AccountID - ID account in base al quale viene creato lo stream.

3.StreamName - Nome dello stream per il quale viene generata l'immagine.

4.ImageTimecode - Codice temporale Epoch nel frammento in cui viene generata l'immagine.

5.RandomID - GUID casuale.

6.file-extension - JPG o PNG in base al formato immagine richiesto.

Raccomandazioni URI S3 per la protezione contro l'acceleratore

Per gli utenti che considerano di scrivere migliaia di immagini in S3, esiste una probabilità di limitazione indipendentemente dal fatto che siano presenti bucket uguali o diversi se le richieste PUT contano > 3,5 k/sec a causa della loroLimiti di richiesta di inserimento del prefisso S3

Un prefisso S3 inizia con un limite Put di 3500 Put al secondo e gradualmente aumenta nel tempo per prefissi unici. Evitare di utilizzare date e ore come prefissi S3. I dati temporali codificati influiscono su un prefisso alla volta e cambieranno regolarmente, invalidando i precedenti scalamenti del prefisso. Per abilitare il ridimensionamento S3 più veloce e coerente, prendi in considerazione l'aggiunta di un prefisso casuale, come un codice esadecimale o un UUID all'URI di destinazione S3. Ad esempio, i prefissi hexcode divideranno naturalmente le richieste in modo casuale tra 16 prefissi diversi (un prefisso per ogni carattere esadecimale univoco), il che consentirà 56.000 Puts al secondo dopo che S3 ha scalato automaticamente.