範例:將資料傳送至 Kinesis Video Streams PutMedia API - Amazon Kinesis Video Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

範例:將資料傳送至 Kinesis Video Streams PutMedia API

本例演示如何使用 PutMediaAPI. 它顯示了如何發送已經在容器格式的數據(MKV)。如果在傳送之前必須將資料組合成容器格式 (例如,如果要將攝影機視訊資料組合到影格中),請參閱上傳至 Kinesis Video Streams

注意

PutMedia操作僅在 C ++ 和 Java 中可用SDKs。這是因為連線、資料流程和確認的全雙工管理。它不支持其他語言。

下載並設定程式碼

請依照下列步驟下載 Java 範例程式碼、將專案匯入 Java IDE、設定程式庫位置,以及設定程式碼以使用您的 AWS 認證。

  1. 創建一個目錄並從 GitHub存儲庫克隆示例源代碼。PutMedia 範例為 Java 的一部分。

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
  2. 打開您正在使用的 JavaIDE(例如,日食IntelliJ IDEA),然後導入您下載的 Apache Maven 項目:

    • 在 Eclipse 中:請選擇 File (檔案)Import (匯入)MavenExisting Maven Projects (現有 Maven 專案),並巡覽至下載套件的根目錄。選取 pom.xml 檔案。

    • 在 IntelliJ Idea:選擇 Import (匯入)。巡覽至已下載套件根目錄的 pom.xml 檔案。

    如需詳細資訊,請參閱相關IDE文件。

  3. 更新專案,以便IDE可以找到您匯入的資源庫。

    • 對於 IntelliJIDEA,請執行以下操作:

      1. 開啟專案 lib 目錄的內容 (按一下右鍵) 功能表,然後選擇 Add as library (新增為程式庫)

      2. 選擇檔案,然後選擇「專案結構」。

      3. 請在 Project Settings (專案詳細資訊) 下選擇 Modules (模組)

      4. 請在 Sources (來源) 標籤將 Language Level (語言層級) 設定為 7 或以上。

    • 對於 Eclipse 請執行下列步驟:

      1. 開啟專案的內容 (按一下右鍵) 功能表,然後選擇 Properties (屬性)Java Build Path (Java 建置路徑)Source (來源)。然後執行下列動作:

        1. 請在 Source (來源) 標籤按兩下 Native library location (原生程式庫位置)

        2. 請在 Native Library Folder Configuration (原生程式庫資料夾設定) 精靈之中選擇 Workspace (工作空間)

        3. 請在 Native Library Folder (原生程式庫資料夾) 選項之中選擇專案的 lib 目錄。

      2. 開啟專案的內容 (按一下右鍵) 功能表,然後選擇 Properties (屬性)。然後執行下列動作:

        1. 請在 Libraries (程式庫) 標籤選擇 Add Jars (新增 Jar)

        2. JAR選取精靈中,選擇專案lib目錄中的所有 .jar。

撰寫並檢查程式碼

該示PutMediaAPI例(PutMediaDemo)顯示了以下編碼模式:

本節程式碼範例來自 PutMediaDemo 類別。

創建 PutMediaClient

建立PutMediaClient物件需要下列參數:

  • PutMedia端點的。URI

  • InputStream向要串流的MKV檔案。

  • 串流名稱。本範例使用 使用 Java 生產者程式庫 (my-stream) 建立的串流。如欲使用不同串流,請變更下列參數:

    private static final String STREAM_NAME="my-stream";
    注意

    此範PutMediaAPI例不會建立串流。您必須使用 Kinesis Video Streams 主控台的測試應用程式或. 使用 Java 生產者程式庫 AWS CLI

  • 目前的時間戳記。

  • 時間編碼類型。範例使用 RELATIVE,顯示時間戳記與容器開始有關。

  • AWSKinesisVideoV4Signer 物件驗證收到的封包是由獲得授權的寄件者傳送。

  • 以 Kbps 為單位的最大上游頻寬。

  • AckConsumer 物件接收封包收到的確認。

下列程式碼建立 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();

串流媒體並暫停執行緒

建立用戶端之後,範例開始與 putMediaInBackground 進行非同步串流。主要執行緒將由 latch.await 暫停直到 AckConsumer 傳回為止,屆時用戶端將會關閉。

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

執行並驗證程式碼

若要執行範PutMediaAPI例,請執行下列動作:

  1. 建立my-stream在 Kinesis 影片串流主控台中命名的串流,或使用 AWS CLI.

  2. 將您的工作目錄更改為 Java 生產者SDK目錄:

    cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
  3. 編譯 Java SDK 和演示應用程序:

    mvn package
  4. 在目錄中建立一個 /tmp 暫時的檔案名稱:

    jar_files=$(mktemp)
  5. 建立從本機儲存庫 classpath 有相依性字串的檔案:

    mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
  6. 設定 LD_LIBRARY_PATH 環境變數的值如下:

    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. 從命令列執行示範,如下所示,提供您的 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. 開啟 Kinesis Video Streams 主控台,然後在「管理串流」頁面上選擇您的串流。影片於 Video Preview (影片預覽) 窗格播放。