いつの間にか桜がほぼ満開なことに気がついた 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 さんに問い合わせて教えてもらいました!

元記事はこちら

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