[UPDATE] AWS Elemental MediaTailorのChannel AssemblyがLiveソースに対応しました!

AWS Elemental MediaTailorの仮想リニアライブストリームを作成できるChannel Assembly機能で、これまでのVODソースに加えてLiveソースも利用できるようになりました。実際に設定して動作を確認してみます。
2022.04.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

清水です。AWS Media Servicesのアップデート情報をお届けするコーナーです。本エントリでお伝えするアップデート情報はこちら!AWS Elemental MediaTailorのChannel Assembly機能がLiveソースに対応しました。(2022/04/21付でポストされたアップデート情報になります。)

2017年11月末にAWS Media ServicesのひとつとしてリリースされたAWS Elemental MediaTailor、パーソナライズした動画の広告挿入の機能をもともと有していましたが、1年前ほど前の2021年3月のアップデートで新たに仮想ライブストリームを作成するChannel Assembly(チャンネルアッセンブリ)機能がサポートされました。

MediaTailorのChannel Assembly機能リリースの当初はVODソースをループさせるコンテンツベースのプログラムによる仮想ライブストリームでしたが、これに時間ベースのスケジューリング機能が追加されたのが2021年9月のアップデートです。

VODソースに対しコンテンツベースもしくはスケジューリングベースで仮想ライブストリームが作成できていたわけですね。そして今回のアップデートでは、この仮想ライブストリームの入力ソースにLiveソースが使用できるようになりました。本エントリでは実際にMediaTailorのChannel AssemblyでLiveソースを用いた仮想ライブストリームをやってみたのでまとめてみます。

Channel AssemblyのChannel Tier(Type)について

今回のMediaTailor Channel AssemblyのLiveソース対応で、ChannelリソースにTier(もしくはType)が設定されました。料金も変わってきます。まずはこれを抑えておきましょう。

これまでのVODソースのみを扱うChannelはBasic Tier(Basic Channel)、VODソースに加えてLiveソースも扱うChannelはStandard Tier(Standard Channel)となります。

新たにChannel AssemblyのChannelリソースを作成する際、Tierの項目が表示されるようになっています。VODのみを扱うChannel Assemblyの場合でも意識する必要がある点、注意しておきましょう。

このChannelのTier(Type)、料金についても異なります。料金ページを確認しておきましょう。Basic Tierについては従来の料金と変わりませんが、Standard TierについてはLiveソースに対応しているぶん、Basic Tierに比べると割高になっていますね。

MediaTailor Pricing

なお、現時点(2022/04/29 18:00)で日本語版のMediaTailor料金ページについては、まだChannel Tier(Channel Type)についての記載はなく、これまでの実行チャンネル(つまりBasic Tier)のみの料金表示となっています。まもなくアップデートされるかと思いますが、注意しましょう。

料金 - AWS Elemental MediaTailor | AWS

MediaTailorのChannel AssemblyでLiveソースを使ってみた

それでは、実際にMediaTailorのChannel AssemblyでLiveソースを使ってみます。LiveソースとVODソースの準備からはじめ、Channel AssemblyのSource locationの作成、Channelリソース作成とProgram作成を経て、実際に仮想ライブストリームを開始し、Liveソースに切り替わることを確認します。

LiveソースとVODソースの準備

今回LiveソースはAWS Elemental MediaLiveを使用しました。Workflow Wizardを使ってライブ動画配信に必要なリソースをサクッと作成します。

実際のLiveソースはMediaPackageのHLS EndpointをCloudFront経由で使用します。以下のURLでアクセスできるぐあいですね。

  • https://dxxxxxxxxxxxxx.cloudfront.net/out/v1/xxxxxxxxxxxxxxxxxxxxxxx/index.m3u8

このMediaPackageのHLS Endpoint、後述のMediaTailor側LiveソースでEXT-X-PROGRAM-DATE-TIMEが必要になることから、1点設定を変更しておきます。Package settingsの項目から「Program date/time interval (sec)」を有効にし、値を6秒としておきました。(参考: パッケージャ設定のフィールド - AWS ElementalMediaPackage

Channel AssemblyでLiveソース使用の際、少なくともFiller SlateでVODソースが必要となります。このVODソース、Liveソースと同じドメインで参照できるように準備しました。具体的にはMediaConvertでHLS素材を準備します。このときMediaLive Workflowの設定にあうように、Segment Durationやビットレートなどを調整しておきました。素材はS3に格納されていますが、MediaLive Workflowで作成されたCloudFrontにこのS3をオリジンとして追加、Behavior「/vod/*」でこのオリジンにアクセスできるように設定をしておきます。

これでVODソースについては以下URLでアクセスできる状態になりました。(CloudFrontドメイン名はLiveソースと同一です。)

  • https://dxxxxxxxxxxxxx.cloudfront.net/vod/img_3435.m3u8

Source locationの作成

ライブソース、VODソースのそれぞれの準備ができたら、本題のMediaTailorのChannel Assembly用のリソースを作成していきます。こちらも、Source locationsとChannelのリソース2つに別れます。まずはSource locationを作成します。

[Create source location]ボタンから進みます。Nameは「blog-live-source-channel-location」としました。Base URLとてMediaLive Workflow Wizardで作成し、/vod用のオリジンとBehavior設定を追加したCloudFrontディストリビューションの情報を入力します。(なおこの「Add live source」画面のrequirementsからMediaPackageの設定でEXT-X-PROGRAM-DATE-TIMEを追加しています。)

Source location作成後、LiveソースとVODソースをそれぞれ追加します。まずVODソースを追加しました。[Add Vod source]ボタンから進みます。

VODソースのNameはそのまま「vod-source」としました。Package configurationsでRelative pathを指定します。VODソースのURLが「https://dxxxxxxxxxxxxx.cloudfront.net/vod/img_3435.m3u8」なので、Relative pathは/vod/img_3435.m3u8となります。

続いてLiveソースです。「Live sources」のタブから[Add live source]ボタンで進みます。Nameはこちらもそのまま「live-source」としました。Relative pathはLiveソースのURLが「https://dxxxxxxxxxxxxx.cloudfront.net/out/v1/xxxxxxxxxxxxxxxxxxxxxxx/index.m3u8」なので、/out/v1/xxxxxxxxxxxxxxxxxxxxxxx/index.m3u8を入力します。

Channelの作成

続いてChannelの作成に移ります。Channel assemblyのChannelsのページから[Create channel]で進みます。Channel Nameは「blog-live-source-channel」としました。TierではBasicではなくStandardを選択します。Playback modeはTierでStandardを選択することで、自動的にLiner固定となります。Filler slateの設定画面が現れますので、先ほど設定したSource locationのvod-sourceを設定しておきます。

[Next]ボタンで次のページに進みます。Output detailsではManifest nameを例示されているindexとしました。ほかの項目はそのまま、[Next]で進みます。

アクセスコントロールの設定画面です。今回は検証目的ですので、「Attach a public policy」を選択しました。実際には使用目的等に応じて適切なポリシーを選択しましょう。

最後にReview and create画面で内容を確認し、[Create channel]ボタンでChannelを作成します。

ChannelにLiveソースのProgramを追加

Channelを作成したあと、以下のようにSchedule設定画面に遷移します。ここで[Add program]より、Liveソース用のProgramを追加していきます。

Program Nameは「live-program」としました。Source typeで「Live」を選択。Source location nameで作成してあるlive-sourceを選択します。

Playback configurationでは、Duration in millisecondsで最小値となる「600000」(=10分)を入力します。Transition typeはAbsolute固定ですのでstart timeを適切に設定します。そのまま[Add program]でLiveソース用のProgramを作成しました。

ライブソースを追加するとSchedule画面は以下のような状態となります。

仮想ライブストリームでLiveソースに切り替わることの確認

以上でLiveソースを使用する仮想ライブストリームの準備ができました。実際に仮想ライブストリームでLiveソースに切り替わることを確認していきます。Liveソース側、MediaLiveのWorkflowをStartし映像を打ち上げ、ライブ配信を開始しておきます。そしてMediaTailorのChannelをStartさせます。OutputsタブのPlayback urlを参照することで、このChannelから仮想ライブストリームを視聴することができます。今回はmacOSのSafariでm3u8ファイルを直接読み込ませて視聴しました。

この街並みの映像はFiller slateとして指定したvod-souceの内容です。この段階ではProgramで指定したlive-sourceの開始前の時刻ですので、Filler slateの映像がループして流れている、というわけです。

この段階でのChanel scheduleは以下のようになっています。

Programで指定した時刻である17時35分を少し経過すると、以下のようにLiveソースの内容(スマホのStreaming Softwareから時計を撮影している実際のライブ映像)に仮想ライブストリームが切り替わりました。(仮想ライブストリームに、実際のライブストリームが利用されている状況ですね。)

切り替わりのタイミングですが、実際に切り替わったのは17時35分数十秒経過後、しかしライブ映像としては35分00秒ないし01秒から再生が始まりました。MediaTailor側での内部的な切り替えはリアルタイム、配信での視聴の際に時差が生じているかたちかと考えます。

また仮想ライブストリームの映像がlive-sourceのものに切り替わったあとにChannel scheduleを確認すると以下のようになっていました。live-program前のFiller slateが終わり、実際にlive-programに切り替わっている状態ですね。

まとめ

AWS Elemental MediaTailorの新機能、Channel AssemblyでのLiveソース対応について、実際に仮想ライブストリーム中でLiveソースに切り替えて動作を確認してみました。1年ほど前にリリースされたChannel Assembly機能、当時もVODソースのみですが仮想ライブストリームを容易に構築できるということで非常にわくわくするアップデートでした。今回のアップデートでLiveソースにも対応し、活用の幅がさらに広がるのではないでしょうか。MediaLiveのSchedule機能などとも比較しながら、上手に使い分けていきたいなと思いました。