8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWS Elemental MediaConnect が SRT に対応したよ!

Last updated at Posted at 2021-03-17

2021/4/1 記事修正

AWS Elemental MediaConnect でいつの間にか SRT (Secure Reliable Transport)をサポートするようになってました。

SRT とは?

Secure Reliable Transport は Haivision 社によって独自に開発された、オープンソースの技術で、UDP プロトコルを利用しつつ TCP と同様の信頼性の高い伝送を実現しています。
低遅延を維持しながら、パケットロスやエラー回復、訂正機能を持つ動画伝送用のプロトコルです。

要は、Zixi や RIST (Reliable Internet Stream Transport) といった、QoS を考慮した動画伝送用プロトコルのひとつです。

【出典】
https://en.wikipedia.org/wiki/Secure_Reliable_Transport
https://www.haivision.com/products/srt-secure-reliable-transport/

AWS Elemental MediaConnect ではこれまで下記プロトコルをサポートしてましたが、あらたにここに SRT listner が加わりました。

  • RTP/RTP-FEC
  • Zixi
  • RIST
  • SRT listener (<= New!!)

listener と銘打ってあるように、今回サポートされたのは SRT Listener Mode のみで Caller は対応していません。

それでは早速触ってみます。

構成

Action CAM - HDMI -> Jetson Nano (GStreamer) - SRT -> MediaConnect -> iPhone (Haivision Play Pro)

アクションカムをカメラとして、HDMI で Jetson Nano に入力し、GStreamer で SRT を生成し MediaConnect に流し込みます。

Player は iPhone にインストールした元祖 Haivision 社が提供している Play Pro という無料アプリで視聴します。

Jetson Nano

今回、手元にあった Jetson Nano + GStreamer という組み合わせにしましたが、SRT が送信できるものであれば何でもよいです。
(Jetson やラズパイは GStreamer を動かすまでが結構めんどいです)

有名所では他に下記のものが対応しています。

  • ffmpeg
  • VLC
  • OBS

Haivision Play Pro

Haivision 社の最新のスマホアプリです。
下記から入手可能です。

Android については Android 9 以降が対象で、Android 8 以前は前バージョンの Haivision Play が利用できます。

Player についてはその他、下記でも視聴できます。

  • ffplay
  • VLC

MediaConnect

まずは暗号化 (passphrase) 無しで Flow を作成します。 passphrase 無しの場合は簡単です。

Create Flow - Source

Flow を作成します。 Source で SRT listener を選択し、ポートとか White List とか設定します。
とりあえず遅延最短設定で試したいので、Minimum latency を最小設定値 100ms で設定します。

スクリーンショット 2021-03-17 9.57.22.png

Source

スクリーンショット 2021-03-17 14.30.31.png

Create Flow - Output

Source を設定すると Flow が作成されます。
続いて同 Flow に Output を設定します。
同様に SRT listener を選択し、ポートとか White List とか設定します。
こちらも Minimum latency を 100ms で設定します。

スクリーンショット 2021-03-17 9.56.58.png

Output

スクリーンショット 2021-03-17 14.30.41.png

MediaConnect の設定はこれだけ。
5分もかかりませんね。

配信

それでは早速流してみましょう。

Encoder

Jetson Nano

下記 GStreamer コマンドを実行します。

gst-launch-1.0 -v -e v4l2src device=/dev/video0 ! videorate ! 'video/x-raw, width=(int)1920, height=(int)1080, framerate=30/1' ! nvvidconv ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, framerate=30/1' ! omxh264enc bitrate=8000000  ! video/x-h264 ! h264parse ! queue ! mpegtsmux alignment=7 ! srtclientsink uri=srt://{MediaConnect Flow IP}:6000 latency=100

Player

iPhone

Haivision Play Pro で視聴します。

Image from iOS (1).png

参考までに ffplay でも視聴可能です。

ffplay srt://{MediaConnect Flow IP}:8000

視聴

分かりやすいようにブラウザで時計を表示してそれを Haivison Play Pro で視聴しました。

Image from iOS (36).png

当たり前ですが、問題なく視聴できます。

そして、おそらく MediaConnect における遅延最小設定で 1018ms でした。

まとめ

自分の周りでも SRT 案件が増えてきており、これまで対応できるソリューションが少なく、おのずと選択肢が限られていた為、MediaConnect のサポートがきて嬉しい限りです。

その中でいくつか気になった点を挙げます。

暗号化 (passphrase) も可能

ストリーム暗号化も可能です。
ただ、平文で passpharase を入力するのではなく、MediaConnect の他の暗号化と同様に、AWS Secrets Manager で Secret を作成、 IAMポリシー、ロールを作成してからそれらの ARN を指定する、といったちょっと手間がかかる方法です。

ひとつの Output に、ひとつの Player しか接続できない

MediaConnect の Output は Listener として動作しますが、これに接続できる Player (Caller) は一つだけのようです。

上記のように仮に srt://{MediaConnect Flow IP}:8000 に Player が接続していると、後から来た Player は視聴できません。

もし複数の Player で視聴する場合は、Player の数だけ Output を作成する必要があります。

SRT Caller Mode

今回サポートされたのは Listener Mode のみなので、MediaConnect Flow から他に対して Push 的に送りつける機能は現状ありません。

例えば、Wowza も SRT をサポートしていますが、Ingest は Listener Mode しか対応していないので、MediaConnect から Wowza に SRT を送ることはできません。

遅延

【追記】 2021/3/31 に遅延問題は修正されました。

上で示したように、Source と Output の latency をそれぞれ最小設定値 100ms とし、Encoder および Player 側でも 100ms とした場合でも、自分のテスト環境では約 4.5 秒の遅延が発生しました。

単純に latency 設定値での増加分は合計で 200ms なので、その他の部分で結構時間がかかっていると思われます。

ちなみに Encoder と Player が同設定で Haivision SRT Gateway を使った場合、遅延は最短で1秒を切ります。

8
3
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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?