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 à la demande (GetImages) : API permet aux clients d'extraire une ou plusieurs images d'une vidéo stockée dans Kinesis Video Streams.
Génération d'images automatisée (livraison Amazon S3)- Configurez Kinesis Video Streams pour extraire automatiquement les images des données vidéo en temps réel en fonction des balises figurant dans une vidéo mise en ligne, et pour diffuser les images dans le compartiment S3 spécifié par le client.
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.
Rubriques
- UpdateImageGenerationConfiguration
- DescribeImageGenerationConfiguration
- MKVTags du producteur
- Ajoutez des balises de métadonnées dans le producteur à SDK l'aide de PutEventMetaData
- Limites
- Métadonnées de l'objet S3
- Chemin d'accès à l'objet Amazon S3 (image)
- URIRecommandations d'Amazon S3 pour se protéger contre le ralentissement
UpdateImageGenerationConfiguration
Pour configurer un flux vidéo Kinesis afin de permettre la génération d'images vers Amazon S3 :
-
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.
-
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
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. PutEventMetaData
prend 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
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.