AWS MediaLiveでSRTプロトコルを試してみた

**SRTとは**
SRT（Secure Reliable Transport）は映像配信用プロトコルです。
ざっくりいうと RTMP より性能がいい方式です。
RTMPのポート番号は1935に対してSRTのポート番号は自由です。本書では5000を使います。
注：SRTは字幕のSRT (SubRip Subtitle) もあるので注意。
注：SRT自体はプロトコルなのでファイル転送も可能です。

**Caller と Listener**
SRT には Caller と Listener があります。
送受信で一方が Call だともう一方は Listen になります。両方 Call はないです。
注：Caller,Listener の他に Rendezvous があります。
 
# AWS の設定

① AWS MediaConnect で Flow を作成
② AWS MediaLive で Input を作成
③ AWS MediaConnect で Output を作成

## AWS MediaConnect で Flow を作成

<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/d41644a7-a11c-9d4e-0e72-870f9fbf1050.jpeg'>
<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/67bd0e9d-3512-217b-4a6e-7429da68af9b.jpeg'>

|項目|値|
|--|--|
|Source type|Standard source|
|Protocol|SRT listener|
|Allowlist CIDR block|自宅のグローバルIP（xx.xx.xx.xx/32）|
|Inbound port|5000|
|Maximum bitrare|4000000（4Mbps）|
|Maximum latency|5000（5秒）|

## AWS MediaLive で Input を作成

<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/1708ba5d-4f0e-7388-4364-2adb2be0eff4.jpeg'>
<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/d21f02c4-bc4a-c35f-f550-f13ffb626674.jpeg'>

|項目|値|
|--|--|
|Input type|Media Connect|
|Input class|SINGLE_INPUT（SINGLEにしないとFlowが2つ必要）|
|Flow A ARN|先ほど作成したもの|

## AWS MediaConnect で Output を作成

<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/8cbf42ab-e9e6-0184-fd76-a583d1d02456.jpeg'>
<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/59efbcda-75bc-a732-8532-8db3a9d39058.jpeg'>

|項目|値|
|--|--|
|Source type|Standard output|
|Protocol|SRT listener|
|port|5001|
|CIDR allow list|自宅や会社のグローバルIP（xx.xx.xx.xx/32）|

**START**

<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/e7d7ba78-ab15-8a0d-91a2-77f6af1008eb.jpeg'>

IPアドレスを控えてください。
配信側 srt://xxx.xxx.xxx.xxx:5000
受信側 srt://xxx.xxx.xxx.xxx:5001
Start を押すと開始します。

# 配信アプリ It's my Live

<img width=60% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/94b7aced-16a7-1bef-732b-b07cc75dc6b2.jpeg'>

自作アプリ「It's my Live」を使います。
iOS (Apple Store), Android (Google Play) で公開中。
良いニュース：2024年1月にAndroidも可能になりました！（以前はiOSのみ）
悪いニュース：機能面はよわよわです（SwiftからFlutterに乗り換え）

Google Play で検索しても出ない場合は下記URL
[Google Play - It's my Live](https://play.google.com/store/apps/details?id=com.twitter.koji4104.itsmylive)

## It's my Live の設定

<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/bf2bb4c6-a402-2cf8-5ae2-ada5c07a48f8.png'>
<img width=70% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/431d571d-579e-9859-4240-c2771a4c7d71.png'>

URLに srt://xxx.xxx.xxx.xxx:5000 を登録します。
手元の iPhone と Android の両方でテストして配信できました。
注：スマホの自動ロックで停止するので注意してください。

# プレイヤー VLC

<img width=50% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/fa19256f-40a6-488b-c62d-30ddbfbe4fbf.png'> <img width=25% src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/253995/fcd2b285-7124-521f-1a04-69965ee47733.png'>

ネットワークにURLを入れます。
無事に再生することができました。

# SRTプロトコルは流行るのか

配信アプリ「It's my Live」が SRT に対応したのが2019年5月です。令和元年の10連休に頑張りました。それから約5年どうなんでしょうね。
どうやら Youtube と Haivision社に動きがあるようです。もし Youtube が対応するならワンチャンありますね。う～ん頑張ってプレイヤーも作るかな。
映像配信の仕事をしているとトラブルの8割はネットワークなんですよね。そこを解決するアプリを作りたい。

ソース
https://github.com/koji4104/ItsMyLive

昔のMediaLiveの記事（2018年06月）
https://qiita.com/koji4104/items/c1b4ddd27fa0f9c011d9