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 :
-
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.
-
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 leUpdateImageGenerationConfiguration
Opé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'appelerPutMedia
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 créer unDescribeImageGenerationConfiguration
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 surDescribeImageGenerationConfiguration
fonctionnalité, 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
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
LePutEventMetaData
La fonction ajoute un fichier MKV associé à un événement.PutEventMetaData
prend deux paramètres. Le premier paramètre est un événement dont la valeur provient duSTREAM_EVENT_TYPE
enum. Le deuxième paramètre,pStreamEventMetadata
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.