Esempio: Invio di dati a Kinesis Video Streams utilizzando ilPutMediaAPI - 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: Invio di dati a Kinesis Video Streams utilizzando ilPutMediaAPI

In questo esempio viene illustrato come utilizzare ilPutMediaAPI. Viene illustrato come inviare i dati che si trovano già nel formato container (MKV). Se i dati devono essere assemblati in un formato container prima dell'invio (ad esempio, se stai assemblando i dati della videocamera in fotogrammi), consulta Kinesis Video Streams Producer Library.

Nota

L'operazione PutMedia è disponibile solo negli SDK C++ e Java, a causa della gestione full-duplex di connessioni, flusso di dati e conferme. Non è supportata in altri linguaggi.

Fase 1: Download e configurazione del codice

In questa sezione, potrai scaricare il codice di esempio Java, importare il progetto nell'IDE Java, configurare i percorsi della libreria e configurare il codice per utilizzare le credenziali AWS.

  1. Creare una directory e clonare il codice di origine di esempio dalGitHubrepository. L'esempio PutMedia è parte della Java Producer Library.

    $ git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
  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 esistentie passare alla radice del pacchetto scaricato. Selezionare il file pom.xml.

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

    Per ulteriori informazioni, consulta la documentazione IDE correlata.

  3. Aggiornare il progetto per fare in modo che l'IDE possa individuare le librerie importate.

    • Per IntelliJ IDEA, procedere come segue:

      1. Facendo clic con il pulsante destro del mouse, aprire il menu contestuale della directory lib del progetto e scegliere Add as library (Aggiungi come libreria).

      2. Scegliere File, Project Structure (Struttura progetto).

      3. In Project Settings (Impostazioni progetto), scegliere Modules (Moduli).

      4. Nella scheda Sources (Origini), impostare Language Level (Livello linguaggio) su 7 o superiore.

    • Per Eclipse, procedere come segue:

      1. Facendo clic con il pulsante destro del mouse, aprire il menu contestuale del progetto e scegliere Proprerties (Proprietà), Java Build Path (Percorso di compilazione Java), Source (Origine). Quindi, esegui queste operazioni:

        1. Nella scheda Source (Origine), fare doppio clic su Native library location (Percorso libreria nativa).

        2. Nella procedura guidata Native Library Folder Configuration (Configurazione cartella libreria nativa), scegliere Workspace (Area di lavoro).

        3. Nel menu di selezione Native Library Folder (Cartella libreria nativa), scegliere la directory lib nel progetto.

      2. Facendo clic con il pulsante destro del mouse, aprire il menu contestuale del progetto e scegliere Properties (Proprietà). Quindi, esegui queste operazioni:

        1. Nella scheda Libraries (Librerie), scegliere Add Jars (Aggiungi Jar).

        2. Nella procedura guidata JAR selection (Selezione JAR), scegliere tutti i file .jar nella directory lib del progetto.

Fase 2: Scrittura e analisi del codice

L'esempio dell'API PutMedia (PutMediaDemo) mostra i seguenti modelli di codifica:

Gli esempi di codice riportati in questa sezione sono presi dalla classe PutMediaDemo.

Creazione dell'PutMediaClient

Per la creazione dell'oggetto PutMediaClient sono richiesti i parametri seguenti:

  • L'URI dell'endpoint PutMedia.

  • Un InputStream diretto al file MKV di cui effettuare lo streaming.

  • Il nome del flusso. In questo esempio viene utilizzato il flusso creato in Utilizzo di Java Producer Library (my-stream). Per utilizzare un flusso diverso, modificare il parametro seguente:

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

    L'esempio dell'API PutMedia non crea nessun flusso. È necessario creare un flusso utilizzando l'applicazione di test per ilUtilizzo di Java Producer Library, utilizzando la console Kinesis Video Streams o utilizzando ilAWS CLI.

  • Il timestamp corrente.

  • Il tipo di timecode. L'esempio utilizza il codice RELATIVE, che indica che il timestamp è relativo all'inizio del container.

  • Un oggetto AWSKinesisVideoV4Signer che verifica che i pacchetti ricevuti siano stati inviati da un mittente autorizzato.

  • La larghezza di banda di upstream massima in Kbps.

  • Un oggetto AckConsumer per la ricezione delle conferme di ricezione dei pacchetti.

Il codice seguente crea l'oggetto 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();

Streaming di file multimediali e sospensione del thread

In seguito alla creazione del client, il campione avvia lo streaming asincrono con putMediaInBackground. Il thread principale viene quindi messo in pausa tramite latch.await fino al ritorno di AckConsumer e a questo punto il client viene chiuso.

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

Fase 3: Esecuzione e verifica del codice

Per eseguire l'esempio dell'API PutMedia, procedere come segue:

  1. Crea uno stream denominatomy-streamnella console Kinesis Video Streams o utilizzando ilAWS CLI.

  2. Per modificare la directory di lavoro nella directory SDK del producer Java:

    $ cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
  3. Per compilare l'SDK Java e l'applicazione di demo:

    mvn package
  4. Creare un filename temporaneo nella directory /tmp:

    $ jar_files=$(mktemp)
  5. Creare una stringa di classpath di dipendenze dall'archivio locale a un file:

    $ mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
  6. Impostare il valore della variabile di ambiente LD_LIBRARY_PATH come segue:

    $ 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. Eseguire la demo dalla riga di comando come segue, fornendo le proprie credenziali AWS:

    $ 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. Apri la console Kinesis Video Streams all'indirizzohttps://console.aws.amazon.com/kinesisvideo/e scegliere il flusso sulGestire i flussi(Certificato creato). Viene avviata la riproduzione del video nel riquadro Video Preview (Anteprima video).