Introducción a la entrega de Amazon S3 - Amazon Kinesis Video Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción a la entrega de Amazon S3

Actualmente, los clientes utilizan y gestionan su propio proceso de transcodificación de imágenes para crear imágenes con diversos fines, como depurar, previsualizar imágenes, ejecutar modelos de aprendizaje automático en imágenes y mucho más. Kinesis Video Streams ofrece la capacidad de transcodificar y entregar las imágenes. Kinesis Video Streams extraerá automáticamente las imágenes de los datos de vídeo en tiempo real basándose en una etiqueta y las entregará a un bucket de S3 especificado por el cliente.

UpdateImageGenerationConfiguration

Para configurar una transmisión de vídeo de Kinesis para permitir la generación de imágenes en Amazon S3:
  1. Crea unCubeta S3para la generación de imágenes en función de las etiquetas añadidas en el SDK mediante la nueva API. Tenga en cuenta elTIPO S3, que se requiere en el siguiente paso, al actualizar las configuraciones de generación de imágenes para las transmisiones.

  2. Crea un archivo JSON llamadoupdate-image-generation-input.jsoncon el siguiente contenido como entrada.

{ "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 } }

Puede utilizar elAWS CLIpara invocar elUpdateImageGenerationConfigurationOperación de API para añadir el ARN de Amazon S3 creado anteriormente y cambiar el estado aENABLED.

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

Solicitud:

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

Respuesta:

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

Se tarda al menos 1 minuto en iniciar el flujo de trabajo de generación de imágenes después de actualizar la configuración de generación de imágenes. Espere al menos 1 minuto antes de invocarPutMediadespués de la llamada de actualización.

DescribeImageGenerationConfiguration

Para ver las configuraciones de generación de imágenes que ya están configuradas para una transmisión, los clientes pueden crear unDescribeImageGenerationConfigurationsolicitud, de la siguiente manera.

Solicitud:

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 }

Response: (Respuesta:)

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

Para obtener más información sobre elDescribeImageGenerationConfigurationfunción, consulteDescribeImageGenerationConfiguration en elGuía para desarrolladores de Amazon Kinesis Video Streams.

Etiquetas MKV del productor

Puede usar el SDK de Kinesis Video Streams Producer para etiquetar fragmentos específicos de interés exponiendo una operación de la API en el SDK. Para ver un ejemplo de etiqueta, consulteeste código. Al llamar a esta API, el SDK añadirá un conjunto de etiquetas MKV predefinidas junto con los datos del fragmento. Kinesis Video Streams reconocerá estas etiquetas MKV especiales e iniciará el flujo de trabajo de generación de imágenes en función de la configuración de procesamiento de imágenes de esa transmisión.

Todos los metadatos de fragmentos proporcionados junto con las etiquetas de generación de imágenes de Amazon S3 se guardarán como metadatos de Amazon S3.

Sintaxis de las etiquetas MKV de Producer

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

Agregar etiquetas de metadatos en el SDK de Producer mediantePutEventMetaData

ElPutEventMetaDatala función añade un archivo MKV que está asociado a un evento.PutEventMetaDatatoma dos parámetros. El primer parámetro es un evento cuyo valor proviene deSTREAM_EVENT_TYPEenumeración. El segundo parámetro,pStreamEventMetadata, es opcional y se puede utilizar para incluir metadatos adicionales como pares clave-valor. Hay un límite de cinco pares de metadatos clave-valor que se pueden añadir.

Límites

En la siguiente tabla se enumeran las limitaciones asociadas a las etiquetas de metadatos. Si el límite de etiquetas de metadatos es ajustable, puedes solicitar un aumento a través de tu administrador de cuentas.

Límite Valor máximo Ajustable

Longitud del prefijo de imagen

256

no

Longitud de clave de metadatos opcional

128

no

Longitud opcional del valor de los metadatos

256

no

Cantidad máxima de metadatos opcionales

10

Metadatos de objetos S3

De forma predeterminada, Kinesis Video Streams configurará lanúmero de fragmento,productora, ymarca de hora del servidorde la imagen generada como metadatos de objetos de Amazon S3. Si se especifica algún dato de fragmento adicional en las etiquetas MKV, esas etiquetas también se agregarán a los metadatos del objeto de Amazon S3. El siguiente ejemplo muestra la sintaxis correcta para los metadatos de objetos de 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, }

Ruta de objetos S3 (imagen)

La siguiente lista muestra el formato correcto de la ruta del objeto y describe cada elemento de la ruta.

Formato:

ImagePrefix_ID de cuenta_StreamName_ImageTimecode_ID aleatorio.extensión de archivo

1.ImagePrefix - Valor deAWS_KINESISVIDEO_IMAGE_PREFIX.

2.AccountID - ID de cuenta con el que se crea la transmisión.

3.StreamName - Nombre de la transmisión para la que se genera la imagen.

4.ImageTimecode - Código de tiempo de época en el fragmento en el que se genera la imagen.

5.RandomID - GUID aleatorio.

6.file-extension - JPG o PNG según el formato de imagen solicitado.

Recomendaciones de URI de Amazon S3 para protegerse contra la limitación

Si escribes miles de imágenes en Amazon S3, existe el riesgo de que se estrangulen. Para obtener más información, consulteLímites de solicitud de venta del prefijo S3.

Un prefijo de Amazon S3 comienza con un límite PUT de 3500 solicitudes PUT por segundo y aumentará gradualmente con el tiempo para los prefijos únicos. Evite utilizar fechas y horas como prefijos de Amazon S3. Los datos codificados por tiempo afectarán a un prefijo a la vez y también cambiarán con regularidad, lo que invalidará las ampliaciones de prefijos anteriores. Para permitir un escalado de Amazon S3 más rápido y coherente, recomendamos añadir un prefijo aleatorio, como un código hexadecimal o un UUID, al URI de destino de Amazon S3. Por ejemplo, los prefijos de código hexadecimal dividirán las solicitudes de forma aleatoria entre 16 prefijos diferentes (un prefijo para cada carácter hexadecimal único), lo que permitirá recibir 56 000 solicitudes PUT por segundo después de que Amazon S3 haya escalado automáticamente.