share facebook facebook twitter menu hatena pocket slack

2018.02.16 FRI

AWS MediaLiveを使って見た

Kahoru Hagiya

WRITTEN BY Kahoru Hagiya

こんにちは、動画チームの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送出がとまった際デファルトの黒い画面が流れず、停止し入力を受け付けていない場合も課金は発生しないとのことです。

元記事はこちら

AWS MediaLiveを使って見た

Kahoru Hagiya

Kahoru Hagiya

タバコやめて絶賛ベイプ中な動画チームの初老

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。