Help us understand the problem. What is going on with this article?

MediaLive->MediaStoreでライブ配信するには

More than 1 year has passed since last update.

こんにちはhagi@streampackです。
今回はMediaStoreを利用したMediaLive配信につきまして記述します。

MediaStoreとは?

AWSではこのように説明しています。

AWS Elemental MediaStore は、メディア向けに最適化された AWS ストレージサービスです。このサービスにより、ライブストリーミングによる動画コンテンツ配信に必要なパフォーマンス、整合性、低レイテンシーを実現できます。

MediaPackageとの違いは?

MediaPackageはMediaLiveからのHLSストリームを受けて複数の他のフォーマットで配信したり場合によっては提供するストリームを変えたりすることが可能です。
いわゆるパッケジングをするサービスとなります。
MediaStoreはストレージなのでMediaLiveの出力を変えず、MediaStore直またはCloudFrontなどから配信するために利用します。
イメージとしてはs3に格納するのと同じです。

はじめに

MediaLive+MediaPackageとセットアップ方法は似ているのでMediaLiveの説明は非常に簡易になっております。

構成

MediaLive + MediaStore

MediaStore

MediaLiveでデスティネーションが2つ必要なのでまずはMediaStoreのコンテナーを作成。
MediaPackageの時はchannelが2つ必須でしたがMediaStoreのコンテナーは1つでも可能。

コンテナー作成

AWSのコンソールにログインを行い右上に表示された、”Create Storage Container”で作成したいコンテナー名を入れ"Create Container"を押下。

スクリーンショット 2018-02-16 16.03.59.png

以上!

といいたいとこですが実はこれではアクセスができない。

Container Policyの編集

Containerをクリック

スクリーンショット 2018-02-16 16.13.53.png

Container Policyを編集

例など詳細はこちらをご参考ください。

誰でもhttpsで見れるようにしたいのでExample Container Policy: Public Read Access over HTTPSを利用
”region"、"owner acct number"、"container name"は環境に合わせてご設定ください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadOverHttps",
      "Effect": "Allow",
      "Action": ["mediastore:GetObject", "mediastore:DescribeObject"],
      "Principal": "*",
      "Resource": "arn:aws:mediastore:<region>:<owner acct number>:container/<container name>/*",
      "Condition": {
        "Bool": {
            "aws:SecureTransport": "true"
        }
      }
    }
  ]
}

MediaLive 設定

MediaLiveはここの設定を行い、HLS Group Destination A/Bの設定はMediaStoreのコンテナーにする。

設定を先出しすると下記のような形となります。
スクリーンショット 2018-02-16 17.04.52.png

URL

URLはMediaStoreのコンテナーのData Endpointを利用。

test.png

さらに、httpsではなくmediastoresslにする必要があります。

Destination A mediastoressl://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destA/test
Destination B mediastoressl://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destB/test

上記設定の場合配信先は下記となります。

Destination A https://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destA/test.m3u8
Destination B https://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/destB/test.m3u8

同一のendpointを指定できないのでフォルダーを指定することでDestination AとBを別にしつつマニフェストを同じ名前の”test”としています。

最後に

これでMediaLive+MediaStoreの設定は完了です。
今回はMediaStoreのコンテナーを一つにしましたがこれには利点がいくつかあると思います。
例えば、

  • CloudFront ディストリビューションは一つでいい
  • MediaStoreはAWSのダッシュボードからもファイルを確認したり削除することができるので管理がしやすいかもしれない
  • Liveのデータファイルが全て入っているのでVODとしても提供可能だがライブごとにコンテナーを分ければ管理がしやすい

などなど

ちなみにコンテナーはファイルが入った状態では削除できないかつファイルを一気に削除することができないのでスクリプトなどを利用するかダッシュボードで一ずつポチポチするしかないです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away