#はじめに
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設定は、忘れがちなので注意が必要。