Utilizzo dei metadati di streaming con Kinesis Video Streams - Flusso di video Amazon Kinesis

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à.

Utilizzo dei metadati di streaming con Kinesis Video Streams

Puoi utilizzare l'SDK Amazon Kinesis Video Streams Producer per incorporare i metadati a livello di singolo frammento in un flusso video Kinesis. I metadati in Kinesis Video Streams sono una coppia chiave-valore mutabile. Puoi utilizzarla per descrivere il contenuto del frammento, incorporare le letture dei sensori associate che devono essere trasferite insieme al frammento effettivo o soddisfare altre esigenze personalizzate. I metadati sono disponibili come parte delle operazioni delle API GetMedia o GetMediaForFragmentList. Viene archiviato insieme ai frammenti per l'intera durata del periodo di conservazione dello stream. Le applicazioni che consumano possono leggere, elaborare e reagire in base ai metadati utilizzando il. Libreria di analisi dei flussi video Kinesis

Esistono due modalità in cui i metadati possono essere incorporati con i frammenti in un flusso:

  • Non persistente: puoi applicare i metadati una tantum o ad hoc ai frammenti di un flusso, in base a criteri aziendali specifici che si sono verificati. Un esempio è una videocamera intelligente che rileva il movimento e aggiunge metadati ai frammenti corrispondenti che contengono il movimento prima di inviarli al relativo flusso video Kinesis. Puoi applicare i metadati al frammento nel formato seguente: Motion = true.

  • Persistente: puoi aggiungere metadati a frammenti successivi e consecutivi in un flusso in base a un'esigenza continua. Un esempio è una videocamera intelligente che invia le coordinate correnti di latitudine e longitudine associate a tutti i frammenti che invia al flusso video Kinesis. Puoi applicare i metadati a tutti i frammenti nel formato seguente: Lat = 47.608013N , Long = -122.335167W.

Puoi applicare i metadati in entrambe queste modalità allo stesso frammento contemporaneamente in base alle esigenze dell'applicazione. I metadati incorporati potrebbero includere oggetti rilevati, attività tracciate, coordinate GPS o altri dati personalizzati che vuoi associare ai frammenti nel flusso. I metadati sono codificati come coppie di stringhe chiave-valore.

Aggiungere metadati a un flusso video Kinesis

I metadati aggiunti a uno stream video Kinesis sono modellati come tag MKV, che vengono implementati come coppie chiave-valore.

I metadati possono essere transitori, ad esempio per contrassegnare un evento all'interno del flusso, o persistenti, ad esempio per identificare frammenti in cui si verifica un determinato evento. Un elemento di metadati persistente rimane e viene applicato a ogni frammento consecutivo finché non viene annullato.

Nota

Gli elementi metadati aggiunti utilizzando le Producer Library differiscono dalle API di tag a livello di flusso implementato con TagStream, UntagStream e ListTagsForStream.

API per lo streaming di metadati

Puoi utilizzare le seguenti operazioni in Producer SDK per implementare lo streaming dei metadati.

PIC

PUBLIC_API STATUS putKinesisVideoFragmentMetadata(STREAM_HANDLE streamHandle, PCHAR name, PCHAR value, BOOL persistent);

C++ Producer SDK

/** * Appends a "tag" or metadata - a key/value string pair into the stream. */ bool putFragmentMetadata(const std::string& name, const std::string& value, bool persistent = true);

Java Producer SDK

Puoi utilizzare Java Producer SDK per aggiungere metadati a un utilizzando: MediaSource MediaSourceSink.onCodecPrivateData

void onFragmentMetadata(final @Nonnull String metadataName, final @Nonnull String metadataValue, final boolean persistent) throws KinesisVideoException;

Metadati persistenti e non persistenti

Per i metadati non persistenti, puoi aggiungere più elementi metadati con lo stesso nome. Producer SDK raccoglie gli elementi metadati nella coda finché non vengono anteposti al successivo frammento. La coda dei metadati viene cancellata quando gli elementi metadati vengono applicati al flusso. Per ripetere i metadati, chiama di nuovo putKinesisVideoFragmentMetadata o putFragmentMetadata.

Per i metadati persistenti, Producer SDK raccoglie gli elementi metadati nella coda come per i metadati non persistenti. Tuttavia, gli elementi di metadati non vengono rimossi dalla coda quando vengono aggiunti al frammento successivo.

La chiamata putKinesisVideoFragmentMetadata o putFragmentMetadata con persistent impostato su true ha il seguente comportamento:

  • La chiamata dell'API inserisce l'elemento metadati nella coda. I metadati vengono aggiunti come tag MKV per ogni frammento mentre l'elemento è in coda.

  • Se si chiama l'API con lo stesso nome e un valore diverso come elemento metadati aggiunto in precedenza, l'elemento viene sovrascritto.

  • Se si chiama l'API con un valore vuoto, l'elemento metadati viene rimosso (annullato) dalla coda dei metadati.

Utilizzo dei metadati incorporati in un flusso video Kinesis

Per utilizzare i metadati in un flusso video Kinesis, utilizza un'implementazione di: MkvTagProcessor

public interface MkvTagProcessor { default void process(MkvTag mkvTag, Optional<FragmentMetadata> currentFragmentMetadata) { throw new NotImplementedException("Default FragmentMetadataVisitor.MkvTagProcessor"); } default void clear() { throw new NotImplementedException("Default FragmentMetadataVisitor.MkvTagProcessor"); } } }

Questa interfaccia si trova nella classe FragmentMetadataVisitor nella Libreria di analisi dei flussi video Kinesis.

La classe FragmentMetadataVisitor contiene un'implementazione di MkvTagProcessor:

public static final class BasicMkvTagProcessor implements FragmentMetadataVisitor.MkvTagProcessor { @Getter private List<MkvTag> tags = new ArrayList<>(); @Override public void process(MkvTag mkvTag, Optional<FragmentMetadata> currentFragmentMetadata) { tags.add(mkvTag); } @Override public void clear() { tags.clear(); } }

La classe KinesisVideoRendererExample contiene un esempio di come usare un BasicMkvTagProcessor. Nel seguente esempio, un BasicMkvTagProcessor viene aggiunto a MediaProcessingArguments di un'applicazione:

if (renderFragmentMetadata) { getMediaProcessingArguments = KinesisVideoRendererExample.GetMediaProcessingArguments.create( Optional.of(new FragmentMetadataVisitor.BasicMkvTagProcessor()));

Il metodo BasicMkvTagProcessor.process viene chiamato quando arrivano i metadati del frammento. Puoi recuperare i metadati accumulati con GetTags. Per recuperare un singolo elemento di metadati, prima chiama clear per cancellare i metadati raccolti, quindi recupera nuovamente gli elementi di metadati.

Limiti dei metadati di streaming

Quote di metadati per frammentiPer ulteriori informazioni sui limiti che si applicano all'aggiunta di metadati di streaming a un flusso video Kinesis, consulta