LoginSignup
2
1

More than 1 year has passed since last update.

Amazon Kinesis Video Streams API/SDK による開発

Last updated at Posted at 2022-02-02

Amazon Kinesis Video Streams を使ったアプリケーションを開発するための SDK について整理してみました。

※WebRTC については触れていません。

参考

API 構成

Amazon Kinesis Video Streams のストリームに対する配信、閲覧は以下の API を使用することで実現され、呼び出すための SDK が各種用意されています。

Producer API

ストリームに映像を送信する API はひとつだけです。

Producer API

  • PutMedia : ストリームにメディアデータをセグメント単位(1~10秒)で送信する
    • MKV 形式のみ
    • CLI: なし

PutMedia API は通常の API とは異なりセッションを張ったまま複数のやりとりをおこなう Long Running Session となっており、AWS CLI ではサポートされていません。基本的には SDK の使用が推奨されています。直接 API を叩く場合、以下のような処理を自前でおこなう必要があると思われます。

  • 認証
  • コネクションの管理 (コネクションの維持、再接続など)
  • フロー制御 (レイテンシーを監視してフレームを破棄するなど)

Consumer API

Consumer API

Consumer 側は AWS SDK で GetMedia/GetMediaFromFragmentList API を呼ぶことで、送信されたメディアデータにメタデータが付与されたチャンクという単位で読み出しをおこないますが、これを解析する Parser Library が別途用意されます。また mp4 ファイル形式や DASH/HLS で再生するための URL を取得する API も用意されています。

Consumer API を使った具体的な実装方法は別途、以下に整理しました。

SDK のビルド

Amazon Kinesis Video Streams に対する SDK は以下のリポジトリに分かれています。

CPP Producer / GStreamer Plugin / JNI

Producer Library (CPP Producer) と、GStreamer 用のプラグイン、Java 用の JNI (インターフェイス)がビルドできるプロジェクトです。

CPP Producer / GStreamer Plugin / JNI のビルド準備

Debian GNU/Linux の場合

apt-get install -y cmake g++ git m4 make pkg-config

# JNI もビルドする場合
apt-get install -y openjdk-11-jdk

# GStreamer Plugin もビルドする場合
apt-get install -y 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

macOS の場合

brew install cmake git log4cplus make pkg-config

# JNI もビルドする場合
brew install adoptopenjdk11

# GStreamer Plugin もビルドする場合
brew install gstreamer gst-plugins-base \
  gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav \
  log4cplus openssl

CPP Producer / GStreamer Plugin / JNI のビルド

git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
cd amazon-kinesis-video-streams-producer-sdk-cpp
mkdir -p build
cd build
cmake .. \
  -DBUILD_JNI=ON \
  -DBUILD_GSTREAMER_PLUGIN=ON
make

ビルド結果は以下に出力されます。 (macOS の場合は .dylib)

  • CPP Producer) libKinesisVideoProducer.so
  • JNI) libKinesisVideoProducerJNI.so
  • JStreamer プラグイン) libgstkvssink.so
  • 依存ライブラリ
    • dependency/libkvscproducer/kvscproducer-src/libcproducer.so
    • open-source/local/lib 配下

CPP Producer の動作確認

export AWS_DEFAULT_REGION=ap-northeast-1
export AWS_ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
tst/producerTest

テスト用のサンプルソースは tst/ProducerTestFixture.h に書かれています。

GStreamer Plugin の動作確認

GST_PLUGIN_PATH にビルドしたライブラリのあるパスを指定することで、GStreamer から認識されます。

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

Producer SDK Java

Producer SDK Java のビルド準備

Debian GNU/Linux 11 の場合

apt-get install -y maven

macOS の場合

brew install maven

Producer SDK Java のビルド

git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java.git
cd amazon-kinesis-video-streams-producer-sdk-java
mvn compile assembly:single

Producer SDK Java の動作確認

src/main/demo/com/amazonaws/kinesisvideo/demoapp/DemoAppMain.java を書き換えて、適切なリージョンおよび認証情報を使用するよう修正します。

例)

final KinesisVideoClient kinesisVideoClient = KinesisVideoJavaClientFactory
        .createKinesisVideoClient(Regions.AP_NORTHEAST_1, new ProfileCredentialsProvider());

実行

JAVA_LIBRARY_PATH=$(cd "../amazon-kinesis-video-streams-producer-sdk-cpp/build"; pwd)
STREAM_NAME=stream-test
java \
  -classpath target/amazon-kinesis-video-streams-producer-sdk-java-1.11.0-jar-with-dependencies.jar \
  -Djava.library.path=${JAVA_LIBRARY_PATH} \
  -Dkvs-stream=${STREAM_NAME} \
  com.amazonaws.kinesisvideo.demoapp.DemoAppMain

src/main/resources/data/h264/ 配下の動画ファイルが、指定されたストリームに送信されます。

C Producer

上記の C++/Java 用ライブラリとは別のリポジトリに、ベースとなる C 言語版が存在します。

git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git
cd amazon-kinesis-video-streams-producer-c
mkdir build 
cd build
cmake ..
make

試してはいません。

2
1
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
2
1