Extraire des images à partir de flux vidéo - 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.

Extraire des images à partir de flux vidéo

Vous pouvez utiliser Amazon Kinesis Video APIs Streams SDKs pour vous aider à extraire des images de vos flux vidéo. Vous pouvez utiliser ces images pour des applications de lecture améliorées telles que les vignettes ou le nettoyage amélioré, ou pour les utiliser dans des pipelines d'apprentissage automatique. Kinesis Video Streams permet l'extraction d'images à la demande par le biais API d'une extraction automatique d'images à partir des balises de métadonnées d'une vidéo ingérée.

Pour plus d'informations sur l'utilisation du support géré par Kinesis Video Streams pour les images, voir :

Génération d'images automatisée (livraison Amazon S3)

Actuellement, les clients exécutent et gèrent leur propre pipeline de transcodage d'images pour créer des images à diverses fins, telles que le nettoyage, la prévisualisation d'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 extrait automatiquement les images des données vidéo en temps réel en fonction d'une balise, et les diffuse dans 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 un compartiment S3 pour la génération d'images en fonction des balises ajoutées à l'SDKaide du nouveauAPI. Notez le S3 URI, 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 JSON fichier appelé update-image-generation-input.json avec 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 utiliser le AWS CLI pour appeler l'UpdateImageGenerationConfigurationAPIopération visant à ajouter l'Amazon S3 ARN 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

Le lancement du flux de production d'images prend au moins 1 minute après la mise à jour de la configuration de génération d'images. Attendez au moins 1 minute avant d'appeler PutMedia aprè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 faire une DescribeImageGenerationConfiguration demande, 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 sur DescribeImageGenerationConfiguration cette fonctionnalité, consultez DescribeImageGenerationConfiguration le guide du développeur Amazon Kinesis Video Streams.

MKVTags du producteur

Vous pouvez utiliser le SDK producteur Kinesis Video Streams pour baliser des fragments spécifiques présentant un intérêt en exposant API une opération dans leSDK. Pour un exemple de balise, consultez ce code. Lors de l'appelAPI, un ensemble de MKV balises prédéfinies SDK sera ajouté aux données du fragment. Kinesis Video Streams reconnaîtra ces balises MKV spéciales et lancera le flux de production 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'images Amazon S3 seront enregistrées en tant que métadonnées Amazon S3.

Syntaxe pour les MKV tags du producteur

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

Ajoutez des balises de métadonnées dans le producteur à SDK l'aide de PutEventMetaData

La PutEventMetaData fonction ajoute un MKV fichier associé à un événement. PutEventMetaDataprend deux paramètres. Le premier paramètre est un événement dont la valeur provient de l'STREAM_EVENT_TYPEénumération. Le second paramètre est facultatif et peut être utilisé pour inclure des métadonnées supplémentaires sous forme de paires clé-valeur. pStreamEventMetadata Il est possible d'ajouter une limite de cinq paires clé-valeur de métadonnées.

Limites

Le tableau suivant répertorie les limites associées aux balises de métadonnées. Si la limite de balises de métadonnées est ajustable, vous pouvez demander une augmentation auprès de votre responsable 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 valeur des 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éfinit le numéro du fragment, le producteur et l'horodatage du serveur de l'image générée sous forme de métadonnées d'objet Amazon S3. Si des données de fragment supplémentaires sont spécifiées dans les MKV balises, 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 des objets 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 Amazon S3 (image)

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

Format :

ImagePrefix_AccountID_StreamName_ImageTimecode_RandomID.file-extension

1. ImagePrefix - Valeur deAWS_KINESISVIDEO_IMAGE_PREFIX.

2.AccountID - Identifiant 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 d'époque dans le fragment dans lequel l'image est générée.

5. RandomID - AléatoireGUID.

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

URIRecommandations d'Amazon S3 pour se protéger contre le ralentissement

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

Un préfixe Amazon S3 commence par une PUT limite de 3 500 PUT demandes par seconde, puis 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 à code temporel auront un impact sur un préfixe à la fois et changeront également régulièrement, invalidant ainsi les précédentes mises à l'échelle des préfixes. Pour permettre un dimensionnement Amazon S3 plus rapide et cohérent, nous vous recommandons d'ajouter un préfixe aléatoire, tel qu'un code hexadécimal ou UUID à la destination Amazon S3. URI 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 demandes par PUT seconde une fois Amazon S3 redimensionné automatiquement.