はじめに
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をダウンロードします。
1 2 3 4 |
$mkdir kvssink $cd kvssink $git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp $ |
③必要なライブラリのインストール
次に必要なライブラリをHomeBrewを使ってインストールします。HomeBrewが入っていない人は、こちらからインストールしてください。
1 2 |
$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の公式ページにも無かったので、ここにまとめておきます。
1 2 3 4 5 6 |
$cd amazon-kinesis-video-streams-producer-sdk-cpp $mkdir build $cd build #cmake -DBUILD_GSTREAMER_PLUGIN=ON .. ・・・省略・・・ # |
⑤make
cmakeが完了したらビルドします。こちらは1分ほどで完了します。
1 |
#make -j3 |
⑥ライブラリの確認
makeが完了したら、できあがったGStreamer用のライブラリファイルを確認しましょう。以下のように、「libgstkvssink.so」が作成されていればOKです。
1 2 3 4 |
$ls -l ・・・省略・・・ -rwxr-xr-x 1 root staff 377420 10 24 11:16 libgstkvssink.so |
⑦プラグインパスの設定
作成したプラグインをGStreamerから利用できるように、プラグインのパス「$GST_PLUGIN_PATH」を設定します。
1 2 3 4 |
$ 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です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
$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ユーザのキーに置き換えてください。
1 2 3 4 5 |
$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から動画を配信する方法をまとめました。
関連記事
コメント