範例:剖析和轉譯 Kinesis Video Streams 片段 - Amazon Kinesis Video Streams

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

範例:剖析和轉譯 Kinesis Video Streams 片段

使用剖析器程式庫進行串流 包含名為 的示範應用程式KinesisVideoRendererExample,示範剖析和轉譯 Amazon Kinesis 影片串流片段。範例使用 JCodec 解碼 H.264 編碼影格 (以 範例:Kinesis Video Streams 生產者 SDK GStreamer 外掛程式 - kvssink 應用程式擷取)。使用 JCodec 解碼影格後,將使用 JFrame 轉譯可見影像。

此範例說明如何執行下列步驟:

  • 使用 GetMedia API 從 Kinesis 影片串流擷取影格,並轉譯串流以供檢視。

  • 在自訂應用程式中檢視串流的影片內容,而不是使用 Kinesis Video Streams 主控台。

您也可以使用此範例中的類別來檢視未編碼為 H.264 的 Kinesis 影片串流內容,例如在顯示之前不需要解碼的 JPEG 檔案串流。

下列程序示範如何設定及使用 Renderer 示範應用程式。

先決條件

為了檢驗及使用 Renderer 範例程式庫,您必須具有下列項目:

執行轉譯器範例

  1. 建立目錄,然後從 GitHub 儲存庫複製範例原始碼。

    git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library
  2. 開啟您正在使用的 Java IDE (例如 EclipseIntelliJ IDEA),然後匯入您之前下載的 Apache Maven 專案:

    • 在 Eclipse 中:選擇 File (檔案)Import (匯入)Maven (Maven)Existing Maven Projects (現有 Maven 專案)。導覽至 kinesis-video-streams-parser-lib 目錄。

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

      注意

      如果 IntelliJ 找不到相依性,您可能需要執行下列:

      • Build clean: (清除項目) Choose File (檔案)Settings (設定)Build, Execution, Deployment (建立、執行、部署) Compiler (編譯器)。確認已選取重建時清除輸出目錄,然後選擇建置建置專案

      • Reimport the project (重新匯入專案):開啟 (用滑鼠右鍵按一下) 專案的內容功能表,然後選擇 MavenReimport (重新匯入)

    如需更多詳細資訊,請參閱 IDE 文件。

  3. 請由 Java IDE 開啟 src/test/java/com.amazonaws.kinesisvideo.parser/examples/KinesisVideoRendererExampleTest

  4. 由檔案移除 @Ignore 指令。

  5. 使用 Kinesis 影片串流的名稱更新 .stream 參數。

  6. 執行 KinesisVideoRendererExample 測試。

運作方式

傳送 MKV 資料

範例傳送 rendering_example_video.mkv 檔案的 MKV 資料,使用 PutMedia 傳送影片資料至名為 render-example-stream 的串流。

應用程式建立 PutMediaWorker

PutMediaWorker putMediaWorker = PutMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), inputStream, streamOps.amazonKinesisVideo); executorService.submit(putMediaWorker);

如需更多詳細資訊了解 PutMediaWorker 類別,請參閱 呼叫 PutMedia (位於 使用剖析器程式庫進行串流 文件)。

將 MKV 片段剖析為影格

範例之後使用 GetMediaWorker 擷取及剖析串流之中的 MKV 片段:

GetMediaWorker getMediaWorker = GetMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), new StartSelector().withStartSelectorType(StartSelectorType.EARLIEST), streamOps.amazonKinesisVideo, getMediaProcessingArgumentsLocal.getFrameVisitor()); executorService.submit(getMediaWorker);

如需更多詳細資訊了解 GetMediaWorker 類別,請參閱 呼叫 GetMedia (位於 使用剖析器程式庫進行串流 文件)。

解碼和顯示影格

範例之後使用 JFrame 解碼及顯示影格。

下列程式碼範例來自 KinesisVideoFrameViewer 類別,延伸 JFrame

public void setImage(BufferedImage bufferedImage) { image = bufferedImage; repaint(); }

影像以 java.awt.image.BufferedImage 的執行個體顯示。如需如何使用 BufferedImage 的範例,請參閱讀取/載入影像