Strutture dell'SDK producer - Amazon Kinesis Video Streams

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Strutture dell'SDK producer

Questa sezione include informazioni sulle strutture utilizzabili per fornire i dati all'oggetto Kinesis Video Streams Producer.

DeviceInfo/DefaultDeviceInfoProvider

LaDeviceInfoeDefaultDeviceInfoProvidergli oggetti controllano il comportamento dell'oggetto Kinesis Video Streams Producer.

Campi dei membri

  • versione: Un valore intero utilizzato per verificare che la versione corretta della struttura venga utilizzata con la versione corrente del codebase. La versione corrente viene specificata con la macro DEVICE_INFO_CURRENT_VERSION.

  • nome: Il nome leggibile del dispositivo.

  • Conteggio tag/tag: Attualmente non utilizzato.

  • streamCount: Il numero massimo di flussi che il dispositivo è in grado di gestire. Questo campo effettua inizialmente la pre-allocazione dello storage per i puntatori verso gli oggetti di flusso, ma gli oggetti di flusso effettivi vengono creati in un secondo momento. Il valore predefinito è 16 flussi, ma questo valore può essere modificato nel file DefaultDeviceInfoProvider.cpp.

  • storageInfo: Un oggetto che descrive la configurazione principale dello storage. Per ulteriori informazioni, consulta la pagina StorageInfo .

StorageInfo

Specifica la configurazione dello storage principale per Kinesis Video Streams.

L'implementazione predefinita si basa su un'implementazione di heap rapida a bassa frammentazione, ottimizzata per lo streaming. Utilizza l'allocatore MEMALLOC, che è possibile sovrascrivere su determinate piattaforme. Alcune piattaforme dispongono di un'allocazione di memoria virtuale senza il supporto dell'allocazione con pagine fisiche. Man mano che la memoria viene utilizzata, le pagine virtuali vengono supportate dalle pagine fisiche. Di conseguenza, quando lo storage è sottoutilizzato, la memoria viene utilizzata in modo ridotto in tutto il sistema.

Calcolare la dimensione predefinita dello storage in base alla seguente formula. DefragmentationFactor deve essere impostato su 1.2 (20%).

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

Nell'esempio seguente, un dispositivo dispone di flussi video e audio. Il flusso audio contiene 512 campioni al secondo, con una media di campionamento di 100 byte. Il flusso video è composto da 25 fotogrammi al secondo, con una media di campionamento di 10.000 byte. Ogni flusso ha 3 minuti di durata di buffer.

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

Se sul dispositivo è disponibile una quantità più elevata di memoria, è consigliabile aggiungere ulteriore memoria allo storage, per evitare una grave frammentazione.

Assicurarsi che la dimensione di storage sia sufficiente per contenere i buffer completi di tutti i flussi a elevata complessità di codifica (quando la dimensione dei fotogrammi è più elevata a causa di un elevato movimento) o nei momenti in cui la larghezza di banda è ridotta. Se il producer causa un utilizzo elevato della memoria, emetterà dei callback di utilizzo di overflow dello storage (StorageOverflowPressureFunc). Tuttavia, se nello store dei contenuti non è presente memoria disponibile, cancellerà il fotogramma inviato in Kinesis Video Streams con un errore (STATUS_STORE_OUT_OF_MEMORY = 0x5200002e). Per ulteriori informazioni, consulta la pagina Codici di errore e stato restituiti dalla libreria Client . Ciò può verificarsi anche se le ACK dell'applicazione non sono disponibili o se le ACK persistenti vengono ritardate. In questo caso i buffer raggiungeranno la capacità di "durata del buffer" prima che i fotogrammi meno recenti inizino a essere eliminati.

Campi dei membri

  • versione: Un valore intero utilizzato per verificare che la versione corretta della struttura venga utilizzata con la versione corrente del codebase.

  • StorageType: UNDEVICE_STORAGE_TYPEenumerazione che specifica il supporto/l'implementazione sottostante dello storage. Attualmente, l'unico valore supportato è DEVICE_STORAGE_TYPE_IN_MEM. DEVICE_STORAGE_TYPE_HYBRID_FILE sarà supportato in un'implementazione futura per indicare che lo storage utilizza lo store dei contenuti supportato da file.

  • storageSize: Dimensioni dello storage in byte da pre-allocare. L'allocazione minima è 10 MB, mentre quella massima è 10 GB (questo valore cambierà nell'implementazione futura dello store dei contenuti supportato da file).

  • spillRatio: un valore intero che rappresenta la percentuale di storage da allocare dal tipo di storage di memoria diretto (RAM), rispetto allo storage di overflow secondario (storage di file). Attualmente non utilizzato.

  • RootDirectory: Il percorso alla directory in cui è si trova lo store dei contenuti supportato da file. Attualmente non utilizzato.