こんにちは、動画チームのhagi@streampackです。
はじめに
東京リージョンにMediaLiveがきたので試して見ることに。
発表当時はノースバージニアを試したが今回は東京のをテスト。
2/8 にMediaLiveにedit機能が追加されていることを確認しましたのと”黒い画面”を停止する方法もありましたので追記/編集いたします。
構成
今回の構成はMediaLive->MediaPackageの構成で作ることにする。
実際配信する際はおそらくCDNを利用すると思われますがMediaLiveはCloudFrontのオリジンになれなし、MediaStoreは東京リージョンにない。
とはいえ今回はCDNの設定は省きます。
MediaPackage
MediaLiveでデスティネーションが2つ必要なのでまずはMediaPackageのチャンネルを二つ作成。
Channel作成
- チャンネルを作成
- 必須は”ID” – 用途がわかりやすいIDが良い。ここではdemoAとしました。
- Descriptionはチャンネルの説明
- ”Input type”はまだHLSのみ
Endpoint 作成
endpointは配信するURL作成。
今回はデフォルト設定で行くのでIDだけを入力してあとは割愛
Saveを押下するとendpointが作成されてURLが表示される。
MediaLiveでは”Input URL”、”Username”、”Password”が必要
MediaLiveではMediaPackageのデスティネーション(Input URL)が二つ必要なので上記手順を再度行う。
結果、異なるInput URLが2つできた
MediaLive
General Info
- ”Channel name” を入力 – チャンネルの用途がわかりやすい名前がおすすめ
- ”IAM role”の作成または既存のIAM roleの指定
Channel Input
“Create input”を押下
Input details
- ”Input name”に入力の名前を入力
- ”Input type”でエンコーダーからの配信方式を入力 – 今回はPCからrtmpで配信を行う予定なのでrtmp(push)を選択
Input security group
rtmp送出先のセキュリティーグループを設定可能
今回は全てから受け付けるため、0.0.0.0/0で作成後選択
Input destinations
rtmpのendpointを作成
なぜかApplication nameだけでも登録はできるがApplication instanceが無いと受け付けない
For RTMP PUSH inputs, you must specify two destination application names and instances.
今回は下記を設定
application name: live
application instance : demoA, demoB
application instanceはストリーム名となります。
するとendpoint rtmp://XXX.XXX.XXX.XXX:1935/live/demoA と endpoint rtmp://XXX.XXX.XXX.XXX:1935/live/demoB が作成されます。
Channel template
今回はライブ配信には既存のテンプレートをLive eventを利用
するとOutputsが作成されます。
Outputs
HD
Output groupsの HD(HLS)を押下
HLS group destination A
- “HLS group destination A”にMediaPackage demoA情報を入力
URL:Input URL
Username:Username
Password:”Create AWS Elemental MediaLive parameter”を選択後 “Name”には任意の名前を入力。Password valueはMediaPackageのパスワードを入力
- Create AWS Elemental MediaLive parameterを押下
HLS group destination B
上記同様”HLS group destination B”にMediaPackage demoB情報を入力
Create channelを押下
確認
以前書いたのですがrtmpの投げ方はこちら(でどうやってrtmpを投げるの?)をご確認ください。
まずはMediaLiveで作成したチャンネルをスタート!
送出先情報
送出先につきましてはどちらでも両方でも問題ありません。
実際demoAとdemoBは全く関係ありません。
非常に残念ですが
demoAの入力はdestination Aに出力され、demoBはdestination Bに出力されます。
特にfailoverが構成されているとか両系で流さないと行けないわけでは無いです。
ただ設定する際にdestinationが2つ必要なのです。
あまり意味が無いように思えますがDNSなりでダイナミックにストリームも変更できるかもしれません。
もしくはマニフェストを編集して両方含めるとかとか。。。
下記記事では簡易な”failoverぽいこと”の手順を記述しています。
気になるようでしたらご参考ください。
demoA
URL(MediaLive Channel inputより):rtmp://XXX.XXX.XXX.XXX:1935/live/
ストリーム名:demoA
demoB
URL(MediaLive Channel inputより):rtmp://XXX.XXX.XXX.XXX:1935/live/
ストリーム名:demoB
視聴情報
HLSの生ストリームなのでSafariやEdgeで確認することができる。AndroidもChromeだと視聴可能
demoA
MediaPackageで作成したdemoAのEndpoint
demoB
MediaPackageで作成したdemoBのEndpoint
最後に
MediaLiveを使って見て非常に設定が簡単である印象を受けました。
ただ編集オプションが無いので一度作成したチャンネルを変更したければCloneするしか無いと思います。
またCloneした場合でも元で使っているinputが利用できなくなる。
そのためoutput設定を保存するか、チャンネルをdelete後すぐにCloneすれば設定は持っていけるが少々めんどくさい。
またdestinationが2つ必要なのはもしかしして起動したら2個分料金取られるんだろうなと個人的に思いました。
追記:
channelのedit機能があり作成されたchannelの編集が可能です。
またHLSの設定で”Input Loss Action”をEMIT_OUTPUT->PAUSE_OUTPUTに設定することによってrtmp送出がとまった際デファルトの黒い画面が流れず、停止し入力を受け付けていない場合も課金は発生しないとのことです。