Amazon Web Services ブログ

Amazon Kinesis Video Streams へ RTSP ビデオを取り込むためのクラウド・ゲートウェイを構築する

はじめに

業界調査会社 IHS Markit によると、2021 年末までに世界で導入される IP カメラの推定台数は 10 億台に近づいており、ガートナーの Emerging Tech:ガートナー社の「Emerging Tech: Revenue Opportunity Projection of Computer Vision」レポートによると、主要市場における企業向けコンピュータビジョン(CV)ソフトウェア、ハードウェア、サービスは、2022 年の 1260 億ドルから 2031 年までに 3860 億ドルの世界収益を生み出すと予想されています。オンプレミスでの IP カメラの導入の多くは、ネットワークビデオレコーダー(NVR)を利用して、カメラからの映像や音声の記録、保存、再生を処理し、その接続は一般的にリアルタイムストリーミングプロトコル(RTSP)などを使用して実装されています。IP カメラは個人の家庭の監視だけでなく、商業および公共市場での監視にも使用されています。このような IP カメラからのメディアをキャプチャするために NVR を設置することがいつも可能だとは限らない一方で、カメラの台数が増えるにつれて、コンピュータ・ビジョン解析ソリューションを構築して、イベントを迅速に検出し、エンド・ユーザーまたはプロの監視チームにインテリジェントな通知を行うことがますます重要になっています。

このブログでは、RTSP 経由で IP カメラストリームを Amazon Kinesis Video Streams にセキュアに取り込むためのクラウドゲートウェイの構築方法について説明します。Amazon Kinesis Video Streams は、kvssink と呼ばれる GStreamer プラグインを含め、メディアを AWS に安全にストリーミングするための SDK を提供します。GStreamer は人気のあるオープンソースのメディアフレームワークで、カスタムのメディアパイプラインを作成し、多数のカメラやビデオソースとの統合を大幅に簡素化することができます。このブログ記事では、NVR のような新しいハードウェアをオンプレミスに導入できない顧客のために、クラウドベースのゲートウェイを構築することに焦点を当てています。同じタイプのアプローチは、既存のオンプレミス NVR からのメディアの安全なストリーミングを実装するために使用することができます。

概要

以下のアーキテクチャ図は、このソリューションがお客様のアカウントに展開するリソースを示しています。

Cloud Gateway Amazon Kinesis Video Streams Architecture

図1:RTSP から Amazon Kinesis Video Streams ソリューション・アーキテクチャへのオンプレミス IP カメラ・ビデオ・ストリームの取り込みのための AWS Fargate ベースのゲートウェイ

クラウド・ゲートウェイはここでは AWS Fargate アプリケーションとしてデプロイされますが、Fargate 上でも Amazon Elastic Compute Cloud(Amazon EC2)上でも実行できます。Fargate 上で動作するアプリケーションは GStreamer メディアパイプラインで構成され、Kinesis Video StreamsC++ Producer SDK の一部である Kinesis Video Streams Gstreamer プラグインを利用します。GStreamer プラグインを含む Kinesis Video Streams Producer SDK を AWS Fargate コンテナ内でコンパイルします。したがって、GStreamer マルチメディアフレームワークと Kinesis Video Streams Producer SDK のコンパイル時の依存関係は、Fargate アプリケーションの一部としてインストールする必要があります。

図 1 の Amazon Virtual Private Cloud (Amazon VPC) アーキテクチャには、インターネット・ゲートウェイまたは Egress-only インターネット・ゲートウェイが使われます。RTSP ストリームのビットレートと、このブログのソリューションを使用して統合するカメラの総数に応じて、インターネットゲートウェイまたは Egress 専用ゲートウェイを使用して、ネットワークトラフィックをコスト最適化します。NAT ゲートウェイを使用することもできますが、1 台以上の IP カメラからビデオデータを取り込む場合、NAT ゲートウェイは最もコスト最適化されたアプローチではありません。詳細については、Amazon VPC の価格を参照してください。ブランチオフィスのデータセンターと AWS リソースの間にセキュアな接続を作成するために、上記のアーキテクチャでは AWS Direct Connect または AWS Site-to-Site VPN を利用しています。詳細については、AWS Well-ArchitectedFrameworkHybrid Networking Lens を参照してください。

前提条件

  • Kinesis Video Streams、Amazon EC2 または Fargate、Amazon VPC の全権限を持つ AWS アカウント
  • Linux オペレーティングシステムとコマンドラインの使用に精通していること
  • C++ アプリケーションのコンパイルや CMake の使用に慣れていると便利ですが、必須ではありません。
  • AWS CLI、AWS CDK、Docker ツールがインストールされたシステム

ウォークスルー

Cloud Gateway for Amazon Kinesis Video Streamリポジトリには、Amazon EC2 および Fargate デプロイメント用の AWS Cloud Development Kit(CDK)が含まれています。サンプルアプリケーションを AWS アカウントにデプロイする手順は、リポジトリの README に含まれています。以下は、サンプル・レポジトリを自分のアカウントにデプロイするために必要な手順の概要です:

ステップ1: Kinesis Video Stream の作成

Kinesis Video Stream を作成するには、希望のリージョンで AWS マネージメントコンソールを開きます。Create video stream を選択し、ストリーム名に CloudGatewayStream を入力します。Default configuration ラジオボタンを選択したままにします。

ステップ2:インターネットゲートウェイで Amazon VPC の作成

Amazon EC2 または Fargate コンテナを実行できるようにするには、VPC を作成する必要がある。次に、Cloud Gateway がリモート・カメラに接続できるように Internet Gateway を作成する。

ステップ3:SSH キーペア と IAM ユーザーの作成

Amazon EC2 を認証するための SSH キーペアを作成する。GStreamer の起動スクリプトで Kinesis Video Streams へのアクセスを提供する IAM ユーザーを作成する。

ステップ4: RTSP ストリームを取り込むクラウドゲートウェイの作成

Amazon EC2 を使用して Cloud Gateway を構築し、サービスとして稼働する GStreamer をインストールするか、コンテナとして稼働する Cloud Gateway を構築するかを選択できます。Cloud Gateway をコンテナとして実行するには、まず Docker コンテナをビルドし、それをデプロイする必要があります。Docker コンテナを構築するには、Amazon EC2 を作成し、Docker ツールをインストールして、GStreamer とスタートアップ・スクリプトを含む Ubuntu コンテナを構築します。すでにローカルマシンに docker ツールがインストールされている場合は、それを代わりに使うこともできます。次に、ビルドした Docker イメージを保存するための Elastic Container Repository(ECR)を作成します。最後に、構築した Docker イメージを使ってクラウドゲートウェイのインスタンスを起動する Fargate クラスタタスクサービスを作成します。

ステップ5: ビデオストリームの表示

Kinesis Video Stream Console に移動し、Video Streams を選択し、最後にビデオストリームを選択します。メディア再生コンポーネントを展開し、ビデオストリームの表示を開始します。ストリームの例を以下に示します:

Cloud Gateway for Amazon Kinesis Video Streams Console Preview of video
図2: オンプレミスIPカメラからのKinesisビデオストリームの表示

ビデオストリームを表示するために AWS Console に頼る代わりに、Amazon Kinesis Video Streams Media Viewer アプリケーションを見て、ビデオストリームをWebアプリケーションに組み込む方法を学んだり、Kinesis Video Streams からの HLS または DASH ストリーミングセッション URL をお好みのビデオプレーヤーで使用したりすることができます。

後片付け

将来のコストを避けるために、不要になった場合は以下の手順で作成したリソースを削除します。Cloud Gateway for Amazon Kinesis Video Stream CDK プロジェクトを使用した場合は、cdk destroy コマンドを実行してデプロイメントを削除します。

まとめ

この投稿では、オンプレミスの IP カメラから Amazon Kinesis Video Streams にメディアをインジェストし、ライブ・ストリーミング、ビデオの保存と再生を行うクラウド・ゲートウェイの構築方法を学びました。このアプローチでは、オンプレミスのハードウェアを追加することなく、既存のIPカメラと統合することができます。また、Fargate 上のクラウドゲートウェイを使用してオンプレミスのソースからビデオデータを取り込む際に、AWS の AWS well-architected プリンシパルを適用してコストを最適化します。このソリューションは、家庭や企業に設置されたカメラで使用することができ、RTSP ストリームからビデオデータを取り込むことに重点を置いている。クラウドゲートウェイのスケーリングが必要な使用例については、Amazon EC2 の自動スケーリングまたは Fargate の自動スケーリングガイドを使用してください。

Kinesis Video Streams の詳細についてはスタートガイドを、その他の GStreamer パイプラインサンプルについては Kinesis Video Streams Producer SDK GStreamer Plug-in のサンプルをご覧ください。GStreamer の効果的な使用方法については、GStreamer アプリケーション開発マニュアル をご覧ください。また、Kinesis Video Streams にメディアをインジェストするためのクラウドゲートウェイを構築したら、次のビデオ でビデオストリームで使用するローコードコンピュータビジョンアプリケーションの構築方法をご覧ください。

この記事は David Malone と Brian M. Slater によって書かれた Build a Cloud Gateway to Ingest RTSP video to Amazon Kinesis Video Streams の日本語訳です。この記事は IoT Solution Architect の井上が翻訳しました。