Estructuras de transmisión de vídeo de Kinesis - 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.

Estructuras de transmisión de vídeo de Kinesis

Puede utilizar las siguientes estructuras para proporcionar datos a una instancia de una transmisión de vídeo de Kinesis.

StreamDefinition/StreamInfo

El objeto StreamDefinition en la capa de C++ envuelve el objeto StreamInfo en el código independiente de plataforma y proporciona algunos valores predeterminados en el constructor.

Campos de miembros

Campo Tipo de datos Descripción Valor predeterminado
stream_name string Nombre de secuencia opcional. Para obtener más información acerca de la longitud del nombre de secuencia, consulte SDKCuotas de productor. Cada secuencia debe tener un nombre único. Si no se especifica ningún nombre, se genera uno de forma aleatoria.
retention_period duration<uint64_t, ratio<3600>> El periodo de retención de la secuencia, en segundos. Especificar 0 indica que no hay ninguna retención. 3600 (una hora)
etiquetas const map<string, string>* Un mapa de pares clave/valor que contiene información de usuario. Si la secuencia ya tiene un conjunto de etiquetas, las nuevas etiquetas se añaden al conjunto de etiquetas existente. No hay etiquetas
kms_key_id string La AWS KMS ID de clave que se utilizará para cifrar la transmisión. Para obtener más información, consulte Protección de datos en Kinesis Video Streams. La KMS clave predeterminada (aws/kinesis-video.)
streaming_type Enumeración de STREAMING_TYPE El único valor admitido es STREAMING_TYPE_REALTIME.
content_type string El formato del contenido de la secuencia. La consola Kinesis Video Streams puede reproducir contenido en este formatovideo/h264. video/h264
max_latency duration<uint64_t, milli> La latencia máxima en milisegundos de la secuencia. La devolución de llamada de presión de latencia de secuencia (si se ha especificado) se invoca cuando se supera la duración del búfer este tiempo. Especificar 0 indica que no se invocará ninguna devolución de llamada de presión de latencia de transmisión. milliseconds::zero()
fragment_duration duration<uint64_t> La duración del fragmento que desea, en segundos. Este valor se utiliza en combinación con el valor key_frame_fragmentation. Si este valor esfalse, Kinesis Video Streams genera fragmentos en un fotograma clave una vez transcurrido este tiempo. Por ejemplo, una transmisión de audio de codificación de audio avanzada (AAC) tiene cada fotograma como fotograma clave. Si se especifica key_frame_fragmentation = false, la fragmentación se realiza en un fotograma clave después de que expire este tiempo, lo que generará fragmentos de 2 segundos. 2
timecode_scale duration<uint64_t, milli> La escala del MKV código de tiempo en milisegundos, que especifica la granularidad de los códigos de tiempo de los fotogramas del clúster. MKV El código MKV de tiempo del fotograma siempre es relativo al inicio del clúster. MKVutiliza un valor de 16 bits con signo (0-32767) para representar el código de tiempo del clúster (fragmento). Compruebe que el código de tiempo del fotograma se pueda representar con la escala de código de tiempo dada. El valor de escala de código de tiempo predeterminado de 1 ms garantiza que el marco mayor que se puede representar sea 32767 ms ~= 32 segundos. Esto supera la duración de fragmento máxima que se especifica en Cuotas de servicio de Amazon Kinesis Video Streams, que es 10 segundos. 1
key_frame_fragmentation bool Si se producen fragmentos en un fotograma clave. Sitrue, SDK produce un inicio del fragmento cada vez que hay un fotograma clave. Sifalse, Kinesis Video Streams espera fragment_duration al menos y produce un nuevo fragmento en el fotograma clave que le sigue. true
frame_timecodes bool Si se utilizan códigos de tiempo de fotograma o se generan marcas de tiempo utilizando la devolución de llamada de tiempo actual. Muchos codificadores no producen marcas temporales con los fotogramas. Por lo tanto, false la especificación de este parámetro garantiza que los fotogramas tengan una marca de tiempo a medida que se colocan en Kinesis Video Streams. true
absolute_fragment_times bool Kinesis Video Streams MKV utiliza como mecanismo de empaquetado subyacente. La MKV especificación es estricta en cuanto a que los códigos de tiempo de los fotogramas están relacionados con el principio del clúster (fragmento). Sin embargo, los códigos de tiempo del clúster pueden ser absolutos o relativos a la hora de inicio para la transmisión. Si las marcas de tiempo son relativas, la API llamada de PutMedia servicio utiliza la marca de tiempo de inicio de la transmisión opcional y ajusta las marcas de tiempo del clúster. El servicio siempre almacena los fragmentos con sus marcas de tiempo absolutas. true
fragment_acks bool Si se va a recibir un fragmento a nivel de aplicación (confirmaciones). ACKs true, lo que significa que SDK recibirá el mensaje ACKs y actuará en consecuencia.
restart_on_error bool Si se reinicia ante errores específicos. true, lo que significa que SDK intenta reiniciar la transmisión si se produce algún error.
recalculate_metrics bool Si se vuelven a calcular las métricas. Cada llamada para recuperar las métricas permite volver a calcularlas para obtener el último valor «actualizado», lo que podría tener un pequeño CPU impacto. Es posible que tengas que configurarlo false en dispositivos con un consumo de energía y un tamaño extremadamente bajos para ahorrar ciclos. CPU De lo contrario, no recomendamos usarlo false para este valor. true
nal_adaptation_flags uint32_t

Especifica los indicadores de adaptación de la unidad (NALU) de la capa de abstracción de la red. Si el flujo de bits está codificado en H.264, puede procesarse sin procesar o empaquetarse. NALUs Están en el formato del anexo B o en el formato. AVCC La mayoría de los productores y consumidores de transmisiones elementales (codificadores y decodificadores de lectura) utilizan el formato del anexo B porque presenta ventajas, como la recuperación de errores. Los sistemas de nivel superior utilizan el AVCC formato, que es el formato predeterminado paraMPEG,,HLS, etc. DASH La reproducción de la consola utiliza las extensiones de fuente multimedia del MSE navegador para decodificar y reproducir la transmisión que utiliza ese formato. AVCC Para H.264 (y para M- JPEG y H.265), SDK proporciona capacidades de adaptación.

Muchas secuencias elementales se encuentran en el siguiente formato. En este ejemplo, Ab es el código de inicio de Anexo B (001 o 0001).

Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)

En el caso del H.264, los datos privados del códec (CPD) se encuentran en los parámetros SPS (conjunto de parámetros de secuencia) y PPS (conjunto de parámetros de imagen) y se pueden adaptar al formato. AVCC A menos que el canal multimedia los proporcione CPD por separado, la aplicación puede CPD extraerlos del marco. Para ello, puede buscar el primer IDR marco (que debe contener la letra SPS yPPS), extraer los dos NALUs (que estánAb(Sps)Ab(Pps)) y colocarlo CPD en el campoStreamDefinition.

Para obtener más información, consulte Referencia del indicador de adaptación de la capa de abstracción de red (NAL).

De forma predeterminada, se adapta el formato del anexo B al AVCC formato tanto de los datos del marco como de los datos privados del códec.
frame_rate uint32_t La velocidad de fotogramas prevista. Este valor se utiliza para calcular mejor las necesidades de búfer. 25
avg_bandwidth_bps uint32_t El ancho de banda medio previsto para la secuencia. Este valor se utiliza para calcular mejor las necesidades de búfer. 4 * 1024 * 1024
buffer_duration duration<uint64_t> La duración del búfer de la secuencia, en segundos. SDKMantiene los marcos en el almacén de contenido hasta elbuffer_duration, después de lo cual los marcos anteriores se eliminan a medida que la ventana avanza. Si el fotograma que se está descartando no se ha enviado al servidor, se invoca la llamada callback del fotograma eliminado. Si la duración del búfer actual es mayor que max_latency, se invoca la devolución de llamada de presión de latencia de la secuencia. El búfer se recorta hasta el siguiente inicio del fragmento cuando se recibe el fragmento persistenteACK. Esto indica que el contenido se ha almacenado de forma persistente y duradera en la nube, por lo que ya no es necesario almacenar el contenido en el dispositivo local. 120
replay_duration duration<uint64_t> El tiempo, en segundos, que se tarda en girar el lector actual hacia atrás para volver a reproducirlo en caso de error si está activado el reinicio. La reversión se detiene al inicio del búfer (en caso de que acabe de empezar a reproducirse o haya aparecido la versión persistente). ACK La restauración intenta ir a un fotograma clave que indique un inicio de fragmento. Si el error que provoca el reinicio no indica que el host esté inactivo (el host sigue activo y contiene los datos del fotograma en sus búferes internos), la reversión se detiene en el último fotograma recibido. ACK A continuación, avanza al siguiente fotograma clave, ya que todo el fragmento está almacenado en la memoria del host. 40
connection_staleness duration<uint64_t> El tiempo, expresado en segundos, tras el cual se devuelve la señal de inactividad de la transmisión si SDK no recibe el almacenamiento en búfer. ACK Indica que los fotogramas se envían desde el dispositivo, pero el backend no los reconoce. Esta condición indica un corte de conexión en el salto intermedio o en el balanceador de carga. 30
codec_id string El identificador del códec de la MKV pista. V_MPEG4/ISO/AVC
track_name string El nombre de la MKV pista. kinesis_video
codecPrivateData unsigned char* El búfer de datos privados (CPD) del códec. Si la canalización multimedia tiene la información sobre CPD antes de que comience la transmisión, se puede configurar. StreamDefinition.codecPrivateData Los bits copiados y el búfer se pueden volver a utilizar o liberar después de la llamada para crear la secuencia. Sin embargo, si los datos no están disponibles cuando se crea la transmisión, se pueden configurar en una de las sobrecargas de la KinesisVideoStream.start(cpd) función. null
codecPrivateDataTamaño uint32_t El tamaño del búfer de datos privados de códec. 0

ClientMetrics

El ClientMetricsobjeto se llena al llamargetKinesisVideoMetrics.

Campos de miembros

Campo Tipo de datos Descripción
versión UINT32 La versión de la estructura, definida en la macro CLIENT_METRICS_CURRENT_VERSION.
contentStoreSize UINT64 El tamaño del almacén de contenido general en bytes. Este es el valor especificado en DeviceInfo.StorageInfo.storageSize.
contentStoreAvailableTamaño UINT64 Tamaño de almacenamiento disponible actual en bytes.
contentStoreAllocatedTamaño UINT64 Tamaño asignado actual. Los tamaños asignado más disponible deben ser ligeramente más pequeños que el tamaño de almacenamiento general, debido a los datos la contabilidad interna y la implementación del almacén de contenido.
totalContentViewsTamaño UINT64 El tamaño de la memoria asignada para todas las vistas de contenido para todas las secuencias. Esto no se tiene en cuenta para el tamaño de almacenamiento. Esta memoria se asigna mediante la macro MEMALLOC, que se puede sobrescribir para proporcionar un asignador personalizado.
totalFrameRate UINT64 La velocidad de fotograma total observada en todas las secuencias.
totalTransferRate UINT64 La velocidad total de la secuencia observada en bytes por segundo en todas las secuencias.

StreamMetrics

El StreamMetricsobjeto se llena al llamargetKinesisVideoMetrics.

Campos de miembros

Campo Tipo de datos Descripción
versión UINT32 La versión de la estructura, definida en la macro STREAM_METRICS_CURRENT_VERSION.
currentViewDuration UINT64 La duración de los fotogramas acumulados. En el caso de una red rápida, esta duración es cero o la duración de la trama (a medida que se transmite la trama). Si la duración es superior a la max_latency especificada enStreamDefinition, se invoca la llamada de retorno de latencia de la transmisión si así se especifica. La duración se especifica en unidades de 100 ns, que es la unidad de tiempo predeterminada para la PIC capa.
overallViewDuration UINT64 La duración de vista general. Si la transmisión se configura con ausencia ACKs o persistencia, este valor aumenta a medida que se colocan los fotogramas en la transmisión de vídeo de Kinesis y pasa a ser igual al buffer_duration de. StreamDefinition Cuando ACKs están activados y se recibe el persistenteACK, el búfer se recorta hasta el siguiente fotograma clave. Esto se debe a que la ACK marca de tiempo indica el principio de todo el fragmento. La duración se especifica en unidades de 100 ns, que es la unidad de tiempo predeterminada para la capa. PIC
currentViewSize UINT64 El tamaño en bytes del búfer actual.
overallViewSize UINT64 El tamaño general de vista en bytes.
currentFrameRate UINT64 La velocidad de fotogramas observada para la secuencia actual.
currentTransferRate UINT64 La velocidad de transferencia observada en bytes por segundo para la secuencia actual.