Démarrez avec Amazon S3 Delivery - Amazon Kinesis Video Streams

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Démarrez avec Amazon S3 Delivery

Actuellement, les clients exécutent et gèrent leur propre pipeline de transcodage d'images pour créer des images à des fins diverses, telles que le nettoyage, l'aperçu des images, l'exécution de modèles ML sur des images, etc. Kinesis Video Streams permet de transcoder et de diffuser les images. Kinesis Video Streams extraira automatiquement des images à partir de données vidéo en temps réel en fonction d'une balise et les diffusera vers un compartiment S3 spécifié par le client.

UpdateImageGenerationConfiguration

Pour configurer un flux vidéo Kinesis afin de permettre la génération d'images vers Amazon S3 :
  1. Créez unSeau S3pour la génération d'images en fonction des balises ajoutées dans le SDK à l'aide de la nouvelle API. Notez leURI S3, ce qui est requis à l'étape suivante, lors de la mise à jour des configurations de génération d'images pour les flux.

  2. Créez un fichier JSON appeléupdate-image-generation-input.jsonavec le contenu suivant en entrée.

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

Vous pouvez utiliserAWS CLIpour invoquer leUpdateImageGenerationConfigurationOpération d'API pour ajouter l'ARN Amazon S3 créé précédemment et modifier le statut enENABLED.

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

Demande :

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

Réponse :

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

Il faut au moins 1 minute pour lancer le flux de travail de génération d'images après la mise à jour de la configuration de génération d'images. Patientez au moins 1 minute avant d'appelerPutMediaaprès l'appel de mise à jour.

DescribeImageGenerationConfiguration

Pour consulter les configurations de génération d'images déjà définies pour un flux, les clients peuvent créer unDescribeImageGenerationConfigurationdemande, comme suit.

Requête :

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 }

Réponse :

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

Pour en savoir plus surDescribeImageGenerationConfigurationfonctionnalité, voirDescribeImageGenerationConfiguration dans leGuide du développeur d'Amazon Kinesis Video Streams.

Tags Producer MKV

Vous pouvez utiliser le SDK Kinesis Video Streams Producer pour baliser des fragments d'intérêt spécifiques en exposant une opération d'API dans le SDK. Pour un exemple de balise, voirce code. Lors de l'appel de cette API, le SDK ajoutera un ensemble de balises MKV prédéfinies avec les données du fragment. Kinesis Video Streams reconnaîtra ces balises MKV spéciales et lancera le processus de génération d'images en fonction de la configuration de traitement d'image de ce flux.

Toutes les métadonnées de fragment fournies avec les balises de génération d'image Amazon S3 seront enregistrées en tant que métadonnées Amazon S3.

Syntaxe pour les balises Producer MKV

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

Ajouter des balises de métadonnées dans le SDK Producer à l'aide dePutEventMetaData

LePutEventMetaDataLa fonction ajoute un fichier MKV associé à un événement.PutEventMetaDataprend deux paramètres. Le premier paramètre est un événement dont la valeur provient duSTREAM_EVENT_TYPEenum. Le deuxième paramètre,pStreamEventMetadata, est facultatif et peut être utilisé pour inclure des métadonnées supplémentaires sous forme de paires clé-valeur. Il existe une limite de cinq paires clé-valeur de métadonnées pouvant être ajoutées.

Limites

Le tableau suivant répertorie les limites associées aux balises de métadonnées. Si la limite des balises de métadonnées est ajustable, vous pouvez demander une augmentation par l'intermédiaire de votre gestionnaire de compte.

Limite Valeur maximale Ajustable

Longueur du préfixe de l'image

256

non

Longueur de clé de métadonnées facultative

128

non

Longueur de la valeur de métadonnées facultative

256

non

Nombre maximum de métadonnées facultatives

10

oui

Métadonnées de l'objet S3

Par défaut, Kinesis Video Streams définira lenuméro de fragment,producteur, ethorodatage du serveurde l'image générée en tant que métadonnées d'objet Amazon S3. Si des données de fragment supplémentaires sont spécifiées dans les balises MKV, ces balises seront également ajoutées aux métadonnées de l'objet Amazon S3. L'exemple suivant montre la syntaxe correcte pour les métadonnées de l'objet Amazon 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, }

Chemin d'accès à l'objet S3 (image)

La liste suivante indique le format correct du chemin de l'objet et décrit chaque élément du chemin.

Format :

ImagePrefix_ID de compte_StreamName_ImageTimecode_ID aléatoire.extension de fichier

1.ImagePrefix - Valeur deAWS_KINESISVIDEO_IMAGE_PREFIX.

2.AccountID - ID du compte sous lequel le stream est créé.

3.StreamName - Nom du flux pour lequel l'image est générée.

4.ImageTimecode - Code temporel de l'époque dans le fragment auquel l'image est générée.

5.RandomID - GUID aléatoire.

6.file-extension - JPG ou PNG en fonction du format d'image demandé.

Recommandations relatives à l'URI Amazon S3 pour se protéger contre la limitation

Si vous écrivez des milliers d'images sur Amazon S3, il existe un risque de limitation. Pour plus d'informations, voirLimites de demande de saisie du préfixe S3.

Un préfixe Amazon S3 commence par une limite PUT de 3 500 requêtes PUT par seconde et augmentera progressivement au fil du temps pour les préfixes uniques. Évitez d'utiliser des dates et des heures comme préfixes Amazon S3. Les données codées dans le temps auront un impact sur un préfixe à la fois et changeront également régulièrement, invalidant ainsi les précédentes mises à niveau des préfixes. Pour permettre une mise à l'échelle plus rapide et cohérente d'Amazon S3, nous vous recommandons d'ajouter un préfixe aléatoire, tel qu'un code hexadécimal ou un UUID, à l'URI de destination Amazon S3. Par exemple, les préfixes de code hexadécimal répartiront naturellement vos demandes de manière aléatoire entre 16 préfixes différents (un préfixe pour chaque caractère hexadécimal unique), ce qui permettra de traiter 56 000 requêtes PUT par seconde après la mise à l'échelle automatique d'Amazon S3.