本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
範例:將資料傳送至 Kinesis Video Streams PutMedia API
本例演示如何使用 PutMediaAPI. 它顯示了如何發送已經在容器格式的數據(MKV)。如果在傳送之前必須將資料組合成容器格式 (例如,如果要將攝影機視訊資料組合到影格中),請參閱上傳至 Kinesis Video Streams。
注意
該PutMedia
操作僅在 C ++ 和 Java 中可用SDKs。這是因為連線、資料流程和確認的全雙工管理。它不支持其他語言。
下載並設定程式碼
請依照下列步驟下載 Java 範例程式碼、將專案匯入 Java IDE、設定程式庫位置,以及設定程式碼以使用您的 AWS 認證。
-
創建一個目錄並從 GitHub存儲庫克隆示例源代碼。
PutMedia
範例為 Java 的一部分。git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
-
打開您正在使用的 JavaIDE(例如,日食
或 IntelliJ IDEA ),然後導入您下載的 Apache Maven 項目: -
在 Eclipse 中:請選擇 File (檔案)、Import (匯入)、Maven、Existing Maven Projects (現有 Maven 專案),並巡覽至下載套件的根目錄。選取
pom.xml
檔案。 -
在 IntelliJ Idea:選擇 Import (匯入)。巡覽至已下載套件根目錄的
pom.xml
檔案。
如需詳細資訊,請參閱相關IDE文件。
-
-
更新專案,以便IDE可以找到您匯入的資源庫。
-
對於 IntelliJIDEA,請執行以下操作:
-
開啟專案 lib 目錄的內容 (按一下右鍵) 功能表,然後選擇 Add as library (新增為程式庫)。
-
選擇檔案,然後選擇「專案結構」。
-
請在 Project Settings (專案詳細資訊) 下選擇 Modules (模組)。
-
請在 Sources (來源) 標籤將 Language Level (語言層級) 設定為
7
或以上。
-
-
對於 Eclipse 請執行下列步驟:
-
開啟專案的內容 (按一下右鍵) 功能表,然後選擇 Properties (屬性)、Java Build Path (Java 建置路徑)、Source (來源)。然後執行下列動作:
-
請在 Source (來源) 標籤按兩下 Native library location (原生程式庫位置)。
-
請在 Native Library Folder Configuration (原生程式庫資料夾設定) 精靈之中選擇 Workspace (工作空間)。
-
請在 Native Library Folder (原生程式庫資料夾) 選項之中選擇專案的 lib 目錄。
-
-
開啟專案的內容 (按一下右鍵) 功能表,然後選擇 Properties (屬性)。然後執行下列動作:
-
請在 Libraries (程式庫) 標籤選擇 Add Jars (新增 Jar)。
-
在JAR選取精靈中,選擇專案
lib
目錄中的所有 .jar。
-
-
-
撰寫並檢查程式碼
該示PutMedia
API例(PutMediaDemo
)顯示了以下編碼模式:
本節程式碼範例來自 PutMediaDemo
類別。
創建 PutMediaClient
建立PutMediaClient
物件需要下列參數:
-
PutMedia
端點的。URI -
指
InputStream
向要串流的MKV檔案。 -
串流名稱。本範例使用 使用 Java 生產者程式庫 (
my-stream
) 建立的串流。如欲使用不同串流,請變更下列參數:private static final String STREAM_NAME="my-stream";
注意
此範
PutMedia
API例不會建立串流。您必須使用 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();
執行並驗證程式碼
若要執行範PutMedia
API例,請執行下列動作:
-
建立
my-stream
在 Kinesis 影片串流主控台中命名的串流,或使用 AWS CLI. -
將您的工作目錄更改為 Java 生產者SDK目錄:
cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
-
編譯 Java SDK 和演示應用程序:
mvn package
-
在目錄中建立一個
/tmp
暫時的檔案名稱:jar_files=$(mktemp)
-
建立從本機儲存庫 classpath 有相依性字串的檔案:
mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
-
設定
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)
-
從命令列執行示範,如下所示,提供您的 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
-
開啟 Kinesis Video Streams 主控台
,然後在「管理串流」頁面上選擇您的串流。影片於 Video Preview (影片預覽) 窗格播放。