cheetsheet/ip
MediaPackage を CLI から操作
チャンネル名にユニークな文字列が必要、また、この文字列は MediaPackage でチャンネルを作る際に Destination で設定する必要がある チャンネルは aws cli のオプションで作成できる。 配信に必要なチャンネルは( MediaLive 側で 2 つの Destination を指定する必要があるので )2 つ設定する 2 つのチャンネルのパスワードは EC2 パラメータストアにすぐ保存する( MediaLive の仕様でパスワードは EC2 パラメータストアを参照する)
export DATE=$(date +%Y%m%d%H%M)
export MPACK_C_A=$( aws mediapackage create-channel --region ap-southeast-1 --id "${DATE}-a" )
export MPACK_C_A_URL=$(echo "$MPACK_C_A"| jq -r '.HlsIngest.IngestEndpoints[0].Url')
export MPACK_C_A_USER=$(echo "$MPACK_C_A"| jq -r '.HlsIngest.IngestEndpoints[0].Username')
aws ssm put-parameter --region ap-southeast-1 --name "/medialive/${MPACK_C_A_USER}" --value "$(echo "$MPACK_C_A"| jq -r '.HlsIngest.IngestEndpoints[0].Password')" --type SecureString
export MPACK_C_B=$( aws mediapackage create-channel --region ap-southeast-1 --id "${DATE}-b" )
export MPACK_C_B_URL=$(echo "$MPACK_C_B"| jq -r '.HlsIngest.IngestEndpoints[0].Url')
export MPACK_C_B_USER=$(echo "$MPACK_C_B"| jq -r '.HlsIngest.IngestEndpoints[0].Username')
aws ssm put-parameter --region ap-southeast-1 --name "/medialive/${MPACK_C_B_USER}" --value "$(echo "$MPACK_C_B"| jq -r '.HlsIngest.IngestEndpoints[0].Password')" --type SecureString
MediaPackageでエンドポイントを作成する
ひとつWebUIからエンドポイントを作成して雛形にする(スケルトンは設定項目が多すぎ) 一応、スケルトンは
aws mediapackage create-origin-endpoint --generate-cli-skeleton | less
で確認できる。が、簡単にWebUIで作ったものを参考に値を決める。
aws mediapackage list-origin-endpoints --region ap-southeast-1 --channel-id チャンネルID
{
"OriginEndpoints": [
{
"ChannelId": "20171207-b",
"TimeDelaySeconds": 0,
"Whitelist": [],
"StartoverWindowSeconds": 0,
"Url": "https://de623a8b9bacb203.mediapackage.ap-southeast-1.amazonaws.com/out/v1/2604298945794f3c90e13f73f334af8d/index.m3u8",
"Arn": "arn:aws:mediapackage:ap-southeast-1:139332511982:origin_endpoints/2604298945794f3c90e13f73f334af8d",
"HlsPackage": {
"StreamSelection": {
"MaxVideoBitsPerSecond": 2147483647,
"StreamOrder": "ORIGINAL",
"MinVideoBitsPerSecond": 0
},
"PlaylistType": "EVENT",
"PlaylistWindowSeconds": 5,
"UseAudioRenditionGroup": false,
"ProgramDateTimeIntervalSeconds": 0,
"SegmentDurationSeconds": 1,
"AdMarkers": "NONE",
"IncludeIframeOnlyStream": false
},
"Id": "20171207-b",
"ManifestName": "index"
}
]
}
こうなった。 エンドポイントA
export MPACK_C_A_ENDPOINT=$(cat <<EOS
{
"ChannelId": "${DATE}-a",
"Description": "",
"HlsPackage": {
"AdMarkers": "NONE",
"IncludeIframeOnlyStream": false,
"PlaylistType": "EVENT",
"PlaylistWindowSeconds": 5,
"ProgramDateTimeIntervalSeconds": 0,
"SegmentDurationSeconds": 1,
"StreamSelection": {
"MaxVideoBitsPerSecond": 2147483647,
"MinVideoBitsPerSecond": 0,
"StreamOrder": "ORIGINAL"
},
"UseAudioRenditionGroup": false
},
"Id": "${DATE}-a",
"ManifestName": "index",
"StartoverWindowSeconds": 0,
"TimeDelaySeconds": 0,
"Whitelist": []
}
EOS)
エンドポイントB
export MPACK_C_B_ENDPOINT=$(cat <<EOS
{
"ChannelId": "${DATE}-b",
"Description": "",
"HlsPackage": {
"AdMarkers": "NONE",
"IncludeIframeOnlyStream": false,
"PlaylistType": "EVENT",
"PlaylistWindowSeconds": 5,
"ProgramDateTimeIntervalSeconds": 0,
"SegmentDurationSeconds": 1,
"StreamSelection": {
"MaxVideoBitsPerSecond": 2147483647,
"MinVideoBitsPerSecond": 0,
"StreamOrder": "ORIGINAL"
},
"UseAudioRenditionGroup": false
},
"Id": "${DATE}-b",
"ManifestName": "index",
"StartoverWindowSeconds": 0,
"TimeDelaySeconds": 0,
"Whitelist": []
}
EOS)
エンドポイントを作成する
aws mediapackage create-origin-endpoint --cli-input-json "${MPACK_C_A_ENDPOINT}"
aws mediapackage create-origin-endpoint --cli-input-json "${MPACK_C_B_ENDPOINT}"
ビデオに取りつつ配信する
下記の環境変数に入っている値の場所にRTMPで動画データを送り込む $M_INPUT_INPUT_A $M_INPUT_INPUT_B
$ echo $M_INPUT_INPUT_A $M_INPUT_INPUT_B
rtmp://52.74.2.93:1935/a rtmp://52.221.110.47:1935/b
MediaPackageの管理画面でライブを確認する
WebUIでMediaPackageを開き、[ Channels ]->[ 作成したチャンネル ]->画面中ほどの[ Endpoints ]->[ Preview ]をクリック