例: Kinesis ビデオストリーム プロデューサー SDK GStreamer プラグイン - Amazon Kinesis Video Streams

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

例: Kinesis ビデオストリーム プロデューサー SDK GStreamer プラグイン

このトピックでは、Amazon Kinesis ビデオストリーム プロデューサー SDK を GStreamer プラグインとして使用する構築方法を示します。

GStreamer は、多数のカメラやビデオソースで使用される一般的なメディアフレームワークです。モジュラープラグインを組み合わせてカスタムのメディアパイプラインを作成できます。Kinesis ビデオストリーム プラグインは、既存の GStreamer メディアパイプラインと GStreamer の統合を大幅に簡易化します。Kinesis ビデオストリームを統合した後は、ウェブカメラや RTSP (Real Time Streaming Protocol) カメラから GStreamer にビデオのストリーミングを開始できます。リアルタイムでも、後で再生することも、保存して、さらに分析することもできます。Kinesis ビデオストリーム

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

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

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


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

エレメントのダウンロード、構築、設定GStreamer

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

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

export GST_PLUGIN_PATH=`pwd`/build

エレメントの実行GStreamer

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

kvssink エレメントには以下の必須パラメータがあります。

  • stream-name : 送信先 Kinesis ビデオストリーム の名前。

  • storage-size: デバイスのストレージサイズ (キロバイト)。デバイスストレージの構成の詳細については、「」を参照してください。StorageInfo.

  • access-key : Kinesis ビデオストリーム にアクセスするために使用する AWS アクセスキー。このパラメータか のどちらかを指定する必要があります。credential-path.

  • secret-key : Kinesis ビデオストリーム にアクセスするために使用する AWS シークレットキー。このパラメータか のどちらかを指定する必要があります。credential-path.

  • credential-path: Kinesis ビデオストリーム にアクセスするための認証情報を含むファイルのパス。 認証情報の変更の詳細については、「IAM ユーザーのアクセスキーの管理.」を参照してください。このパラメータか、access-key および secret-key. かの、どちらかを指定する必要があります。

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

プラグインとパラメータの最新情報については、「GStreamer プラグインGStreamer」を参照するか、次のコマンドを実行してオプションを一覧表示します。

gst-inspect-1.0 kvssink

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

No such element or plugin 'kvssink'

起動コマンドの例GStreamer

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

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

次のコマンドを実行すると、ネットワーク RTSP カメラからストリーミングする GStreamer パイプラインが Ubuntu に作成されます。このパイプラインは、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"

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

次のコマンドを実行すると、USB カメラからのストリームを H.264 フォーマットでエンコードし、GStreamer にストリーミングする Kinesis ビデオストリーム パイプラインが 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 フォーマットでエンコード済みのビデオを GStreamer にストリーミングする Kinesis ビデオストリーム パイプラインが 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 のネットワークカメラからビデオをストリーミングする

次のコマンドを実行すると、ビデオをネットワークカメラから GStreamer にストリーミングする macOS パイプラインが Kinesis ビデオストリーム に作成されます。この例では、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"

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

次のコマンドを実行すると、ビデオをネットワークカメラから GStreamer にストリーミングする Kinesis ビデオストリーム パイプラインが 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 のカメラからビデオをストリーミングする

次のコマンドを実行すると、ビデオを GStreamer にストリーミングする Kinesis ビデオストリーム パイプラインが 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" frame-timestamp=dts-only access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

例 7: Raspberry Pi のカメラからビデオをストリーミングしてリージョンを指定する

次のコマンドを実行すると、ビデオを GStreamer リージョンの Kinesis ビデオストリーム にストリーミングする 米国東部(バージニア北部) パイプラインが 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" frame-timestamp=dts-only access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

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

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

例 9: MacOS でオーディオとビデオの両方をストリーミングする

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

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

gst-launch-1.0 コマンドを実行して、オーディオとビデオの両方を含む MKV ファイルをアップロードする方法.について説明します。

Docker コンテナで GStreamer エレメントを実行する

Docker は、コンテナを使用してアプリケーションを開発、デプロイ、実行するためのプラットフォームです。Docker を使用して GStreamer パイプラインを作成することで Kinesis ビデオストリーム のオペレーティング環境が標準化され、アプリケーションの構築と実行を大幅に簡素化できます。

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

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

Docker コンテナで GStreamer プロデューサー SDK エレメントをシンクとして Kinesis ビデオストリーム を実行するには

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

イメージのプル元になる Amazon ECR レジストリに対して Docker クライアントを認証します。使用するレジストリごとに認証トークンを取得する必要があり、トークンは 12 時間有効です。詳細については、https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_authの「Amazon Elastic Container Registry ユーザーガイドレジストリの認証.」を参照してください。

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

aws ecr get-login --no-include-email --region us-west-2 --registry-ids 546150905175

このコマンドを処理すると、次のような出力が生成されます。

docker login -u AWS -p <Password> https://YourAccountId.dkr.ecr.us-west-2.amazonaws.com

結果の出力は、Amazon ECR レジストリに対して Docker クライアントを認証するために使用する、Docker ログインコマンドとなります。

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

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

sudo 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

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

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

デバイスに適した gst-launch-1.0 コマンドを使用してカメラからのストリーミングを開始します。

注記

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

gst-launch-1.0 コマンドを使用してローカルウェブカメラまたはネットワーク RTSP カメラに接続する礼については、「起動コマンド.」を参照してください。