View a markdown version of this page

Ejemplo: analizar y renderizar fragmentos de Kinesis Video Streams - Amazon Kinesis Video Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplo: analizar y renderizar fragmentos de Kinesis Video Streams

Transmita usando la biblioteca de analizadoresContiene una aplicación de demostración denominada KinesisVideoRendererExample que muestra cómo analizar y renderizar fragmentos de transmisiones de vídeo de Amazon Kinesis. El ejemplo usa JCodec para decodificar los fotogramas H.264 codificados que se ingieren con la aplicación. Ejemplo: el complemento GStreamer del SDK para productores de Kinesis Video Streams: kvssink Después de que el fotograma se descodifique usando JCodec, la imagen visible se representa mediante JFrame.

Este ejemplo le muestra cómo hacer lo siguiente:

  • Recupere fotogramas de una transmisión de vídeo de Kinesis mediante la GetMedia API y renderice la transmisión para su visualización.

  • Vea el contenido de vídeo de las transmisiones en una aplicación personalizada en lugar de utilizar la consola de Kinesis Video Streams.

También puede usar las clases de este ejemplo para ver el contenido de las transmisiones de vídeo de Kinesis que no esté codificado de esa manera H.264, como una transmisión de archivos JPEG que no requieren decodificación antes de mostrarse.

El siguiente procedimiento demuestra cómo configurar y utilizar la aplicación de demostración Renderer.

Requisitos previos

Para examinar y utilizar la biblioteca de ejemplos de Renderer, debe tener lo siguiente:

Ejecutando el ejemplo del renderizador

  1. Cree un directorio y, a continuación, clone el código fuente del ejemplo desde el GitHub repositorio.

    git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library
  2. Abra el IDE de Java que utilice (por ejemplo, Eclipse o IntelliJ IDEA) e importe el proyecto de Apache Maven que ha descargado:

    • En Eclipse: seleccione File, Import, Maven, Existing Maven Projects. Vaya al directorio kinesis-video-streams-parser-lib.

    • En IntelliJ Idea: seleccione Import. Vaya al archivo pom.xml en la raíz del paquete descargado.

      nota

      Si IntelliJ no encuentra sus dependencias, es posible que tenga que hacer lo siguiente:

      • Compilación limpia: elija File (Archivo), Settings (Configuración), Build, Execution, Deployment (Compilación, ejecución, implementación), Compiler (Compilador). Compruebe que esté seleccionada la opción Borrar directorio de salida al reconstruir y, a continuación, elija Build, Build Project.

      • Vuelva a importar el proyecto: abra el menú contextual (clic con el botón derecho) del proyecto y seleccione Maven, Reimport (Volver a importar).

    Para obtener más información, consulte la documentación del IDE relacionada.

  3. Desde su IDE de Java, abra src/test/java/com.amazonaws.kinesisvideo.parser/examples/KinesisVideoRendererExampleTest.

  4. Elimine la directiva @Ignore del archivo.

  5. Actualice el .stream parámetro con el nombre de su transmisión de vídeo de Kinesis.

  6. Ejecute la prueba KinesisVideoRendererExample.

Cómo funciona

Envío de datos MKV

El ejemplo envía datos MKV de ejemplo desde el archivo rendering_example_video.mkv, utilizando PutMedia para enviar datos de vídeo a una secuencia denominada render-example-stream.

La aplicación crea un PutMediaWorker:

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

Para obtener más información acerca de la clase PutMediaWorker, consulte Llama PutMedia en la documentación de Transmita usando la biblioteca de analizadores.

Análisis de fragmentos de MKV para convertirlos en fotogramas

A continuación, el ejemplo recupera y analiza los fragmentos MKV de la secuencia utilizando un GetMediaWorker:

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

Para obtener más información acerca de la clase GetMediaWorker, consulte Llamar GetMedia en la documentación de Transmita usando la biblioteca de analizadores.

Decodificación y visualización del marco

A continuación, el ejemplo descodifica y muestra el fotograma utilizando JFrame.

El siguiente ejemplo de código procede de la clase KinesisVideoFrameViewer, que amplía JFrame:

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

La imagen se muestra como una instancia de java.awt.image. BufferedImage. Para ver ejemplos que muestran cómo trabajar con ellaBufferedImage, consulta Reading/Loading una imagen.