Amazon Kinesis ビデオストリームにデータを送信する - Amazon Kinesis Video Streams

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

Amazon Kinesis ビデオストリームにデータを送信する

このセクションでは、カメラから、前のセクションで作成した Kinesis ビデオストリームにメディアデータを送信する方法について説明します。このセクションでは、C++ プロデューサーライブラリGStreamer プラグイン - kvssink プラグインとして使用します。

このチュートリアルでは、さまざまなオペレーティングシステム上のさまざまなデバイスからメディアを送信するために、Kinesis Video Streams C++ プロデューサーライブラリと GStreamerを使用します。これは、カメラやその他のメディアソースへのアクセスを標準化するオープンソースのメディアフレームワークです。

SDK とサンプルを構築する

SDK と サンプルは、コンピュータまたは で構築できます AWS Cloud9。以下の適切な手順に従ってください。

Build on your computer

readme ファイルの指示に従って、プロデューサーライブラリとサンプルアプリケーションを構築します。

これには、以下が含まれます。

  • 依存関係をインストールする

  • リポジトリのクローン作成

  • CMake を使用して makefile を生成する

  • make を使用したバイナリファイルの構築

Build in AWS Cloud9

で Kinesis Video Streams にアップロードするには、次の手順に従います AWS Cloud9。コンピュータに何かをダウンロードする必要はありません。

  1. で AWS Management Console、 を開きますAWS Cloud9

    環境の作成 を選択します。

  2. 環境の作成画面で、以下を完了します。

    • 名前 - 新しい環境の名前を入力します。

    • プラットフォーム - Ubuntu Server 22.04 LTS を選択します。

    他のフィールドはデフォルトの選択のままにしておくことができます。

  3. 環境が作成されたら、Cloud9 IDE 列で Open を選択します。 Cloud9

    画面の下中央エリアに が表示されますAdmin:~/environment $。これは (Amazon EC2) AWS Cloud9 ターミナルです。

    注記

    誤ってターミナルを閉じた場合は、ウィンドウ 新しいターミナル を選択します。

    ターミナルで次のコマンドを実行して、ボリュームを 20 GiB に変更します。

    1. スクリプトをダウンロードします。

      wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
    2. スクリプトの実行権限を付与します。

      chmod +x resize_volume.sh
    3. スクリプトを実行します。

      ./resize_volume.sh
  4. Advanced Packaging Tool (APT) を使用して、インストールまたは更新できるすべてのソフトウェアに関する最新情報を取得します。

    このコマンドではソフトウェア自体は更新されませんが、利用可能な最新バージョンがわかります。

    sudo apt-get update
  5. C++ プロデューサー SDK の依存関係をインストールします。

    sudo apt-get install -y cmake m4 git build-essential pkg-config libssl-dev libcurl4-openssl-dev \ liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly gstreamer1.0-tools
  6. git を使用して C++ プロデューサー SDK のクローンを作成します。

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
  7. ビルドディレクトリを準備します。

    cd amazon-kinesis-video-streams-producer-sdk-cpp mkdir build cd build
  8. CMake を使用して makefile を生成します。

    cmake .. -DBUILD_GSTREAMER_PLUGIN=TRUE -DBUILD_DEPENDENCIES=OFF

    予想される出力の終わりは次のようになります。

    -- Build files have been written to: /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
  9. make を使用して SDK とサンプルアプリケーションをコンパイルし、最終的な実行可能ファイルを構築します。

    make

    予想される出力の終わりは次のようになります。

    [100%] Linking CXX executable kvs_gstreamer_file_uploader_sample [100%] Built target kvs_gstreamer_file_uploader_sample
  10. サンプルファイルが構築されたことを確認します。現在のディレクトリ内のファイルを一覧表示します。

    ls

    次のファイルが存在することを確認します。

    • kvs_gstreamer_sample

    • libgstkvssink.so

  11. (オプション) GST_PLUGIN_PATH 環境変数の設定をシェルの起動スクリプトに追加できます。これにより、新しいターミナルセッション中に GST_PLUGIN_PATH が正しく設定されます。では AWS Cloud9、シェルの起動スクリプトは です~/.bashrc

    次のコマンドを実行して、シェルの起動スクリプトの末尾にコマンドを追加します。

    echo "export GST_PLUGIN_PATH=~/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build" >> ~/.bashrc

    次のように入力して、シェルの起動スクリプトを実行します。

    source ~/.bashrc

    GST_PLUGIN_PATH が設定されていることを確認します。

    echo $GST_PLUGIN_PATH

    出力を正しく設定すると、次の出力が表示されます。出力が空白の場合、環境変数が正しく設定されていません。

    /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build

サンプルを実行して Kinesis Video Streams にメディアをアップロードする

サンプルアプリケーションは IMDS 認証情報をサポートしていません。ターミナルで、IAM ユーザーまたはロールの AWS 認証情報と、ストリームがあるリージョンをエクスポートします。

export AWS_ACCESS_KEY_ID=YourAccessKey export AWS_SECRET_ACCESS_KEY=YourSecretKey export AWS_DEFAULT_REGION=YourAWSRegion

一時的な AWS 認証情報を使用している場合は、セッショントークンもエクスポートします。

export AWS_SESSION_TOKEN=YourSessionToken
.mp4 files

サンプル .mp4 ビデオをダウンロードして、Kinesis Video Streams にアップロードします。

wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4

ビデオ仕様:

  • 解像度 - 1280 x 720 ピクセル

  • フレームレート - 30 フレーム/秒

  • 期間 - 14.0 秒

  • ビデオエンコーディング - H.264、トラック 1

  • キーフレーム - 3 秒ごとにフラグメント期間 (写真のグループ (GoP) サイズとも呼ばれます) は 3 秒で、最後のフラグメントは 2 秒です。

以前に作成したストリームの名前を指定して、次のコマンドを実行します。ストリームをまだ作成していない場合は、「」を参照してくださいKinesis ビデオストリームを作成する

./kvs_gstreamer_sample YourStreamName ./sample.mp4
Sample video from GStreamer

GStreamer を使用してビデオを生成するには、次のコマンドを使用します。

GStreamer プラグインの場所を kvssink GStreamer に伝えます。ビルドディレクトリで、 libgstkvssink.so ファイルを含むフォルダへのパスを指定します。

ビルドディレクトリから、次のコマンドを実行します。

export GST_PLUGIN_PATH=`pwd`

この GStreamer パイプラインは、640 x 480 ピクセルの解像度で 10 フレーム/秒で実行される標準テストパターンのライブテストビデオストリームを生成します。オーバーレイが追加され、現在のシステムの日時が表示されます。その後、ビデオは H.264 形式にエンコードされ、キーフレームは最大 10 フレームごとに生成され、フラグメント期間 (写真のグループ (GoP) サイズとも呼ばれます) は 1 秒になります。 kvssinkは H.264 でエンコードされたビデオストリームを受け取り、Matroska (MKV) コンテナ形式にパッケージ化して、Kinesis ビデオストリームにアップロードします。

次のコマンドを実行します。

gst-launch-1.0 -v videotestsrc is-live=true \ ! video/x-raw,framerate=10/1,width=640,height=480 \ ! clockoverlay time-format="%a %B %d, %Y %I:%M:%S %p" \ ! x264enc bframes=0 key-int-max=10 \ ! h264parse \ ! kvssink stream-name="YourStreamName"

GStreamer パイプラインを停止するには、ターミナルウィンドウを選択し、Ctrl+C を押します。

注記

GStreamer プラグインを使用してカメラまたは USB カメラから RTSP ストリームからビデオをストリーミングする方法の詳細については、「」を参照してください例: Kinesis Video Streams プロデューサー SDK GStreamer プラグイン - kvssink

確認オブジェクトを確認する

アップロード中、Kinesis Video Streams はアップロードを実行するクライアントに確認オブジェクトを返します。これらはコマンド出力に出力されているはずです。例は次のようになります。

{"EventType":"PERSISTED","FragmentTimecode":1711124585823,"FragmentNumber":"12345678901234567890123456789012345678901234567"}

確認応答の EventTypeが の場合PERSISTED、Kinesis Video Streams は、取得、分析、長期保存のために、このメディアのチャンクを永続的に保存して暗号化したことを意味します。

確認応答の詳細については、「」を参照してくださいPutMedia