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 dei produttori SDK
Questa sezione include informazioni sulle strutture che è possibile utilizzare per fornire dati all'oggetto Kinesis Video Streams Producer.
DeviceInfo/DefaultDeviceInfoProvider
DefaultDeviceInfoProviderGli oggetti DeviceInfoand controllano il comportamento dell'oggetto Kinesis Video Streams Producer.
Campi membri
-
versione: un valore intero utilizzato per assicurarsi che la versione corretta della struttura venga utilizzata con la versione corrente del codice base. La versione corrente viene specificata con la macro
DEVICE_INFO_CURRENT_VERSION
. -
name: il nome leggibile dall'uomo per il dispositivo.
-
tagCount/tags: attualmente non utilizzato.
-
streamCount— Il numero massimo di stream che il dispositivo può 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 di archiviazione principale. Per ulteriori informazioni, consulta 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 il dispositivo ha più memoria disponibile, ti consigliamo di aggiungere altra memoria allo storage per evitare una grave frammentazione.
Verificate che le dimensioni di archiviazione siano adeguate a contenere tutti i buffer per tutti i flussi a elevata complessità di codifica (quando la dimensione del frame è maggiore a causa dell'elevato movimento) o quando la larghezza di banda è ridotta. Se il produttore raggiunge la pressione della memoria, emette callback della pressione di overflow dello storage (). StorageOverflowPressureFunc
Tuttavia, quando non è disponibile alcuna memoria nell'archivio dei contenuti, il frame che viene inviato a Kinesis Video Streams viene eliminato con un errore (). STATUS_STORE_OUT_OF_MEMORY =
0x5200002e
Per ulteriori informazioni, consulta Codici di errore e di stato restituiti dalla libreria client. Ciò può verificarsi anche se i riconoscimenti dell'applicazione (ACKs) non sono disponibili o se quelli persistenti vengono ritardati. ACKs In questo caso, i buffer raggiungono la capacità di «durata del buffer» prima che i frame precedenti inizino a cadere.
Campi per i membri
-
versione: un valore intero utilizzato per assicurarsi che la versione corretta della struttura venga utilizzata con la versione corrente del codice base.
-
storageType— Un'
DEVICE_STORAGE_TYPE
enumerazione che specifica il supporto e l'implementazione sottostanti 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— La dimensione di archiviazione in byte da preallocare. 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 archiviazione da allocare dal tipo di archiviazione diretta in memoria (RAM), rispetto allo storage secondario con overflow (archiviazione di file). Attualmente non utilizzato.
-
rootDirectory: il percorso della directory in cui si trova l'archivio dei contenuti supportati da file. Attualmente non utilizzato.