Amazon Web Services ブログ
AWS Elemental MediaTailorの新機能Channel Assemblyで既存ソースから仮想チャンネルを立ち上げる方法
放送局やOTT(Over-the-Top)チャンネルの運営者は、既存の複数のオンデマンドソースから番組を集め、それらをリニアプレイリストにブレンドすることで、仮想チャンネルを作成することができるようになりました。
これまでは、オンラインストリーミング用にメディアをトランスコードするコストや、カタログ内の既存メディアを検索してキュレーションする複雑さのために、少数の視聴者グループ(興味や地域性に基づく視聴者のカテゴリーなど)向けにカスタマイズされたチャンネルを作成するには、莫大な費用がかかっていました。
AWS Elemental MediaTailor Channel Assemblyでは、既存のカタログにあるトランスコード済みのビデオセグメントを再利用して、視聴者にコンテンツを配信するためのスタティックまたはダイナミックなプレイリストを作成することができます。これにより、複数の地域や視聴者の組み合わせに合わせてソースコンテンツを再トランスコードする必要がなくなります。
ループ再生するコンテンツ (またはループ再生する番組)や、手動またはレコメンデーションエンジンから提供された番組ラインナップを挿入して動的に番組を追加するなど、複数のスケジュールオプションを選択することができます。また、番組を意識したインテリジェントなルールを用いて、広告ブレークをスケジュールすることもできます。
AWS Elemental MediaTailorの始め方
既存のコンテンツのHLS と DASH でパッケージ化されたストリームを 1 つずつ用いて、新しいストリーミング チャンネルを作りたいとします。コンテンツは、同じ数のビットレート層と各レベルでの同じパラメータ(コーデック、解像度、フレームレートなど)など、同様の特性を持つようにエンコードおよびパッケージ化されていなければなりません。私はAWS Elemental MediaConvertを使ってコンテンツを準備し、Amazon Simple Storage Service (S3)に保存することができます。サポートされているソースフォーマットは、HLS、DASH、CMAF(HLSとDASHのマニフェスト含む)です。この例では、私のCDNを通してコンテンツをお届けできます。もちろん、私はAmazon CloudFrontを使用しています。
最初のステップは、コンテンツのソースを定義して、スケジュールに含めたい個々のアセットを登録することです。AWS Elemental MediaTailorのコンソールで、「Channel Assembly」の以下にある「Create source location」をクリックします。
そして、ビデオソースを追加します。
またはAWS Command Line Interface (CLI)を用いる場合:
# Create a Source Origin
aws mediatailor create-source-location \
--source-location-name NewsBlogSourceLocation
--http-configuration \
BaseUrl=https://dyye954rrfxy8.cloudfront.net // <-- this is my CloudFront distribution DNS name
{
"Arn": "arn:aws:mediatailor:us-west-2:1234567890:sourceLocation/NewsBlogSourceLocation",
"CreationTime": 1614660822156,
"HttpConfiguration": {
"BaseUrl": "https://dyye954rrfxy8.cloudfront.net"
},
"LastModifiedTime": 1614660822156,
"Name": "NewsBlogSourceLocation"
}
# Register two video assets
aws mediatailor create-vod-source \
--source-location-name NewsBlogSourceLocation \
--vod-source-name MyFirstVodSource \
--http-package-configurations \
Id=hls,Path=/out/v1/24247f7e7f2942509058713671dce466/209b7701f2224791a9a44440e6e5b9e0/e2fdd7d6ae5f4e41ac57089be4de2d02/index.m3u8,SourceGroup=hls,Type=HLS \
Id=cmaf,Path=/out/v1/24247f7e7f2942509058713671dce466/d71309185897405383031fd7d4515198/8901ed3df0e842c99fd8523c5b935d2f/index.m3u8,SourceGroup=cmaf,Type=HLS
{
"Arn": "arn:aws:mediatailor-gamma:us-west-2:898676505562:vodSource/NewsBlogSourceLocation/MyFirstVodSource",
"CreationTime": 1614661120839,
"HttpPackageConfigurations": [
{
"Id": "hls",
"Path": "/out/v1/24247f7e7f2942509058713671dce466/209b7701f2224791a9a44440e6e5b9e0/e2fdd7d6ae5f4e41ac57089be4de2d02/index.m3u8",
"SourceGroup": "hls",
"Type": "HLS"
},
{
"Id": "cmaf",
"Path": "/out/v1/24247f7e7f2942509058713671dce466/d71309185897405383031fd7d4515198/8901ed3df0e842c99fd8523c5b935d2f/index.m3u8",
"SourceGroup": "cmaf",
"Type": "HLS"
}
],
"LastModifiedTime": 1614661120839,
"Name": "MyFirstVodSource",
"SourceLocationName": "NewsBlogSourceLocation"
}
aws mediatailor create-vod-source \
--source-location-name NewsBlogSourceLocation \
--vod-source-name MySecondVodSource \
--http-package-configurations \
Id=hls,Path=/out/v1/5bc2c7b8a384403681222f703c6dd3ee/209b7701f2224791a9a44440e6e5b9e0/e2fdd7d6ae5f4e41ac57089be4de2d02/index.m3u8,SourceGroup=hls,Type=HLS \
Id=cmaf,Path=/out/v1/5bc2c7b8a384403681222f703c6dd3ee/d71309185897405383031fd7d4515198/8901ed3df0e842c99fd8523c5b935d2f/index.m3u8,SourceGroup=cmaf,Type=HLS
{ ... }
次のステップでは、チャネルを作成し、チャネルの出力とチャネルのアクセス許可を定義します。
実際のAWS Account IdとAWS Region nameを置き換えることを忘れないでください。
上記はCLIを使って自動化することができます。
# Create the channel
aws mediatailor create-channel \
--channel-name NewsBlogChannel \
--playback-mode LOOP \
--outputs \
HlsPlaylistSettings={ManifestWindowSeconds=30},ManifestName=index,SourceGroup=hls \
HlsPlaylistSettings={ManifestWindowSeconds=30},ManifestName=cmaf,SourceGroup=cmaf
{ ... }
# define the channel access permissions
# do not forget to replace *MY ACCOUNT ID* with your actual AWS Account ID. Also adjust the AWS Region name.
aws mediatailor put-channel-policy \
--channel-name NewsBlogChannel \
--policy "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Sid\": \"AllowAnonymous\", \"Effect\": \"Allow\", \"Principal\": \"*\", \"Action\": \"mediatailor:GetManifest\", \"Resource\": \"arn:aws:mediatailor:us-west-2:*MY ACCOUNT_ID*:channel/NewsBlogChannel\" } ] }"
チャンネルを開始する前の3番目で最後のステップは、ビデオソースの追加です。この作業は、一度だけ行うことも、視聴者がストリームを見ているときに動的に調整することもできます。番組は、アセットとスケジュールのタイミングを組み合わせたものです。番組は、他の番組の前や後など、必要な場所に追加することができます。
または、CLIを使って自動化することができます:
aws mediatailor create-program \
--channel-name NewsBlogChannel \
--schedule-configuration "Transition={Type=RELATIVE,RelativePosition=AFTER_PROGRAM}" \
--program-name MyFirstProgram \
--vod-source-name MyFirstVodSource \
--source-location NewsBlogSourceLocation
{
"AdBreaks": [],
"Arn": "arn:aws:mediatailor:us-west-2:1234567890:program/NewsBlogChannel/MyFirstProgram",
"ChannelName": "NewsBlogChannel",
"CreationTime": 1614661735435,
"LastModifiedTime": 1614661735435,
"Name": "MyFirstProgram",
"SourceLocationName": "NewsBlogSourceLocation",
"VodSourceName": "MyFirstVodSource"
}
aws mediatailor create-program \
--channel-name NewsBlogChannel \
--schedule-configuration "Transition={Type=RELATIVE,RelativePosition=AFTER_PROGRAM,RelativeProgram=MyFirstProgram}" \
--program-name MySecondProgram \
--vod-source-name MySecondVodSource \
--source-location NewsBlogSourceLocation
{ ... }
最後にチャンネルをスタートさせます。課金はこの時点から始まります。
いつでもdescribe-channelを呼び出して、チャンネルのエンドポイントを得ることができます: (出力フォーマットごとに1つ)
aws mediatailor start-channel \
--channel-name NewsBlogChannel
aws mediatailor describe-channel \
--channel-name NewsBlogChannel
{
"Arn": "arn:aws:mediatailor:us-west-2:1234567890:channel/MyFirstChannel",
"ChannelState": "RUNNING",
"CreationTime": 1613709143819,
"Name": "MyFirstChannel",
"Outputs": [
{
"HlsPlaylistSettings": {
"ManifestWindowSeconds": 30
},
"ManifestName": "index",
"PlaybackUrl": "https://abc123.abc123.channel-assembly.mediatailor.us-west-2.amazonaws.com/v1/channel/NewsBlogChannel/index.m3u8",
"SourceGroup": "hls"
},
{
"HlsPlaylistSettings": {
"ManifestWindowSeconds": 30
},
"ManifestName": "cmaf",
"PlaybackUrl": "https://abc123.abc123.channel-assembly.mediatailor.us-west-2.amazonaws.com/v1/channel/NewsBlogChannel/cmaf.m3u8",
"SourceGroup": "cmaf"
}
],
"PlaybackMode": "LOOP"
}
最新のウェブブラウザ(私はSafariでテストしました)やffplayなど、互換性のあるクライアントでエンドポイントを開くことで、自分のチャンネルをテストすることができます。ドキュメントには、広告ブレークを追加する方法や、ワンステップでストリームを配信するためのCloudFront構成を作成する方法など、より高度な例が記載されています。
上記のコマンドをAWSアカウントに適用した場合は、料金が発生しないように、テスト後にチャンネルを停止することを忘れないでください。
通常通り、初期費用はかかりません。使った分だけお支払いください。価格は、オンデマンド・アセットの場合、$0.10/チャンネル-時間 からスタートします。これはチャンネルを24時間365日稼働させた場合の月額$73/チャンネルに相当します。
※US East (N. Virginia)、US West (Oregon) での金額です。Asia Pacific (Tokyo)では、本記事を執筆時点で、$0.20/チャンネル-時間 となります。
AWS Elemental MediaTailor Channel Assemblyは、US East (N. Virginia)、US West (Oregon)、Asia Pacific (Singapore)、Asia Pacific (Sydney)、Asia Pacific (Tokyo)、Europe (Frankfurt)、Europe (Ireland)リージョンで利用可能です。今日からすぐにお使いいただけます。
AWS Media & Entertainment 参考コンテンツ
・AWS Media & Entertainment Blog (日本語)
・AWS Media & Entertainment Blog (英語)
AWSのメディアチームの問い合わせ先: awsmedia@amazon.co.jp
※毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。
翻訳は BD山口とSA斎藤が担当しました。原文はこちらをご覧ください。