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:
-
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.
-
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 elUpdateImageGenerationConfiguration
Operació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 invocarPutMedia
despué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 unDescribeImageGenerationConfiguration
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 }
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 elDescribeImageGenerationConfiguration
funció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
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
ElPutEventMetaData
la función añade un archivo MKV que está asociado a un evento.PutEventMetaData
toma dos parámetros. El primer parámetro es un evento cuyo valor proviene deSTREAM_EVENT_TYPE
enumeración. El segundo parámetro,pStreamEventMetadata
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 |
sí |
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.