Edited at

AWS MediaLiveを使って見た

More than 1 year has passed since last update.

こんにちは、動画チームのhagi@streampackです。


はじめに

東京リージョンにMediaLiveがきたので試して見ることに。

発表当時はノースバージニアを試したが今回は東京のをテスト。

2/8 にMediaLiveにedit機能が追加されていることを確認しましたのと”黒い画面”を停止する方法もありましたので追記/編集いたします。


構成

今回の構成はMediaLive->MediaPackageの構成で作ることにする。

実際配信する際はおそらくCDNを利用すると思われますがMediaLiveはCloudFrontのオリジンになれなし、MediaStoreは東京リージョンにない。

とはいえ今回はCDNの設定は省きます。


MediaPackage

MediaLiveでデスティネーションが2つ必要なのでまずはMediaPackageのチャンネルを二つ作成。


Channel作成


  1. チャンネルを作成

  2. 必須は”ID” - 用途がわかりやすいIDが良い。ここではdemoAとしました。

  3. Descriptionはチャンネルの説明

  4. ”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


  1. ”Channel name” を入力 - チャンネルの用途がわかりやすい名前がおすすめ

  2. ”IAM role”の作成または既存のIAM roleの指定


Channel Input

"Create input"を押下


Input details


  1. ”Input name”に入力の名前を入力

  2. ”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


  1. "HLS group destination A"にMediaPackage demoA情報を入力

URL:Input URL

      Username:Username

      Password:”Create AWS Elemental MediaLive parameter”を選択後 "Name"には任意の名前を入力。Password valueはMediaPackageのパスワードを入力


  1. 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ぽいこと”の手順を記述しています。

気になるようでしたらご参考ください。

MediaLiveでストリームの冗長化ぽいことをするには


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

https://XXXXXXXXXXXXXXXXX.mediapackage.ap-northeast-1.amazonaws.com/out/v1/XXXXXXXXXXXXXXXXXXXXXXXX/index.m3u8


demoB

MediaPackageで作成したdemoBのEndpoint

https://XXXXXXXXXXXXXXXXX.mediapackage.ap-northeast-1.amazonaws.com/out/v1/XXXXXXXXXXXXXXXXXXXXXXXX/index.m3u8


最後に

MediaLiveを使って見て非常に設定が簡単である印象を受けました。

ただ編集オプションが無いので一度作成したチャンネルを変更したければCloneするしか無いと思います。

たCloneした場合でも元で使っているinputが利用できなくなる。

そのためoutput設定を保存するか、チャンネルをdelete後すぐにCloneすれば設定は持っていけるが少々めんどくさい。

またdestinationが2つ必要なのはもしかしして起動したら2個分料金取られるんだろうなと個人的に思いました。

追記:

channelのedit機能があり作成されたchannelの編集が可能です。

またHLSの設定で”Input Loss Action”をEMIT_OUTPUT->PAUSE_OUTPUTに設定することによってrtmp送出がとまった際デファルトの黒い画面が流れず、停止し入力を受け付けていない場合も課金は発生しないとのことです。