View a markdown version of this page

Ejemplo: enviar datos a Kinesis Video Streams mediante la API PutMedia - 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: enviar datos a Kinesis Video Streams mediante la API PutMedia

Este ejemplo demuestra cómo usar la PutMedia API. Muestra cómo enviar datos que ya están en formato contenedor (MKV). Si los datos deben ensamblarse en un formato contenedor antes de enviarlos (por ejemplo, si va a ensamblar los datos de vídeo de una cámara en fotogramas), consulteCargar a Kinesis Video Streams.

nota

La PutMedia operación solo está disponible en los SDK de C++ y Java. Esto se debe a la administración dúplex completa de las conexiones, el flujo de datos y las confirmaciones. No es compatible con otros idiomas.

Descarga y configura el código

Siga los pasos para descargar el código de ejemplo de Java, importar el proyecto a su IDE de Java, configurar las ubicaciones de las bibliotecas y configurar el código para usar sus AWS credenciales.

  1. Crea un directorio y clona el código fuente del ejemplo desde el GitHub repositorio. El ejemplo de PutMedia forma parte de la Java.

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
  2. Abre el IDE de Java que estás usando (por ejemplo, Eclipse o IntelliJ IDEA) e importa el proyecto Apache Maven que descargaste:

    • En Eclipse: seleccione File (Archivo), Import... (Importar...), Maven (Maven), Existing Maven Projects (Proyectos Maven existentes) y vaya a la raíz del paquete descargado. Seleccione el archivo pom.xml.

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

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

  3. Actualice el proyecto, de modo que el IDE pueda encontrar las bibliotecas que ha importado.

    • Para IntelliJ IDEA, realice lo siguiente:

      1. Abra el menú contextual (clic secundario) en el directorio lib del proyecto y seleccione Add as library.

      2. Selecciona Archivo y, a continuación, Estructura del proyecto.

      3. En Project Settings, seleccione Modules.

      4. En la pestaña Sources (Orígenes), configure Language Level (Nivel de lenguaje) en 7 o más.

    • Para Eclipse, haga lo siguiente:

      1. Abra el menú contextual (clic secundario) del proyecto y seleccione Properties, Java Build Path, Source. A continuación, proceda del modo siguiente:

        1. En la pestaña Source, haga doble clic en Native library location.

        2. En el asistente Native Library Folder Configuration, seleccione Workspace.

        3. En la opción Native Library Folder, seleccione el directorio lib del proyecto.

      2. Abra el menú contextual (clic secundario) del proyecto y seleccione Properties. A continuación, proceda del modo siguiente:

        1. En la pestaña Libraries, elija Add Jars.

        2. En el asistente JAR selection (Selección de JAR), seleccione todos los archivos .jar del directorio lib del proyecto.

Escriba y examine el código

El ejemplo de API PutMedia () muestra el siguiente patrón de codificación:PutMediaDemo

Los ejemplos de código de esta sección pertenecen a la clase PutMediaDemo.

Crea el PutMediaClient

La creación del PutMediaClient objeto requiere los siguientes parámetros:

  • La URI del punto de conexión PutMedia.

  • Un InputStream que señale al archivo MKV que se ha de transmitir.

  • El nombre de la transmisión. En este ejemplo se utiliza la misma transmisión creada en la Utilice la biblioteca de productores de Java (my-stream). Para utilizar otra transmisión, cambie el siguiente parámetro:

    private static final String STREAM_NAME="my-stream";
    nota

    El ejemplo de la PutMedia API no crea una transmisión. Debe crear una transmisión mediante la aplicación de prueba para la Utilice la biblioteca de productores de Java consola de Kinesis Video Streams o la AWS CLI.

  • Marca temporal actual.

  • Tipo de código temporal. En el ejemplo se utiliza RELATIVE, lo que indica que la marca temporal es relativa al inicio del contenedor.

  • Un objeto AWSKinesisVideoV4Signer que comprueba que los paquetes recibidos han sido enviados por el remitente autorizado.

  • El ancho de banda de subida máximo en Kbps,

  • Un objeto AckConsumer para recibir los reconocimientos de los paquetes recibidos.

El siguiente código crea el objeto PutMediaClient:

/* actually URI to send PutMedia request */ final URI uri = URI.create(KINESIS_VIDEO_DATA_ENDPOINT + PUT_MEDIA_API); /* input stream for sample MKV file */ final InputStream inputStream = new FileInputStream(MKV_FILE_PATH); /* use a latch for main thread to wait for response to complete */ final CountDownLatch latch = new CountDownLatch(1); /* a consumer for PutMedia ACK events */ final AckConsumer ackConsumer = new AckConsumer(latch); /* client configuration used for AWS SigV4 signer */ final ClientConfiguration configuration = getClientConfiguration(uri); /* PutMedia client */ final PutMediaClient client = PutMediaClient.builder() .putMediaDestinationUri(uri) .mkvStream(inputStream) .streamName(STREAM_NAME) .timestamp(System.currentTimeMillis()) .fragmentTimeCodeType("RELATIVE") .signWith(getKinesisVideoSigner(configuration)) .upstreamKbps(MAX_BANDWIDTH_KBPS) .receiveAcks(ackConsumer) .build();

Transmisión de medios y pausa del subproceso

Tras crear el cliente, la muestra inicia el streaming asincrónico con putMediaInBackground. Posteriormente, el subproceso principal se pausa con latch.await hasta que devuelve AckConsumer y en ese punto se cierra el cliente.

/* start streaming video in a background thread */ client.putMediaInBackground(); /* wait for request/response to complete */ latch.await(); /* close the client */ client.close();

Ejecute y verifique el código

Para ejecutar el ejemplo de API PutMedia, siga estos pasos:

  1. Cree una transmisión con el nombre my-stream en la consola de Kinesis Video Streams o mediante el AWS CLI.

  2. Cambie el directorio de trabajo actual al directorio del SDK Producer de Java:

    cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
  3. Compile el SDK de Java y la aplicación de demostración:

    mvn package
  4. Cree un nombre de archivo temporal en el directorio /tmp:

    jar_files=$(mktemp)
  5. Cree una cadena classpath de dependencias desde el repositorio local a un archivo:

    mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
  6. Establezca el valor de la variable de entorno LD_LIBRARY_PATH del modo siguiente:

    export LD_LIBRARY_PATH=/<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH $ classpath_values=$(cat $jar_files)
  7. Ejecute la demostración desde la línea de comandos de la siguiente manera e introduzca sus AWS credenciales:

    java -classpath target/kinesisvideo-java-demo-1.0-SNAPSHOT.jar:$classpath_values -Daws.accessKeyId=${ACCESS_KEY} -Daws.secretKey=${SECRET_KEY} -Djava.library.path=/opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build com.amazonaws.kinesisvideo.demoapp.DemoAppMain
  8. Abra la consola de Kinesis Video Streams y elija su transmisión en la página Administrar transmisiones. El vídeo se reproduce en el panel Video Preview.