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 flussi video Kinesis
È possibile utilizzare le seguenti strutture per fornire dati a un'istanza di un flusso video Kinesis.
StreamDefinition/StreamInfo
L'oggetto StreamDefinition
nel livello C++ racchiude l'oggetto StreamInfo
nel Platform Independent Code (PIC) e fornisce alcuni valori predefiniti nel costruttore.
Campi membri
Campo | Tipo di dati | Descrizione | Valore predefinito |
---|---|---|---|
stream_name | string |
Nome di flusso facoltativo. Consulta Quote di produzione SDK per ulteriori informazioni sulla lunghezza del nome del flusso. Ogni flusso deve avere un nome univoco. | Se non viene specificato alcun nome, ne verrà generato uno casualmente. |
retention_period | duration<uint64_t,
ratio<3600>> |
Il periodo di conservazione del flusso in secondi. La specifica di 0 indica nessuna conservazione. |
3600 (un'ora) |
tags | const map<string, string>*
|
Una mappa di coppie chiave-valore contenente informazioni sugli utenti. Se il flusso dispone già un set di tag, i nuovi tag verranno aggiunti al set di tag esistente. | Nessun tag |
kms_key_id | string |
Il AWS KMS ID chiave da utilizzare per crittografare lo stream. Per ulteriori informazioni, consulta Protezione dei dati in Kinesis Video Streams. | La KMS chiave predefinita (aws/kinesis-video .) |
streaming_type | Enumerazione STREAMING_TYPE |
L'unico valore supportato è STREAMING_TYPE_REALTIME . |
|
content_type | string |
Il formato del contenuto del flusso. La console Kinesis Video Streams è in grado di riprodurre contenuti video/h264 in questo formato. |
video/h264 |
max_latency | duration<uint64_t, milli> |
La latenza massima del flusso in millisecondi. Il callback di utilizzo della latenza del flusso (se specificato) verrà richiamato se la durata del buffer supera questo intervallo di tempo. Un valore 0 indica che non verrà richiamato nessun callback di utilizzo della latenza del flusso. |
milliseconds::zero() |
fragment_duration | duration<uint64_t> |
La durata del frammento desiderata, in secondi. Tale valore viene utilizzato in combinazione con il valore key_frame_fragmentation . Se questo valore èfalse , Kinesis Video Streams genera frammenti su un fotogramma chiave allo scadere di tale periodo. Ad esempio, un flusso audio Advanced Audio Coding (AAC) ha ogni frame come frame chiave. Se viene specificato il valore key_frame_fragmentation = false , la frammentazione verrà effettuata su un fotogramma chiave in seguito a questa durata, generando frammenti di 2 secondi. |
2 |
timecode_scale | duration<uint64_t, milli> |
La scala del MKV codice temporale in millisecondi, che specifica la granularità dei codici temporali per i frame all'interno del cluster. MKV Il timecode del MKV frame è sempre relativo all'inizio del cluster. MKVutilizza un valore firmato a 16 bit (0-32767) per rappresentare il codice di tempo all'interno del cluster (frammento). Verificate che il codice di tempo del frame possa essere rappresentato con la scala del codice di tempo specificata. Il valore di scala predefinito del timecode di 1 ms assicura che il fotogramma di maggiori dimensioni che può essere rappresentato sia pari a 32767 ms ~ = 32 secondi. Questo valore è superiore alla durata massima del frammento specificata in Quote del servizio Amazon Kinesis Video Streams, pari a 10 secondi. | 1 |
key_frame_fragmentation | bool |
Per scegliere se creare frammenti su un fotogramma chiave. Setrue , SDK produce un inizio del frammento ogni volta che è presente un frame chiave. Sefalse , Kinesis Video Streams attende fragment_duration almeno e produce un nuovo frammento sul fotogramma chiave successivo. |
true |
frame_timecodes | bool |
Per scegliere se utilizzare i timecode del fotogramma o generare timestamp tramite il callback dell'ora corrente. Molti codificatori non creano timestamp con i fotogrammi. Quindi, specificando false questo parametro, si assicura che i fotogrammi abbiano il timestamp quando vengono inseriti in Kinesis Video Streams. |
true |
absolute_fragment_times | bool |
Kinesis Video MKV Streams utilizza come meccanismo di packaging di base. Le MKV specifiche sono rigorose in merito al fatto che i timecode dei frame siano relativi all'inizio del cluster (frammento). ma i timecode del cluster possono essere assoluti o relativi all'ora di inizio del flusso. Se i timestamp sono relativi, la API chiamata di PutMedia servizio utilizza il timestamp di inizio dello stream opzionale e regola i timestamp del cluster. Il servizio archivia sempre i frammenti con i relativi timestamp assoluti. |
true |
fragment_acks | bool |
Se ricevere un frammento (riconoscimenti) a livello di applicazione. ACKs | true , il che significa che SDK riceveranno ACKs e agiranno di conseguenza. |
restart_on_error | bool |
Per scegliere se riavviare in seguito a errori specifici. | true , il che significa che SDK tenta di riavviare lo streaming in caso di errori. |
recalculate_metrics | bool |
Per scegliere se calcolare nuovamente i parametri. Ogni chiamata per recuperare le metriche può ricalcolarle per ottenere il valore «corrente» più recente, il che potrebbe avere un impatto minimo. CPU Potrebbe essere necessario impostarlo false su dispositivi con consumi e ingombro estremamente ridotti per risparmiare i cicli. CPU Altrimenti, non è consigliabile false utilizzarlo per questo valore. |
true |
nal_adaptation_flags | uint32_t |
Specifica i flag di adattamento Network Abstraction Layer unit (NALU). Se il bitstream è codificato in H.264, può essere elaborato in formato raw o impacchettato. NALUs Questi sono nell'allegato B o nel formato. AVCC La maggior parte dei produttori e consumatori di stream elementari (codificatori e decodificatori di lettura) utilizza il formato Annex-B perché presenta vantaggi, come il recupero degli errori. I sistemi di livello superiore utilizzano il AVCC formato, che è il formato predefinito perMPEG, e così via. HLS DASH La riproduzione su console utilizza le estensioni del browser MSE (sorgenti multimediali) per decodificare e riprodurre lo stream che utilizza il formato. AVCC Per H.264 (e per M- JPEG e H.265), offre funzionalità di adattamento. SDK Molti flussi semplici sono nel formato seguente. In questo esempio,
Nel caso di H.264, i dati privati del codec (CPD) rientrano nei parametri SPS (set di parametri di sequenza) e PPS (set di parametri dell'immagine) e possono essere adattati al formato. AVCC A meno che la pipeline multimediale non li fornisca CPD separatamente, l'applicazione può estrarli CPD dal frame. Può farlo cercando il primo IDR fotogramma (che dovrebbe contenere il carattere SPS ePPS), estrarre i due NALUs (che sono Per ulteriori informazioni, consulta Riferimento al flag di adattamento Network Abstraction Layer (NAL). |
L'impostazione predefinita consiste nell'adattare il formato Annex-B al AVCC formato sia per i dati del frame che per i dati privati del codec. |
frame_rate | uint32_t |
La frequenza fotogrammi prevista. Tale valore viene utilizzato per calcolare meglio le esigenze di buffering. | 25 |
avg_bandwidth_bps | uint32_t |
La larghezza di banda media prevista del flusso. Tale valore viene utilizzato per calcolare meglio le esigenze di buffering. | 4 * 1024 * 1024 |
buffer_duration | duration<uint64_t> |
La durata del buffer del flusso in secondi. SDKMantiene i frame nell'archivio dei contenuti per un massimo dibuffer_duration , dopodiché i frame precedenti vengono eliminati man mano che la finestra avanza. Se il frame che viene eliminato non è stato inviato al backend, viene chiamato il callback del frame eliminato. Se la durata del buffer corrente è maggiore di max_latency , viene richiamato il callback di utilizzo della latenza del flusso. Il buffer viene ridotto all'inizio del frammento successivo quando viene ricevuto il frammento persistente. ACK per indicare che i contenuti sono stati resi persistenti in modo durevole nel cloud e che quindi non è più necessario archiviare i contenuti sul dispositivo locale. |
120 |
replay_duration | duration<uint64_t> |
Durata, in secondi, necessaria per riportare il lettore corrente all'indietro per riprodurlo durante un errore, se il riavvio è abilitato. Il rollback si interrompe all'avvio del buffer (nel caso in cui sia appena iniziato lo streaming o sia arrivato il persistente). ACK Il rollback tenta di raggiungere un fotogramma chiave che indica l'inizio di un frammento. Se l'errore che causa il riavvio non è indicativo di un host morto (l'host è ancora attivo e contiene i dati del frame nei suoi buffer interni), il rollback si interrompe all'ultimo frame ricevuto. ACK e verrà spostato al fotogramma chiave successivo, poiché l'intero frammento è già memorizzato nella memoria dell'host. | 40 |
connection_staleness | duration<uint64_t> |
Il tempo, in secondi, dopo il quale viene chiamato lo stream staleness callback se SDK non riceve il buffering. ACK Indica che i frame vengono inviati dal dispositivo, ma il backend non li riconosce. indicativo di una connessione interrotta nel passaggio intermedio o sul sistema di bilanciamento del carico. | 30 |
codec_id | string |
L'ID del codec per la traccia. MKV | V_MPEG4/ISO/AVC |
track_name | string |
Il nome del MKV brano. | kinesis_video |
codecPrivateData | unsigned char* |
Il buffer dei dati privati del codec (CPD). Se la pipeline multimediale contiene le informazioni relative a CPD prima dell'inizio dello streaming, può essere impostata. StreamDefinition.codecPrivateData I bit vengono copiati e il buffer può essere riutilizzato o liberato in seguito alla chiamata per la creazione del flusso. Tuttavia, se i dati non sono disponibili al momento della creazione dello stream, possono essere impostati in uno degli overload della KinesisVideoStream.start(cpd) funzione. |
null |
codecPrivateDataDimensioni | uint32_t |
La dimensione del buffer dei dati privati del codec. | 0 |
ClientMetrics
L'ClientMetricsoggetto viene riempito chiamandogetKinesisVideoMetrics
.
Campi membri
Campo | Tipo di dati | Descrizione |
---|---|---|
versione | UINT32 |
La versione della struttura, definita nella macro CLIENT_METRICS_CURRENT_VERSION . |
contentStoreSize | UINT64 |
La dimensione totale dello store dei contenuti in byte. Si tratta del valore specificato in DeviceInfo.StorageInfo.storageSize . |
contentStoreAvailableDimensioni | UINT64 |
Dimensione di archiviazione attualmente disponibile in byte. |
contentStoreAllocatedDimensioni | UINT64 |
Dimensione attualmente allocata. La dimensione allocata e quella disponibile devono essere leggermente inferiori alla dimensione totale di storage, per via della contabilità interna e dell'implementazione dello store dei contenuti. |
totalContentViewsDimensioni | UINT64 |
La dimensione della memoria allocata per tutte le visualizzazioni dei contenuti per tutti i flussi. Questo valore non viene conteggiato nella dimensione dello spazio di archiviazione. Questa memoria viene allocata tramite la macro MEMALLOC , che è possibile sovrascrivere per fornire un allocatore personalizzato. |
totalFrameRate | UINT64 |
La frequenza fotogrammi totale osservata su tutti i flussi. |
totalTransferRate | UINT64 |
La velocità di streaming totale osservata in byte al secondo su tutti i flussi. |
StreamMetrics
L'StreamMetricsoggetto viene riempito chiamandogetKinesisVideoMetrics
.
Campi membri
Campo | Tipo di dati | Descrizione |
---|---|---|
versione | UINT32 |
La versione della struttura, definita nella macro STREAM_METRICS_CURRENT_VERSION . |
currentViewDuration | UINT64 |
La durata dei fotogrammi accumulati. Nel caso di una rete veloce, questa durata è pari a zero o alla durata del frame (mentre il frame viene trasmesso). Se la durata diventa più lunga di quella max_latency specificata inStreamDefinition , viene chiamata la richiamata della latenza del flusso, se specificata. La durata è specificata in 100 unità ns, che è l'unità di tempo predefinita per il PIC livello. |
overallViewDuration | UINT64 |
La durata di visualizzazione generale. Se lo stream è configurato con no ACKs o persistenza, questo valore aumenta man mano che i frame vengono inseriti nel flusso video Kinesis e diventa uguale a quello buffer_duration in. StreamDefinition Quando ACKs sono abilitati e il messaggio persistente ACK viene ricevuto, il buffer viene ridotto al keyframe successivo. Questo perché il ACK timestamp indica l'inizio dell'intero frammento. La durata è specificata in unità di 100 ns, che è l'unità di tempo predefinita per il layer. PIC |
currentViewSize | UINT64 |
La dimensione in byte del buffer corrente. |
overallViewSize | UINT64 |
La dimensione totale della visualizzazione in byte. |
currentFrameRate | UINT64 |
La frequenza fotogramma osservata del flusso corrente. |
currentTransferRate | UINT64 |
La velocità di trasferimento osservata in byte al secondo del flusso corrente. |