Estructuras de SDK Producer - Amazon Kinesis Video Streams

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Estructuras de SDK Producer

Esta sección incluye información sobre estructuras que puede utilizar para proporcionar datos al objeto Producer de Transmisión de vídeo de Kinesis.

DeviceInfo/ DefaultDeviceInfoProvider

Los objetos DeviceInfo y DefaultDeviceInfoProvider controlan el comportamiento del objeto Producer de Transmisión de vídeo de Kinesis.

Campos de miembro

  • version: un valor de número entero utilizado para garantizar que se utiliza 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.

  • name: el nombre en lenguaje natural del dispositivo.

  • tagCount/ tags: en la actualidad no se utiliza.

  • streamCount: el número máximo de secuencias que el dispositivo puede gestionar. 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 Transmisión de vídeo de Kinesis.

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, se recomienda agregar más memoria para almacenamiento para evitar una seria fragmentación.

Asegúrese de que el tamaño de almacenamiento sea suficiente para que se adapte a los búferes completos para todas las secuencias con un alto nivel de complejidad de codificación (cuando el tamaño de fotograma es mayor debido al elevado movimiento) o cuando el ancho de banda es bajo. Si el productor genera presión de memoria, emite devoluciones de llamada de presión de desbordamiento de almacenamiento (StorageOverflowPressureFunc). Sin embargo, cuando no hay memoria disponible en el almacén de contenido, elimina el fotograma que se envía a Transmisión de vídeo de Kinesis con un error (STATUS_STORE_OUT_OF_MEMORY = 0x5200002e). Para obtener más información, consulte Códigos de estado y error devueltos por la biblioteca Client. Esto también puede ocurrir si los reconocimientos (ACK) de la aplicación no están disponibles o se han retrasado los ACK almacenados de forma persistente. En este caso, se rellenan los búferes hasta la capacidad de "duración del búfer" antes de que los fotogramas más antiguos comienzan a desecharse.

Campos de miembro

  • version: un valor de número entero utilizado para garantizar que se utiliza la versión correcta de la estructura con la versión actual del código base.

  • storageType: una enumeración de DEVICE_STORAGE_TYPE que especifica el respaldo/implementación subyacente 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 de almacenamiento en bytes para asignar previamente. 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 de número entero que representa el porcentaje del almacenamiento que se debe asignar desde el tipo de almacenamiento de memoria directa (RAM), en oposición al almacenamiento de desbordamiento secundario (almacenamiento de archivos). En la actualidad no se utiliza.

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