Modelo de datos de Kinesis Video Streams - 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.

Modelo de datos de Kinesis Video Streams

El Producer Libraries y el Stream Parser Library envían y reciben los datos de vídeo en un formato compatible con la integración de información junto a los datos de vídeo. Este formato se basa en la especificación Matroska (MKV).

El formato MKV es una especificación abierta para los datos de medios. Todas las bibliotecas y ejemplos de código de la Guía para desarrolladores de Amazon Kinesis Video Streams envían o reciben datos en formato MKV.

Bibliotecas para productores de Kinesis Video StreamsUtiliza los Frame tipos StreamDefinition y para producir encabezados de transmisiones MKV, encabezados de fotogramas y datos de fotogramas.

Para obtener información sobre la especificación completa de MKV, consulte Matroska Specifications.

En las siguientes secciones se describen los componentes de datos con formato MKV producidos por la C++ Producer Library.

Elementos de encabezado de transmisión

Los siguientes elementos de encabezado MKV los utiliza StreamDefinition (definidos en StreamDefinition.h).

Elemento Descripción Valores típicos
stream_name Corresponde al nombre de la transmisión de vídeo de Kinesis. my-stream
retention_period Kinesis Video Streams conserva la duración, en horas, de los datos de la transmisión. Especifique 0 una transmisión que no retenga datos. 24
tags colección clave-valor de datos de usuarios. Estos datos se muestra en la AWS Management Console y pueden leerlos las aplicaciones cliente para filtrar u obtener información sobre una transmisión.
kms_key_id Si está presente, la AWS KMS clave definida por el usuario se utiliza para cifrar los datos de la transmisión. Si no está presente, los datos se cifran con la clave proporcionada por Kinesis (). aws/kinesis-video 01234567-89ab-cdef-0123-456789ab
streaming_type Actualmente, el único tipo de streaming válido es STREAMING_TYPE_REALTIME. STREAMING_TYPE_REALTIME
content_type El tipo de contenido definido por el usuario. Para que los datos de streaming de vídeo se reproduzcan en la consola, el tipo de contenido debe ser video/h264. vídeo/h264
max_latency Este valor no se usa actualmente y debe establecerse en 0. 0
fragment_duration Este valor es una estimación de la duración recomendada de sus fragmentos y se utiliza con fines de optimización. La duración real del fragmento se determina mediante los datos de streaming. 2
timecode_scale

Indica la escala utilizada por las marcas de tiempo de los fotogramas. El valor predeterminado es 1 milisegundo. Si se especifica 0, se asigna también el valor predeterminado de 1 milisegundo. Este valor puede estar comprendido entre 100 nanosegundos y 1 segundo.

Para obtener más información, consulte la documentación TimecodeScalede Matroska.

key_frame_fragmentation Si se establece en true, la transmisión inicia un nuevo clúster cuando recibe un fotograma clave. true
frame_timecodes Sitrue, Kinesis Video Streams utiliza los valores de marca de tiempo de presentación (pts) y de marca de tiempo de decodificación (dts) de los fotogramas recibidos. Sifalse, Kinesis Video Streams estampa los fotogramas cuando se reciben con valores de tiempo generados por el sistema. true
absolute_fragment_time Si es true, los códigos temporales del clúster se interpretan como si se usara un tiempo absoluto (por ejemplo, el del reloj del sistema del productor). Si es false, los códigos temporales del clúster se interpretan como relativos a la hora de inicio de la transmisión. true
fragment_acks Sitrue, se envían acuses de recibo (ACK) cuando Kinesis Video Streams recibe los datos. Los ACK se pueden recibir mediante devoluciones de llamada de KinesisVideoStreamFragmentAck o KinesisVideoStreamParseFragmentAck. true
restart_on_error Indica si la transmisión debe reanudarse después de que se presente un error en la misma. true
nal_adaptation_flags Indica si los datos privados del códec o adaptación NAL (Network Abstraction Layer) están presentes en el contenido. Los indicadores válidos son NAL_ADAPTATION_ANNEXB_NALS y NAL_ADAPTATION_ANNEXB_CPD_NALS. NAL_ADAPTATION_ANNEXB_NALS
frame_rate Una estimación de la velocidad de fotogramas del contenido. Este valor se utiliza para la optimización; la velocidad de fotogramas real se determina en función de la velocidad de los datos entrantes. Si se especifica 0, se asigna el valor predeterminado de 24. 24
avg_bandwidth_bps Una estimación del ancho de banda del contenido, en Mbps. Este valor se utiliza para la optimización; la velocidad real se determina en función del ancho de banda de los datos entrantes. Por ejemplo, para una transmisión de vídeo con una resolución de 720p que se ejecute a 25 FPS, podría esperar un ancho de banda medio de 5 Mbps. 5
buffer_duration periodo que ha de almacenarse en búfer el contenido en el productor. Si la latencia de red es baja, este valor se puede reducir. Si la latencia de la red es alta, al aumentar este valor se evita que las tramas se descarten antes de que puedan enviarse, ya que la asignación no puede colocar las tramas en el búfer más pequeño.
replay_duration Cantidad de tiempo que se «rebobina» la transmisión de datos de vídeo si se pierde la conexión. Este valor puede ser cero si la pérdida de fotogramas debido a la pérdida de conexión no es motivo de preocupación. El valor se puede aumentar si la aplicación consumidora puede eliminar las tramas redundantes. Este valor debe ser inferior a la duración del búfer; de lo contrario, se utilizará la duración del búfer.
connection_staleness periodo que se mantiene una conexión cuando no se reciben datos.
codec_id El códec utilizado por el contenido. Para obtener más información, consulte CodecID en la especificación de Matroska. V_MPEG2
track_name El nombre de la pista definido por el usuario. my_track
codecPrivateData datos facilitados por el codificador empleado para descodificar los datos de los fotogramas, por ejemplo, la anchura y altura de los mismos en píxeles, ya que es una información necesaria para muchos consumidores a posteriori. En la C++ Producer Library, la matriz gMkvTrackVideoBits en MkvStatics.cpp incluye el ancho y el alto en píxeles del fotograma.
codecPrivateDataTamaño El tamaño de los datos en el parámetro codecPrivateData.
track_type El tipo de pista para el flujo. MKV_TRACK_INFO_TYPE_AUDIO o MKV_TRACK_INFO_TYPE_VIDEO
segment_uuid Uuid de segmento definido por el usuario (16 bytes).
default_track_id Número único distinto de cero de la pista. 1

Transmita los datos de las pistas

Los siguientes elementos de pista MKV los utiliza StreamDefinition (definidos en StreamDefinition.h).

Elemento Descripción Valores típicos
track_name Nombre de pista definido por el usuario. Por ejemplo, "audio" para la pista de audio. audio
codec_id ID del códec para la pista. Por ejemplo, "A_AAC" para una pista de audio. A_AAC
cpd Datos que proporciona el codificador usado para descodificar los datos del fotograma. Estos datos pueden incluir la anchura y la altura del fotograma en píxeles, lo cual es necesario para muchos consumidores a posteriori. En la biblioteca de productores de C++, la gMkvTrack VideoBits matriz de MkvStatics .cpp incluye el ancho y el alto de los píxeles del marco.
cpd_size El tamaño de los datos del parámetro. codecPrivateData
track_type El tipo de la pista. Por ejemplo, puede utilizar el valor de enumeración de MKV_TRACK_INFO_TYPE_AUDIO para el audio. MKV_TRACK_INFO_TYPE_AUDIO

Elementos de encabezado de fotogramas

Los siguientes elementos de encabezado MKV los utiliza Frame (definidos en el paquete KinesisVideoPic, en mkvgen/Include.h):

  • Frame Index: valor con aumento monotónico.

  • Flags: tipo de fotograma. Entre los valores válidos se incluyen los siguientes:

    • FRAME_FLAGS_NONE

    • FRAME_FLAG_KEY_FRAME: si key_frame_fragmentation está configurado en la transmisión, los fotogramas claves inician un nuevo fragmento.

    • FRAME_FLAG_DISCARDABLE_FRAME: indica al descodificador que puede descartar este fotograma si la descodificación es lenta.

    • FRAME_FLAG_INVISIBLE_FRAME: la duración de este bloque es 0.

  • Marca de tiempo de decodificación: la marca de tiempo del momento en que se decodificó este fotograma. Si los fotogramas anteriores dependen de este fotograma para la decodificación, esta marca de tiempo puede ser anterior a la de los fotogramas anteriores. Este valor es relativo al inicio del fragmento.

  • Marca de tiempo de presentación: marca de tiempo en la que se muestra este fotograma. Este valor es relativo al inicio del fragmento.

  • Duration: duración de reproducción del fotograma.

  • Size: tamaño en bytes de los datos del fotograma

Datos de fotogramas MKV

Los datos de frame.frameData podrían contener solamente datos multimedia del fotograma o también información anidada adicional de encabezados, en función del esquema de codificación empleado. Para mostrarse en elAWS Management Console, los datos deben estar codificados en el códec H.264, pero Kinesis Video Streams puede recibir flujos de datos serializados en el tiempo en cualquier formato.