MacBook Proの内蔵カメラで撮影した動画を Gstreamerを使ってAmazon Kinesis Video Streamsに配信する

スマートホーム
スポンサーリンク

はじめに

AWSのサービスにKinesis Video Streamsというものがあります。これは、カメラで撮影した動画をAWS(クラウド)経由で多数の視聴者へ配信するためのものです。

今回は、Mac Book Proに内蔵されているカメラを使って、撮影した動画をGStreamerを使って、Kinesis Video Streamsに配信する方法をご紹介します。

用意するもの

①Mac Book Pro

動画を撮影して配信するMac Book Proです。今回は、私が普段使っている「MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)」を使います。OSは「10.15.5」です。

②AWSアカウント

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

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

Amazon Kinesis Video Streamsへの配信

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

Jetson nano(配信側)の設定

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

①Xcodeのインストール

kvssinkはソースコードの形で提供されているので、コンパイルする必要があります。そこで、まずはMac Book ProにXcodeをインストールします。Xcodeは、AppStoreアプリからXcodeを検索してインストールして下さい。

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

次に、ターミナルを開き、kvssinkのソースコードを含むamazon-kinesis-video-streams-parser-libraryをダウンロードします。

$mkdir kvssink
$cd kvssink
$git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp
$

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

次に必要なライブラリをHomeBrewを使ってインストールします。HomeBrewが入っていない人は、こちらからインストールしてください。

$brew install pkg-config openssl cmake gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly log4cplus
$

④cmake

次にroot権限でcmakeします。私の環境ではrootで実行しないと途中でエラーになってしまいました。GStreamerプラグインのオプション「-DBUILD_GSTREAMER_PLUGIN=ON」をつけるのがポイントです。cmakeには10分ぐらいかかるので、気長に待ちましょう😊

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

$cd amazon-kinesis-video-streams-producer-sdk-cpp
$mkdir build
$cd build
#cmake -DBUILD_GSTREAMER_PLUGIN=ON ..
・・・省略・・・
#

⑤make

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

#make -j3

⑥ライブラリの確認

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

$ls -l
・・・省略・・・
-rwxr-xr-x   1 root    staff  377420 10 24 11:16 libgstkvssink.so

⑦プラグインパスの設定

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

$ export GST_PLUGIN_PATH=$GST_PLUGIN_PATH:`pwd`
$ echo $GST_PLUGIN_PATH
:/Users/test/Desktop/kvssink/amazon-kinesis-video-streams-producer-sdk-cpp/build

⑧プラグインの動作確認

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

$gst-inspect-1.0 kvssink
Factory Details:
  Rank                     primary + 10 (266)
  Long-name                KVS Sink
  Klass                    Sink/Video/Network
  Description              GStreamer AWS KVS plugin
  Author                   AWS KVS <kinesis-video-support@amazon.com>

Plugin Details:
  Name                     kvssink
  Description              GStreamer AWS KVS plugin
  Filename                 /Users/test/Desktop/kvssink/amazon-kinesis-video-streams-producer-sdk-cpp/build/libgstkvssink.so
  Version                  1.0
  License                  Proprietary
  Source module            kvssinkpackage
  Binary package           GStreamer
  Origin URL               http://gstreamer.net/

・・・以下省略・・・

以上で、Mac Book Pro(配信側)の設定は完了です。

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つが発行されるので、テキストエディタなどにメモします。後で、このキーを使ってMac Book Proから動画を配信します。

12.追加ユーザの確認

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

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

動画配信の実行

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

①動画配信の実行

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

$gst-launch-1.0 avfvideosrc ! videoscale ! video/x-raw, width=1024, height=768 ¥
! videoconvert ! video/x-raw,format=I420,width=1024,height=768 ¥
! vtenc_h264_hw allow-frame-reordering=FALSE realtime=TRUE max-keyframe-interval=45 bitrate=512 ¥
! h264parse ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ¥
! kvssink stream-name=Test storage-size=512 access-key="xxxxxxxx" secret-key="yyyyy" aws-region="ap-northeast-1"

GStreamerのパイプラインのポイントとしては、内蔵カメラ(avfvideosrc)から取得した動画をvtenc_h264_hwを使ってh264にハードウェアエンコードして、kvssinkに渡している点です。

②動画配信の確認

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

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

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

おわりに

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

関連記事

Jetson nanoで撮影した動画をAmazon Kinesis Video Streamsに配信してみる
Jetson nanoからAmazon Kinesis Vide Streamに動画を配信するために、GStreamer用のkvssinkプラグインをコンパイルし、AWS上でKinesis Video Streamsを設定する方法をまとめています。
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)でできるか検証してみました。

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

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

naka-kazzをフォローする
スマートホーム開発者向け
スポンサーリンク
naka-kazzをフォローする
スマートホーム×DIY

コメント