Posted at

AWS MediaLive から MediaPackage に出力 (2019/3/8 新機能)

いつの間にか桜がほぼ満開なことに気がついた streampack 木村です。

さてさて MediaLive の output group に新たに MediaPackage が追加されました。

https://aws.amazon.com/jp/about-aws/whats-new/2019/03/aws-elemental-medialive-simplifies-sending-live-streams-to-aws-elemental-mediapackage/

これまでも HLS から webdav もしくは basic put で MediaPackage に出力することは可能でしたが、destination で Credential 情報を入力しないといけないので少々面倒でした。

これで便利になるかと思いきや、普通に使っている人は 2019/3/27 現在、ユーザーガイド記載の方法だけではエラーで失敗します。

その他、お作法もあるのでやり方を纏めてみました。

ユーザーガイド

https://docs.aws.amazon.com/medialive/latest/ug/creating-mediapackage-output-group.html


Add output group

はい、以下のように MediaPackage が追加されているのでこれを選択して進めます。


MediaPackage group

入力するのは MediaPackage であらかじめ作成しておいた channel ID のみです。

エンドポイント URL やユーザー名/パスワードの入力は必要ありません!


Stream settings

あとは HLS 出力設定をおこなうのですが、ここでお作法

Frame RateAspect Rate の項目で INITIALIZE_FROM_SOURCE は選択することができず、SPECIFIED にして任意の値を入力してあげる必要があります。


Frame Rate

以下の項目を設定する必要があります。

ITEM
Value

Framerate Control
SPECIFIED

Framerate Numerator
任意の値

Framerate Denominator
任意の値

例えば 30fps なら、

Framerate Numerator を 30

Framerate Denominator を 1

29.97fps なら

Framerate Numerator を 30000

Framerate Denominator を 1001

にします。


Aspect Ratio

こちらは PAR ControlSPECIFIED にすれば他の項目は未入力でも設定可能です。

その他、エンコードに必要な項目を入力し Update channel でチャンネルが作成できます。


配信エラー

しかしながら、このまま流しても前述のとおりエラーとなり配信できません。


回避方法

ロール MediaLiveAccessRole にポリシー AWSElementalMediaPackageReadOnly をアタッチする。

要は MediaLive で普通に使っているロールからは MediaPackage の Credential 情報にアクセスできない為、読み取り権限を付与しようということです。


MediaLiveAccessRole

IAM ページから MediaLiveAccessRole を探します。

割り当てられてるポリシーを確認します。

ポリシーをアタッチしますMediaPackage 関連のポリシーを探し、AWSElementalMediaPackageReadOnly を選択してアタッチします。

ロールに新ポリシーが適用されていることを確認して準備完了です。

あとは通常通りライブを入れるとエラー無しで配信可能となります。


最後に

MediaServices 関連は気がつくと新機能が増えてたりします。

上記の機能も MediaLive を弄って気がついたのですが、当初はユーザーガイドにもまだ記載がなく自分で適当に設定してもエラーで動かなかったので AWS さんに問い合わせて教えてもらいました!