例: Kinesis Video Streams プロデューサー SDK GStreamer プラグイン - kvssink - Amazon Kinesis Video Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

例: Kinesis Video Streams プロデューサー SDK GStreamer プラグイン - kvssink

このトピックでは、GStreamer プラグインとして使用する Amazon Kinesis Video Streams プロデューサー SDK を構築する方法について説明します。

GStreamer は、モジュラープラグインを組み合わせてカスタムメディアパイプラインを作成するために、複数のカメラやビデオソースで使用される一般的なメディアフレームワークです。Kinesis Video Streams GStreamer プラグインは、既存の GStreamer メディアパイプラインと Kinesis Video Streams の統合を効率化します。GStreamer を統合すると、ウェブカメラまたはリアルタイムストリーミングプロトコル (RTSP) カメラから Kinesis Video Streams にビデオをストリーミングして、リアルタイムまたはそれ以降の再生、ストレージ、および詳細な分析を行うことができます。

GStreamer プラグインは、Kinesis Video Streams プロデューサー SDK によって提供される機能を GStreamer のシンクエレメント (kvssink) にカプセル化することで、Kinesis Video Streams へのビデオストリームの転送を自動的に管理します。GStreamer フレームワークは、カメラや他のビデオソースのようなデバイスからのメディアフローを構築して処理、レンダリング、保存を行うための標準的なマネージド環境を提供します。

GStreamer パイプラインは通常、ソース (ビデオカメラ) とシンクエレメント (ビデオをレンダリングするプレーヤーやオフラインで取得するためのストレージ) 間のリンクで構成されます。この例では、プロデューサー SDK エレメントをビデオソース (ウェブカメラまたは IP カメラ) のシンク、つまりメディア送信先として使用します。SDK をカプセル化するプラグイン要素は、ビデオストリームを Kinesis Video Streams に送信します。

このトピックでは、ウェブカメラや RTSP ストリームなどのビデオソースからビデオをストリーミングできる GStreamer メディアパイプラインを構築する方法について説明します。通常、中間エンコーディングステージ (H.264 エンコーディングを使用) を介して Kinesis Video Streams に接続されます。ビデオストリームが Kinesis ビデオストリームとして利用可能になったら、Kinesis Video Streams Parser Library を使用して、ビデオストリームの処理、再生、保存、分析をさらに行うことができます。

カメラから Kinesis Video Streams サービスにビデオをストリーミングする GStreamer メディアパイプラインの機能ビュー。

GStreamer 要素をダウンロード、構築、設定する

GStreamer プラグインの例は Kinesis Video Streams C++ プロデューサー SDK に含まれています。SDK の前提条件およびダウンロードの詳細については、「ステップ 1: C++ プロデューサーライブラリのコードをダウンロードして設定する」を参照してください。

プロデューサー SDK GStreamer シンクは、macOS、Ubuntu、Raspberry Pi、または Windows で動的ライブラリとして構築できます。GStreamer プラグインは build ディレクトリにあります。このプラグインをロードするには、 にある必要がありますGST_PLUGIN_PATH。次のコマンドを実行します。

export GST_PLUGIN_PATH=`pwd`/build
注記

macOS では、Docker コンテナで GStreamer を実行する場合にのみネットワークカメラからビデオをストリーミングできます。Docker コンテナで macOS の USB カメラからのビデオのストリーミングはサポートされていません。

GStreamer 要素を実行する

Kinesis Video Streams プロデューサー SDK 要素をシンクとして GStreamer を実行するには、 gst-launch-1.0 コマンドを使用します。GStreamer プラグインが使用するのに適したアップストリーム要素を使用します。たとえば、Linux システム上の v4l2 デバイスには v4l2src を、RTSP デバイスには rtspsrc を使用します。kvssink をシンク (パイプラインの最終的な送信先) としてを指定し、ビデオをプロデューサー SDK に送信します。

kvssink要素には、認証情報リージョン の提供に加えて、次の必須パラメータがあります。

  • stream-name – 送信先の Kinesis Video Streams の名前。

kvssink のオプションのパラメータの詳細については、「GStreamer 要素パラメータリファレンス」を参照してください。

GStreamer プラグインとパラメータに関する最新情報については、GStreamer プラグイン」を参照してください。また、 のgst-inspect-1.0後に GStreamer 要素またはプラグインの名前を使用して、その情報を出力し、デバイスで利用できることを確認することもできます。

gst-inspect-1.0 kvssink

構築がkvssink失敗した場合、または GST_PLUGIN_PATH が正しく設定されていない場合、出力は次のようになります。

No such element or plugin 'kvssink'

GStreamer 起動コマンドの例

次の例は、kvssinkGStreamer プラグインを使用してさまざまなタイプのデバイスからビデオをストリーミングする方法を示しています。

例 1: Ubuntu の RTSP カメラからビデオをストリーミングする

次のコマンドを実行すると、ネットワーク RTSP カメラからストリーミングする GStreamer パイプラインが Ubuntu に作成されます。これは rtspsrc GStreamer プラグインを使用します。

gst-launch-1.0 -v rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name="YourStreamName" storage-size=128

例 2: Ubuntu の USB カメラでビデオをエンコードしてストリーミングする

次のコマンドを実行すると、USB カメラからのストリームを H.264 形式でエンコードし、Kinesis Video Streams にストリーミングする GStreamer パイプラインが Ubuntu に作成されます。この例では v4l2src GStreamer プラグインを使用します。

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

例 3: Ubuntu の USB カメラから事前にエンコードされたビデオをストリーミングする

次のコマンドを実行すると、カメラが H.264 形式でエンコード済みのビデオを Kinesis Video Streams にストリーミングする GStreamer パイプラインが Ubuntu に作成されます。この例では v4l2src GStreamer プラグインを使用します。

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="plugin" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

例 4: macOS のネットワークカメラからビデオをストリーミングする

次のコマンドを実行すると、ビデオをネットワークカメラから Kinesis Video Streams にストリーミングする GStreamer パイプラインが macOS に作成されます。この例では rtspsrc GStreamer プラグインを使用します。

gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

例 5: Windows のネットワークカメラからビデオをストリーミングする

次のコマンドを実行すると、ビデオをネットワークカメラから Kinesis Video Streams にストリーミングする GStreamer パイプラインが Windows に作成されます。この例では rtspsrc GStreamer プラグインを使用します。

gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

例 6: Raspberry Pi のカメラからビデオをストリーミングする

次のコマンドを実行すると、ビデオを Kinesis Video Streams にストリーミングする GStreamer パイプラインが Raspberry Pi に作成されます。この例では v4l2src GStreamer プラグインを使用します。

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

例 7: Raspberry Pi と Ubuntu でオーディオとビデオの両方をストリーミングする

gst-launch-1.0 コマンドを実行して、Raspberry-PI および Ubuntu でオーディオとビデオの両方のストリーミングを開始する方法について説明します。

例 8: macOS のデバイスソースからオーディオとビデオの両方をストリーミングする

gst-launch-1.0 コマンドを実行して、MacOS でオーディオとビデオの両方のストリーミングを開始する方法について説明します。

例 9: オーディオとビデオの両方を含む MKV ファイルをアップロードする

gst-launch-1.0 コマンドを実行して、オーディオとビデオの両方を含む MKV ファイルをアップロードする方法について説明します。h.264 と AAC でエンコードされたメディアを含む MKV テストファイルが必要です。

Docker コンテナで GStreamer 要素を実行する

Docker は、コンテナを使用してアプリケーションを開発、デプロイ、実行するためのプラットフォームです。Docker を使用して GStreamer パイプラインを作成すると、Kinesis Video Streams の運用環境が標準化され、アプリケーションの構築と使用が合理化されます。

Docker をインストールして設定するには、以下を参照してください。

Docker をインストールしたら、次のいずれかのdocker pullコマンドを使用して、Amazon Elastic Container Registry から Kinesis Video Streams C++ プロデューサー SDK (および GStreamer プラグイン) をダウンロードできます。

Docker コンテナで Kinesis Video Streams プロデューサー SDK エレメントをシンクとして GStreamer を実行するには、次の操作を行います。

Docker クライアントを認証する

イメージのプル元になる Amazon ECR レジストリに対して Docker クライアントを認証します。使用するレジストリごとに認証トークンを取得する必要があります。トークンは 12 時間有効です。詳細については、Amazon Elastic Container Registry ユーザーガイドレジストリの認証を参照してください。

例 : Amazon ECR を使用して認証する

Amazon ECR で認証するには、次に示すように、次のコマンドをコピーして貼り付けます。

sudo aws ecr get-login-password --region us-west-2 | docker login -u AWS --password-stdin https://546150905175.dkr.ecr.us-west-2.amazonaws.com

成功すると、Login Succeeded が出力されます。

Ubuntu、macOS、Windows、または Raspberry Pi の Docker イメージのダウンロード

オペレーティングシステムに応じて次のコマンドのいずれかを使用し、Docker イメージを Docker 環境にダウンロードします。

Ubuntu の Docker イメージのダウンロード

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

macOS の Docker イメージのダウンロード

docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

Windows の Docker イメージのダウンロード

docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-windows:latest

Raspberry Pi の Docker イメージのダウンロード

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi:latest

イメージが正常に追加されたことを確認するには、次のコマンドを使用します。

docker images

Docker イメージを実行する

オペレーティングシステムに応じて、次のコマンドのいずれかを使用して Docker イメージを実行します。

Ubuntu で Docker イメージを実行する

sudo docker run -it --network="host" --device=/dev/video0 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

macOS で Docker イメージを実行する

sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

Windows で Docker イメージを実行する

docker run -it 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-windows AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY RTSP_URL STREAM_NAME

Raspberry Pi で Docker イメージを実行する

sudo docker run -it --device=/dev/video0 --device=/dev/vchiq -v /opt/vc:/opt/vc 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi /bin/bash

Docker はコンテナを起動し、コンテナ内でコマンドを使用するためのコマンドプロンプトを表示します。

コンテナ内で、次のコマンドを使用して環境変数を設定します。

export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH

kvssink を使用して へのストリーミングを開始し、デバイスとビデオソースに適したパイプラインgst-launch-1.0を実行します。パイプラインの例については、「」を参照してくださいGStreamer 起動コマンドの例