Jetson nanoで撮影した動画をAmazon Kinesis Video Streamsに配信してみる

スマートホーム
スポンサーリンク
このエントリーをはてなブックマークに追加

はじめに

このブログではJetson nanoを用いて4K動画を撮影する記事をいくつか掲載していますが、今回はJetson nanoで撮影した動画をAmazon Kinesis Videoに配信する方法をまとめます。

前回の記事で、Jetson nanoではGPUをフルに使っても、4K動画のライブキャリブレーション(魚眼レンズのリアルタイム画像補正)ができない事を書きましたが、Jetson nanoでダメであれば動画をクラウドに上げて高速なGPUを使って、処理しようという作戦です。

用意するもの

①ボードコンピュータ

今回の主役Jetson nanoです。Jetson nanoは安価な2GBモデルが発表になりましたが、今回は従来からある4Gモデルを利用します。

②魚眼レンズ付きカメラモジュール

魚眼レンズ付きカメラモジュールです。今回は180度まで撮影可能な以下のカメラを使います。USB接続で、4K@30fps(MJPG)までの動画撮影にも対応しています。

③AWSアカウント

今回は、AWS上のKinesis Video Streamsを使うので、AWSのアカウントが必要です。

必要なものは、以上の3点です。

Amazon Kinesis Video Streamsへの配信

Jetson nanoで撮影した動画をAmazon Kinesis Video Streamsへ配信するためには、配信側であるJetson nanoの設定と、受信側であるAWSの両方の設定が必要です。

Jetson nano(配信側)の設定

動画の配信側であるJetson nanoでは、GStreamerプラグインであるkvssinkエレメントを使ってkinesis Video Streamに動画を配信します。

kinesis-video-streams-parser-libraryのダウンロード

まずは、kvssinkのソースコードを含むamazon-kinesis-video-streams-parser-libraryをダウンロードします。

②必要なライブラリのインストール

次に必要なライブラリをインストールします。私の場合には、全て元々入っていました。

③cmake

次にcmakeします。GStreamerプラグインのオプション「-DBUILD_GSTREAMER_PLUGIN=ON」をつけるのがポイントです。cmakeには30分ぐらいかかるので、気長に待ちましょう😊

また、以前のバージョンではインストールスクリプトがあったようですが、最近のバージョンはcmakeに変わっているようです。その情報がAmazonの公式ページにも無かったので、ここにまとめておきます。

④make

cmakeが完了したらビルドします。こちらは1分ほどで完了します。

⑤ライブラリの確認

makeが完了したら、できあがったGStreamer用のライブラリファイルを確認しましょう。以下のように、「libgstkvssink.so」が作成されていればOKです。

⑥プラグインパスの設定

作成したプラグインをGStreamerから利用できるように、プラグインのパス「$GST_PLUGIN_PATH」を設定します。

⑦プラグインの動作確認

それでは、kvssinkプラグインがGStreamerから利用できるか確認してみましょう。以下のようにgst-inspectコマンドで、kvssinkの情報が確認できればOKです。

以上で、Jetson nano(配信側)の設定は完了です。

Amazon Kinesis Video Streams(受信側)の設定

ここからは、受信側であるAmazon Kinesis Video Streamsの設定を行います。

①AWSマネジメントコンソールにログイン

まずは、AWSのマネジメントコンソールにログインしましょう。

②Kinesis Video Streamsサービスの選択

画面左上の「サービス」を選択し、サービス一覧から「Kinesis Video Streams」を選択します。

③ビデオストリームを作成

画面上にある「ビデオストリームを作成」ボタンをクリックします。リージョン選択の画面が出る場合には、お好きなリージョンを選びましょう。

④ビデオストリーム名の入力

作成するビデオストリームの名前を入力して「ビデオストリームを作成」ボタンをクリックします。このストリーム名は後で、コマンドラインからも利用するので英語で入力するのが良いでしょう。

⑤ビデオストリームの作成確認

以下のようにビデオストリームの管理画面が表示されればOKです。

⑥IAMユーザの追加

次に、Kinesis Video Streamsを利用するIAMユーザを追加します。サービス一覧から「IAM」を選択します。

⑦ユーザを追加

左側メニューから「ユーザ」を選択し、画面上の「ユーザを追加」ボタンをクリックします。

⑧ユーザ名の入力

ユーザの追加画面が表示されたら、ユーザ名を入力し「プログラムによるアクセス」にチェックして、画面右下の「次のステップ:アクセス権限」ボタンをクリックします。

⑨アクセス権限の設定

次に、このユーザにKinesis Video Streamのアクセス権限を設定します。

画面上の「既存のポリシーを直接アタッチ」をクリックします。次に、ポリシーの検索欄に「KinessVideo」と入力して検索し、出てきた「AmazonKinesisVideoSreamsFullAcess」のポリシーのチェックをつけます。最後に「次のステップ:タグ」ボタンをクリックします。

⑩タグの追加

タグの追加の画面では、特に何も設定する必要はありませんので、画面右下の「次のステップ:確認」ボタンをクリックします。

11.追加ユーザの確認

確認画面が表示されるので、ユーザ名、アクセス権限を確認し、「ユーザの作成」ボタンをクリックします。

12.キーの確認

ユーザが作成されると、アクセスキーIDとシクレットアクセスキーの2つが発行されるので、テキストエディタなどにメモします。後で、このキーを使ってJetson nanoから動画を配信します。

12.追加ユーザの確認

「閉じる」ボタンを押すと、新しいユーザが追加されていることが確認できます。

以上で、Kinesis Video Streams(受信側)の設定も完了です。

動画配信の実行

それでは、いよいよJetson nanoからKinesis Video Streamsへ動画を配信してみましょう。

①動画配信の実行

Jetson nanoから以下のコマンドを入力して、動画配信を開始します。なお、stream-nameは上で作成したKinesis Video Streamsのビデオストリーム名、access-keyとsecret-keyは、上でメモしたIAMユーザのキーに置き換えてください。

GStreamerのパイプラインのポイントとしては、カメラから取得したMJPG形式の動画をnvv4l2decodeで一旦デコードし、それを再度nvv4l2h264encを使ってh264にエンコードして、kvssinkに渡している点です。この処理はJetson nanoのハードウェアエンコーダ/デコーダを使うので高速に処理できます。

②動画配信の確認

Jetson nanoでコマンドを実行したら、先ほど作成したKinesis Video Steamsの画面を表示して、「▶︎メディア再生」をクリックします。

すると、以下のようにJetson nanoから配信された動画が表示されます‼️

以上で完了です。お疲れ様でした。

おわりに

今回は、Jetson nanoにGStreamerプラグイン「kvssink」をインストールし、AWSでKinesis Video Streamを設定して、Jetson nanoから動画を配信する方法をまとめました。

AWSに動画を配信できるようになったことで、Jetson nanoのGPUでは難しかった4K動画のリアルタイムキャリブレーションにクラウド上の高速なGPUを利用可能となりました。次は、AWS EC2上でGPUを使って、キャリブレーションを行うことにチャレンジしてみたいと思います。

関連記事

Raspberry Pi 4Bで4Kカメラは扱えるか?エンコード性能を徹底検証
Raspberry Pi 4Bで4K動画がどこまで扱えるかの情報がネットに無かったので、実機を使って検証してみました。4KとフルHD動画について、h264、mjpeg、非圧縮の6パターンについて検証しています
NVIDIA Jetson nanoで 4Kカメラは扱えるか?エンコード性能を徹底検証
Jetson nanoで4K動画がどこまで扱えるか、4Kカメラ(MJPG転送)の実機を使って検証してみました。4KとフルHD動画について、h264とh265を用いて検証しています。また4Kについは、jpegハードウェアデコーダ(NVJPG)を併用したパターンも検証しました。
OpenCV&Pythonで、簡単に魚眼レンズの歪み補正(Calibration)を行う方法
防犯カメラなど、広範囲を撮影したい時には魚眼レンズを利用するのが便利です。しかし、魚眼レンズで撮影した画像は外側が歪んでしまうので、画像の補正処理が必要です。OpenCVを使って簡単に魚眼レンズの補正処理を行う方法をまとめます。
Gstreamerのcameracalibrateを使って、簡単に魚眼レンズの歪み補正を行う方法
広範囲の画像を撮影したい時に利用する魚眼レンズですが、撮影した画像は歪んでしまいます。今回は、Gstreamerのcameracalibrateエレメントを用いて魚眼レンズの歪みを補正する方法をご紹介します。
NVIDIA Jetson nanoで 4Kカメラは扱えるか? GPU(CUDA)を使った魚眼レンズ補正処理の性能を徹底検証
広い範囲を撮影したい場合に利用する魚眼レンズですが、魚眼レンズで撮影した動画は四隅が歪んでしまいます。今回はJetson nanoに搭載のGPU(CUDA)を使って、魚眼レンズの歪み補正処理をリアルタイム(4K@30fps)でできるか検証してみました。

記事が参考になったら、ブログランキングに協力(クリック)して貰えると嬉しいです。
スポンサーリンク
naka-kazz

昼間はIT企業に勤めてますが、プライベートでは「育児×家事×IoT」をテーマに家のスマートホーム化に取り組んでいます。Androidアプリも作っているので使って下さい。質問・コメントは、↓のコメント蘭でもFacebookメッセンジャーでもどちらでも大丈夫です。
E-mail:naka.kazz.d@gmail.com

naka-kazzをフォローする
スマートホーム 開発者向け
naka-kazzをフォローする
育児×家事×IoT

コメント

タイトルとURLをコピーしました