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,
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án 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. |