本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Kinesis 視訊串流和 AWS Fargate 建立視訊處理管道
由皮奧特·喬特考斯基 (AWS) 創作
環境:PoC 或試驗 | 技術:雲端原生;軟體開發與測試;媒體服務 | AWS 服務:AWS Fargate; Amazon Kinesis 基尼西斯; Amazon S3 |
Summary
此模式演示如何使用Amazon Kinesis Video Streams
該模式提供了一個 Java Maven 項目的形式示例應用程序。此應用程式定義 AWS 基礎設施,方法是使用AWS Cloud Development Kit
先決條件和限制
先決條件
作用中的 AWS 帳戶
Java SE Devolment Kit (JDK) 11 (已安裝
Apache Maven
,已安裝 AWS 命令列界面 (AWS CLI)第 2 版,已安裝
Docker
(用於構建在 AWS Fargate 任務定義中使用的 Docker 映像所需),已安裝
限制
這種模式旨在作為概念證明,或作為進一步發展的基礎。不應將其目前形式用於生產部署。
產品版本
這種模式已通過 AWS CDK 版本 1.77.0 進行測試(請參閱AWS CDK 版本)
JDK 11
AWS CLI 第 2 版
Architecture
目標技術堆疊
Amazon Kinesis Video Streams
AWS Fargate 任務
Amazon Simple Queue Service (Amazon SQS) 佇列
Amazon S3 儲存貯體
目標架構

使用者建立 Kinesis 視訊串流、上傳視訊,並傳送 JSON 訊息,其中包含輸入 Kinesis 視訊串流和輸出 S3 儲存貯體至 SQS 佇列的詳細資料。在容器中執行主應用程式的 AWS Fargate 會從 SQS 佇列中提取訊息並開始擷取框架。每個影格都儲存在影像檔案中,並儲存在目標 S3 儲存貯體中。
自動化和擴充
範例應用程式可以在單一 AWS 區域內水平和垂直擴展。透過增加從 SQS 佇列讀取的已部署 AWS Fargate 任務數量,即可達成水平擴展。垂直縮放可以通過增加應用程序中幀分割和圖像發布線程的數量來實現。這些設定會做為環境變數傳遞至佇列處理遠端閘道服務資 AWS。由於 AWS CDK 堆疊部署的特性,您可以在多個 AWS 區域和帳戶中部署此應用程式,無需額外付費。
Tools
工具
AWS CDK
— AWS Cloud Development Kit (AWS CDK) 是一種軟體開發架構,可使用 TypeScript、JavaScript、Python、Java 和 C#/.net 等程式設計語言來定義您的雲端基礎設施和資源。 Amazon Kinesis Video Streams
— Amazon Kinesis Video Streams ue 是全受管的 AWS 服務,您可以用於從裝置將即時視訊串流到 AWS 雲端,或建置應用程式以進行即時影片處理或批次導向影片分析。 AWS Fargate
— AWS Fargate 是適用於容器的無伺服器運算引擎。Fargate 不需要佈建和管理伺服器,讓您專注於開發應用程式。 Amazon S3
— Amazon SSimple Storage Service (Amazon S3) 是一項物件儲存服務,提供可擴展性、資料可用性、安全性和效能。 Amazon SQS
— Amazon Simple Queue Service (Amazon SQS) 是全受管的訊息佇列服務,可讓您解偶和擴展微服務、分散式系統和無伺服器應用程式。
Code
附加範例應用程式專案 (frame-splitter-code.zip) 的 .zip 檔案。
Epics
任務 | 描述 | 所需技能 |
---|---|---|
啟動 Docker 協助程式。 | 在本機系統上啟動 Docker 守護程式。AWS CDK 使用 Docker 來建置 AWS Fargate 任務中使用的映像。您必須先執行 Docker 才能進行下一個步驟。 | DevOps 人員、開發作業工程師 |
建置專案。 | 下載框架分割代碼示例應用程序(附加)並將其內容解壓縮到本地計算機上的文件夾中。您必須先建置基礎結構才能進行部署Java Maven
| DevOps 人員、開發作業工程師 |
啟動 AWS CDK。 | (僅限第一次使用 AWS CDK) 如果這是您第一次使用 AWS CDK,則可能必須執行 AWS CLI 命令來啟動環境:
where | DevOps 人員、開發作業工程師 |
部署 AWS CDK 堆疊。 | 在此步驟中,您將在 AWS 帳戶中建立所需的基礎設施資源 (SQS 佇列、S3 儲存貯體、AWS Fargate 任務定義)、建置 AWS Fargate 任務所需的 Docker 映像,以及部署應用程式。在命令提示字元中,導覽至專案的根目錄,然後執行命令:
where | DevOps 人員、開發作業工程師 |
建立視訊串流。 | 在此步驟中,您會建立 Kinesis 視訊串流,做為視訊處理的輸入串流。請確定您已安裝並設妥 AWS CLI。在 AWS CLI 中,執行:
where 或者,您也可以使用 Kinesis 主控台建立視訊串流,方法是依照Kinesis Video Streams 文件。記下所建立串流的 AWS Resource Name (ARN);您稍後需要。 | DevOps 人員、開發作業工程師 |
任務 | 描述 | 所需技能 |
---|---|---|
將影片上傳至串流。 | 在範例框架分割程式碼應用程式的專案資料夾中,開啟 ProcessingTaskTest.java 檔案中的 SRC/測試/java/amazon/awscd/ 範例/分割器資料夾。取代ProfileName和streamName變數,其中包含您在先前步驟中使用的值。若要將範例視訊上傳至您在上一個步驟中建立的 Kinesis 視訊串流,請執行:
或者,您也可以使用其中一種方法來上傳影片。Kinesis Video Streams 文件。 | DevOps 人員、開發作業工程師 |
啟動視訊處理。 | 您現在已將影片上傳到 Kinesis 影片串流,您可以開始處理影片。若要啟動處理邏輯,您必須將包含詳細資訊的訊息傳送至 AWS CDK 在部署期間建立的 SQS 佇列。若要使用 AWS CLI 傳送訊息,請執行:
where
where 傳送此訊息會啟動視訊處理。或者,您也可以使用 Amazon SQS 主控台來傳送訊息,如Amazon SQS 文件。 | DevOps 人員、開發作業工程師 |
檢視視訊影格的影像。 | 您可以在 S3 輸出儲存貯體中看到結果影像 | DevOps 人員、開發作業工程師 |
相關資源
其他資訊
選擇 IDE
我們建議您使用您最喜愛的 Java IDE 來建置和探索這個專案。
清除
執行完此範例後,請移除所有已部署的資源,以避免產生額外的 AWS 基礎設施成本。
若要移除基礎設施和視訊串流,請在 AWS CLI 中使用以下兩個命令:
cdk destroy --profile "$AWS_PROFILE_NAME" --all
aws kinesisvideo --profile "$AWS_PROFILE_NAME" delete-stream --stream-arn "$STREAM_ARN"
或者,您可以使用 AWS CloudFormation 主控台移除 AWS CloudFormation 堆疊,並使用 Kinesis 主控台移除 Kinesis 視訊串流,手動移除資源。請注意,cdk destroy
不會刪除輸出 S3 存儲桶或 Amazon Elastic Container Registry (Amazon ECR) 存儲庫(aws-cdk/資產)中的映像。您必須手動移除它們。