LoginSignup
4
0

More than 3 years have passed since last update.

MacでAmazon Kinesis Video Streamを試してみた

Last updated at Posted at 2021-03-21

はじめに

Android端末でストリーミング動画の再生と保存を実現する必要があったので、まずは手元のMacで試してみることにしました。
C++プロデューサーSDKをGStreamerプラグインとして使用します。
以下のREADME.mdを参考にしています。

Kinesis Video Streamとは

デバイスからAWSクラウドへのビデオのライブストリーミングに使用したり、あるいはリアルタイムのビデオ処理やバッチ指向のビデオ分析のためのアプリケーションを構築できる完全管理のAWSのサービスです。
用意されているSDKを使用することで、デバイスのメディアソースをAWSにストリーミングして再生、保存、分析、機械学習などを実行できます。

プロデューサーSDKの準備

まずはgit cloneでC++プロデューサーSDKをGitHubからダウンロードします。

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

ダウンロードしたリポジトリにbuildディレクトリを準備します。

$ cd amazon-kinesis-video-streams-producer-sdk-cpp
$ mkdir build
$ cd build 

必要なライブラリを取得します。

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

buildディレクトリでcmakeを実行し、GStreamerサンプルプログラムを含めてビルドします。

$ cmake .. -DBUILD_DEPENDENCIES=OFF -DBUILD_GSTREAMER_PLUGIN=ON

ここで、私の環境では以下のようなエラーが発生しました。

エラー内容と解決方法

  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR) 
CMake Error at dependency/libkvscproducer/kvscproducer-src/CMakeLists.txt:118 (message):
  OpenSSL is not found.  Make sure to export PKG_CONFIG_PATH to where
  OpenSSL's pc file is

opensslがうまくリンクされていなかったようです。
brew linkで解決できました。

brew link openssl --force

cmakeを実行した後、buildディレクトリでmakeを実行します。

$ make

以下のように出力されれば、コンパイル完了です。

[ 38%] Built target kvspic
[ 58%] Built target kvspicUtils
[ 68%] Built target kvsCommonCurl
[ 79%] Built target cproducer
[ 89%] Built target KinesisVideoProducer
[ 91%] Built target kvs_gstreamer_multistream_sample
[ 92%] Built target kvs_gstreamer_audio_video_sample
[ 94%] Built target kvs_gstreamer_file_uploader_sample
[ 95%] Built target kvs_gstreamer_sample
[100%] Built target gstkvssink

GStreamerプラグインを使用して実行

以下は、buildディレクトリではなく、リポジトリのルートから実行します。

$ export GST_PLUGIN_PATH=`pwd`/build
$ export LD_LIBRARY_PATH=`pwd`/open-source/local/lib
$ gst-inspect-1.0 kvssink

上記が問題なく実行できれば、ストリーミングの実行が可能です。

以下のように、実行するとKinesis Video Streamのコンソール上でストリーミング動画を確認できます。音声は入りません。

gst-launch-1.0 autovideosrc ! videoconvert ! video/x-raw,format=I420,width=1280,height=720 ! 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=MyKinesisVideoStream storage-size=512 access-key="YourAccessKeyId" secret-key="YourSecretAccessKey" aws-region="ap-northeast-1"

音声を含めてストリーミングする場合は、以下を実行します。

gst-launch-1.0 -v avfvideosrc ! videoconvert ! vtenc_h264_hw allow-frame-reordering=FALSE realtime=TRUE max-keyframe-interval=45 ! kvssink name=sink stream-name="MyKinesisVideoStream" access-key="YourAccessKeyId" secret-key="YourSecretAccessKey" aws-region="ap-northeast-1" osxaudiosrc ! audioconvert ! avenc_aac ! queue ! sink.

実行すると、Kinesis Video Streamに"MyKinesisVideoStream"というストリーム名でビデオストリームが作成されました。
スクリーンショット 2021-03-21 10.55.20.png

メディア再生のタブを開くと、ストリーミング映像が確認できます。
クリップをダウンロードからMP4形式でダウンロードすることができます。
スクリーンショット 2021-03-21 10.55.59.png

Macでの実行例

Macでの様々な実行例が以下に記載されています。

おわりに

Android端末でも試してみました。
Android端末では、AndroidプロデューサーライブラリとAmazon Cognitoを使用してストリーミングすることができます。
以下を参考にして手順通りに実行すると、スムーズにストリーミングできました。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0