Extrae imágenes de transmisiones de vídeo - 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.

Extrae imágenes de transmisiones de vídeo

Puede utilizar Amazon Kinesis Video APIs Streams SDKs para ayudarle a extraer imágenes de sus transmisiones de vídeo. Puede utilizar estas imágenes para aplicaciones de reproducción mejoradas, como miniaturas o depuración mejorada, o para utilizarlas en procesos de aprendizaje automático. Kinesis Video Streams ofrece la extracción de imágenes bajo demanda mediante API una extracción automática de imágenes a partir de etiquetas de metadatos de un vídeo ingerido.

Para obtener información sobre el uso del soporte gestionado de Kinesis Video Streams para imágenes, consulte:

Generación automática de imágenes (entrega en Amazon S3)

En la actualidad, los clientes ejecutan y administran su propio proceso de transcodificación de imágenes para crear imágenes con diversos fines, como la limpieza, la vista previa de imágenes, la ejecución de modelos de aprendizaje automático en las imágenes, etc. Kinesis Video Streams ofrece la capacidad de transcodificar y entregar las imágenes. Kinesis Video Streams extraerá automáticamente imágenes de los datos de vídeo en tiempo real en función de una etiqueta y entregará las imágenes a un bucket de S3 especificado por el cliente.

UpdateImageGenerationConfiguration

Para configurar una transmisión de vídeo de Kinesis que permita la generación de imágenes en Amazon S3:
  1. Cree un bucket de S3 para la generación de imágenes en función de las etiquetas añadidas al SDK utilizar el nuevoAPI. Tenga en cuenta el S3 URI, que es obligatorio en el siguiente paso, al actualizar las configuraciones de generación de imágenes para las transmisiones.

  2. Cree un JSON archivo llamado update-image-generation-input.json con 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 el AWS CLI para invocar la UpdateImageGenerationConfigurationAPIoperación de añadir el Amazon S3 ARN 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

Tras actualizar la configuración de generación de imágenes, se tarda al menos 1 minuto en iniciar el flujo de trabajo de generación de imágenes. Espere al menos 1 minuto antes de realizar la PutMedia 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 realizar una DescribeImageGenerationConfiguration solicitud 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 }

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 la DescribeImageGenerationConfiguration función, consulte DescribeImageGenerationConfiguration la Guía para desarrolladores de Amazon Kinesis Video Streams.

Etiquetas de productor MKV

Puede utilizar el SDK productor de Kinesis Video Streams para etiquetar fragmentos específicos de interés exponiendo API una operación en elSDK. Para ver un ejemplo de etiqueta, consulte este código. Al llamarlaAPI, SDK añadirá un conjunto de MKV etiquetas 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 MKV etiquetas de productor

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

Agregue etiquetas de metadatos en Producer SDK usando PutEventMetaData

La PutEventMetaData función añade un MKV archivo asociado a un evento. PutEventMetaDatatoma dos parámetros. El primer parámetro es un evento cuyo valor proviene de la STREAM_EVENT_TYPE enumeración. El segundo parámetro, pStreamEventMetadata, es opcional y se puede usar 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 la imagen

256

no

Longitud de la clave de metadatos opcional

128

no

Longitud del valor de los metadatos opcional

256

no

Número máximo de metadatos opcionales

10

yes

Metadatos de objetos S3

De forma predeterminada, Kinesis Video Streams establecerá el número de fragmento, el productor y la marca de tiempo del servidor de la imagen generada como metadatos de objetos de Amazon S3. Si se especifica algún fragmento de datos adicional en las MKV etiquetas, esas etiquetas también se añadirán a los metadatos del objeto de Amazon S3. El siguiente ejemplo muestra la sintaxis correcta de los metadatos del objeto 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 de Amazon S3 (imagen)

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

Formato:

ImagePrefix_AccountID_StreamName_ImageTimecode_RandomID.file-extension

1. ImagePrefix - Valor deAWS_KINESISVIDEO_IMAGE_PREFIX.

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

3. StreamName - Nombre del flujo para el 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 - AleatorioGUID.

6. file-extension - JPG o PNG en función del formato de imagen solicitado.

URIRecomendaciones de Amazon S3 para protegerse contra la limitación

Si escribe miles de imágenes en Amazon S3, existe el riesgo de que se produzcan estrangulamientos. Para obtener más información, consulte Límites de solicitudes de venta de prefijos en S3.

Un prefijo de Amazon S3 comienza con un PUT límite de 3500 PUT solicitudes por segundo y se irá incrementando gradualmente con el tiempo para prefijos únicos. Evite usar fechas y horas como prefijos de Amazon S3. Los datos codificados con el tiempo afectarán a los prefijos de uno en uno 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 uniforme, recomendamos añadir un prefijo aleatorio, como un código hexadecimal, o UUID al destino URI de Amazon S3. Por ejemplo, los prefijos de código hexadecimal dividirán las solicitudes de forma aleatoria de forma natural entre 16 prefijos diferentes (un prefijo para cada carácter hexadecimal único), lo que permitirá recibir 56 000 PUT solicitudes por segundo después de que Amazon S3 haya escalado automáticamente.