はじめに

AWS Media Servicesを使ってライブ配信を行ったときの、
最低限の設定を備忘録としてメモしておきます。

細かな設定値は、それぞれの環境に置き換えていただければ幸いです。

構成

MediaLive – MediaStore – CloudFront

引用:https://aws.amazon.com/jp/mediastore/

要件

  • HLS
  • ABR(2M, 1M ,500K)
  • 各種ログ : 有効(トラブルシューティング対応のため)
  • トップレベルマニフェスト : 有効

MediaLive

Input

項目 その他
Input type RTMP(push)
Network mode Public
Input security group 0.0.0.0/0
Input destinations Destination A live, xxx
Input destinations Destination B live, xxx

Channnel

Channel and input details

項目 その他
IAM role MediaLiveAccessRole

General settings

項目 その他
Channnel logging Log level = INFO

Input attachment

項目 その他
Attachment name 上記で作成したInputを選択

Output Groups

HLS」で作成

項目 その他
HLS group destination A mediastoressl://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/live/xxx
HLS group destination B mediastoressl://XXXXXXXXXXXXXX.data.mediastore.ap-northeast-1.amazonaws.com/live/xxx

HLS settings

項目 その他
CDN Settings Hls media store
Input Loss Action PAUSE_OUTPUT

HLS outputs

項目 その他
Output 1 _2000k
Output 2 _1000k
Output 3 _500k
Manifest and Segments
項目 その他
Segment Length 任意の秒数
Redundant Manifest ENABLED

Output1 – Stream settings

Video

項目 その他
Width 1280
Height 720
Codec Settings H264
Rate Control CBR, 2000000
Frame rate SPECIFIED, 30, 1
GOP Structure 60, FRAMES, 2

Audio

項目 その他
Codec Settings Aac
Bitrate 128000

Output2,3は省略。

MediaStore

項目 その他
Access logging Enabled AWSコンソールから操作可能
Container policy ※1 下記参照
Container CORS policy ※2 下記参照

※1 : Container policy

{
  "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"
        }
      }
    }
  ]
}

【参考】コンテナポリシーの例: HTTPS 経由のパブリック読み取りアクセス
https://docs.aws.amazon.com/ja_jp/mediastore/latest/ug/policies-examples-public-https.html

※2 : Container CORS policy

[
  {
    "AllowedHeaders": [
      "*"
    ],
    "AllowedMethods": [
      "GET",
      "HEAD"
    ],
    "AllowedOrigins": [
      "*"
    ],
    "MaxAgeSeconds": 3000
  }
]

【参考】CORS ポリシーの例: 任意のドメインへの読み取りアクセス
https://docs.aws.amazon.com/ja_jp/mediastore/latest/ug/cors-policies-examples-read-all-domains.html

CloudFront

項目 その他
Logging On
Origin Protocol Policy Match Viewer
Viewer Protocol Policy Redirect HTTP to HTTPS
Whitelist Headers Origin
Error Pages 必要なものを設定

【参考】AWS Elemental MediaStore をオリジンとしたビデオの配信
https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/live-streaming.html#video-streaming-mediastore

おわりに

上記の設定で簡単にライブ配信が可能です。いい時代になりました。
MediaStoreのCORS設定は、忘れがちなので注意が必要。

元記事はこちら

【AWS】ライブ配信 お手軽設定のススメ