Estructuras de productores SDK - 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 productores SDK

En esta sección se incluye información sobre las estructuras que puede utilizar para proporcionar datos al objeto Producer de Kinesis Video Streams.

DeviceInfo/DefaultDeviceInfoProvider

Los DefaultDeviceInfoProviderobjetos DeviceInfoy controlan el comportamiento del objeto Producer de Kinesis Video Streams.

Campos miembros

  • versión: valor entero que se utiliza para garantizar que se utilice la versión correcta de la estructura con la versión actual del código base. La versión actual se especifica utilizando la macro DEVICE_INFO_CURRENT_VERSION.

  • nombre: el nombre legible para las personas del dispositivo.

  • tagCount/tags: no se utiliza actualmente.

  • streamCount— El número máximo de transmisiones que puede gestionar el dispositivo. Este asigna previamente el almacenamiento de punteros a los objetos de secuencia inicialmente, pero los objetos de secuencia reales se crean posteriormente. El valor predeterminado es 16 secuencias, pero puede cambiar este número en el archivo DefaultDeviceInfoProvider.cpp.

  • storageInfo: un objeto que describe la configuración de almacenamiento principal. Para obtener más información, consulte StorageInfo.

StorageInfo

Especifica la configuración del almacenamiento principal de Kinesis Video Streams.

La implementación predeterminada se basa en una implementación en montón rápida de baja fragmentación, optimizada para streaming. Utiliza el asignador MEMALLOC, que se puede sobrescribir en una plataforma determinada. Algunas plataformas disponen de asignación de memoria virtual sin contar con la asignación con páginas físicas. A medida que se utiliza la memoria, las páginas virtuales están respaldadas por las páginas físicas. Esto da como resultado una presión de memoria baja en el sistema general cuando el almacenamiento está infrautilizado.

Calcule el tamaño de almacenamiento predeterminado con la siguiente fórmula. El parámetro DefragmentationFactor debe estar establecido en 1,2 (20 por ciento).

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

En el siguiente ejemplo, un dispositivo tiene secuencias de audio y vídeo. La secuencia de audio tiene 512 muestras por segundo, con una muestra media de 100 bytes. La transmisión de vídeo tiene 25 fotogramas por segundo, con un promedio de 10 000 bytes. Cada transmisión tiene 3 minutos de duración del búfer.

Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.

Si el dispositivo tiene más memoria disponible, le recomendamos que añada más memoria al almacenamiento para evitar una fragmentación grave.

Compruebe que el tamaño de almacenamiento es adecuado para alojar todos los búferes de todas las transmisiones con una alta complejidad de codificación (cuando el tamaño del fotograma es mayor debido a un movimiento elevado) o cuando el ancho de banda es bajo. Si el productor alcanza la presión de memoria, emite llamadas de retorno () debido a la presión de desbordamiento del almacenamiento. StorageOverflowPressureFunc Sin embargo, cuando no hay memoria disponible en el almacén de contenido, se descarta el fotograma que se está insertando en Kinesis Video Streams con un error STATUS_STORE_OUT_OF_MEMORY = 0x5200002e (). Para obtener más información, consulte Códigos de error y estado devueltos por la biblioteca cliente. Esto también puede ocurrir si los acuses de recibo de la aplicación (ACKs) no están disponibles o si los pendientes se retrasan. ACKs En este caso, los búferes se llenan hasta alcanzar la capacidad de «duración del búfer» antes de que comiencen a agotarse los fotogramas anteriores.

Campos de miembros

  • versión: valor entero que se utiliza para garantizar que se utilice la versión correcta de la estructura con la versión actual del código base.

  • storageType— Una DEVICE_STORAGE_TYPE enumeración que especifica el respaldo y la implementación subyacentes del almacenamiento. Actualmente el único valor admitido es DEVICE_STORAGE_TYPE_IN_MEM. Una próxima implementación admitirá DEVICE_STORAGE_TYPE_HYBRID_FILE, lo que indica que el almacenamiento utiliza el almacén de contenido con respaldo de archivos.

  • storageSize— El tamaño del almacenamiento en bytes que se va a preasignar. La asignación mínima permitida es de 10 MB; y la máxima es de 10 GB. (Esto cambiará con la implementación futura del almacén de contenido respaldado por archivos).

  • spillRatio— Un valor entero que representa el porcentaje del almacenamiento que se va a asignar desde el tipo de almacenamiento de memoria directo (RAM), a diferencia del almacenamiento adicional secundario (almacenamiento de archivos). En la actualidad no se utiliza.

  • rootDirectory: la ruta al directorio en el que se encuentra el almacén de contenido respaldado por archivos. En la actualidad no se utiliza.