Ejemplo: envío de datos a Kinesis Video Streams mediante PutMedia API - 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: envío de datos a Kinesis Video Streams mediante PutMedia API

En este ejemplo se muestra cómo utilizar. PutMediaAPI Muestra cómo enviar datos que ya están en formato contenedor (MKV). Si los datos deben agruparse en un formato contenedor antes de enviarlos (por ejemplo, si va a agrupar los datos de vídeo de la cámara en fotogramas), consulteCargar a Kinesis Video Streams.

nota

La PutMedia operación solo está disponible en C++ y JavaSDKs. Esto se debe a la gestión dúplex completa de las conexiones, el flujo de datos y las confirmaciones. No se admite en otros idiomas.

Descarga y configura el código

Siga los pasos para descargar el código de ejemplo de Java, importar el proyecto a JavaIDE, configurar las ubicaciones de las bibliotecas y configurar el código para que utilice 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 Java IDE que estás usando (por ejemplo, Eclipse o IDEAIntelliJ) 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 relacionada. IDE

  3. Actualice el proyecto para que IDE pueda encontrar las bibliotecas que ha importado.

    • Para IDEA IntelliJ, haga lo siguiente:

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

      2. Seleccione 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 de JARselección, elija todos los .jar del lib directorio del proyecto.

Escribe y examina el código

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

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

Cree el PutMediaClient

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

  • El URI para el PutMedia punto final.

  • Un InputStream apuntando al MKV archivo que se va a 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 PutMedia API ejemplo no crea una transmisión. Debe crear una transmisión mediante la aplicación de prueba de la Utilice la biblioteca de productores de Java consola Kinesis Video Streams o AWS CLI la.

  • 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 PutMedia API ejemplo, haga lo siguiente:

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

  2. Cambie su directorio de trabajo al directorio de productores SDK de Java:

    cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
  3. Compila la aplicación Java SDK 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, proporcionando 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.