Esempio: Parsing e rendering dei frammenti di Kinesis Video Streams - 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à.

Esempio: Parsing e rendering dei frammenti di Kinesis Video Streams

LaLibreria parser del flussocontiene un'applicazione demo denominataKinesisVideoRendererExampleche dimostra l'analisi e il rendering di frammenti di flusso video Amazon Kinesis. L'esempio utilizza JCodec per decodificare i fotogrammi con codifica H.264 acquisiti tramite l'applicazione Esempio: Plugin Kinesis Video Streams Producer SDK GStreamer. In seguito alla decodifica del fotogramma tramite JCodec, viene effettuato il rendering dell'immagine visibile mediante JFrame.

In questo esempio viene mostrato come effettuare le operazioni seguenti:

  • Recuperare i fotogrammi da un flusso video Kinesis utilizzandoGetMediaAPI e rendering del flusso per la visualizzazione.

  • Visualizzare il contenuto video dei flussi in un'applicazione personalizzata anziché nella console Kinesis Video Streams.

Puoi inoltre utilizzare le classi riportate in questo esempio per visualizzare i contenuti del flusso video Kinesis che non dispongono della codifica H.264, ad esempio un flusso di file JPEG che non richiede la decodifica prima di essere visualizzato.

La procedura seguente illustra come configurare e utilizzare l'applicazione demo di Renderer.

Prerequisiti

Per esaminare e utilizzare la libreria di esempio di Renderer, occorre quanto segue:

Esecuzione dell'esempio di Renderer

  1. Creare una directory, quindi clonare il codice di origine di esempio dalGitHubrepository.

    $ git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library
  2. Aprire l'IDE Java in uso (ad esempio, Eclipse o IntelliJ IDEA) e importare il progetto Apache Maven scaricato:

    • In Eclipse: ScegliereFile,Importa,Maven,Progetti Maven esistenti. Passa alla directory kinesis-video-streams-parser-lib.

    • In IntelliJ Idea: Seleziona Import (Importa). Andare al file pom.xml nella radice del pacchetto scaricato.

      Nota

      Se IntelliJ non è in grado di trovare le dipendenze, potrebbe essere necessario eseguire quanto segue:

      • Pulizia della costruzione: ScegliereFile,Impostazioni,Compilazione, esecuzione, distribuzione,Compilatore. Verificare che Clear output directory on rebuild (Cancella directory di output alla ricompilazione) sia selezionato, quindi scegliere Build (Crea), Build Project (Crea progetto).

      • Reimportare il progetto: Aprire il menu contestuale (fare clic con il pulsante destro del mouse) del progetto e scegliereMaven,Reimportazione.

    Per ulteriori informazioni, consulta la documentazione IDE correlata.

  3. Dall'IDE Java, aprire src/test/java/com.amazonaws.kinesisvideo.parser/examples/KinesisVideoRendererExampleTest.

  4. Rimuovere la direttiva @Ignore dal file.

  5. Aggiornamento di.streamparametro con il nome del flusso video Kinesis.

  6. Eseguire il test KinesisVideoRendererExample.

Come funziona

Invio dei dati MKV

L'esempio invia dati MKV di esempio dalrendering_example_video.mkv, utilizzandoPutMediaper inviare dati video a un flusso denominatorender-example-stream.

L'applicazione crea un PutMediaWorker:

PutMediaWorker putMediaWorker = PutMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), inputStream, streamOps.amazonKinesisVideo); executorService.submit(putMediaWorker);

Per informazioni sulle classi PutMediaWorker, consulta Esegui una chiamata aPutMedia nella documentazione della Libreria parser del flusso.

Analisi dei frammenti MKV in fotogrammi

L'esempio quindi recupera e analizza i frammenti MKV dal flusso tramite un GetMediaWorker:

GetMediaWorker getMediaWorker = GetMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), new StartSelector().withStartSelectorType(StartSelectorType.EARLIEST), streamOps.amazonKinesisVideo, getMediaProcessingArgumentsLocal.getFrameVisitor()); executorService.submit(getMediaWorker);

Per ulteriori informazioni sulle classi GetMediaWorker, consulta Esegui una chiamata aGetMedia nella documentazione della Libreria parser del flusso.

Decodifica e visualizzazione del fotogramma

L'esempio quindi decodifica e visualizza il fotogramma tramite JFrame.

Il seguente esempio di codice è tratto dalla classe KinesisVideoFrameViewer, che estende JFrame:

public void setImage(BufferedImage bufferedImage) { image = bufferedImage; repaint(); }

L'immagine viene visualizzata come istanza dijava.awt.image.BufferedImage. Per esempi che illustrano come lavorare con BufferedImage, consulta la sezione relativa alla lettura/al caricamento di un'immagine.