2021/01/20

AWS Media Servicesとは?AWSでライブ配信してみよう

 
  

ライブ配信とは?

ライブ配信は、スポーツや音楽イベントなどをリアルタイムで視聴できる生配信型ストリーミングサービスです。よく比較されるものにオンデマンド配信がありますが、以下で両者の違いについて簡単に説明します。

臨場感が味わえるライブ配信

ライブ配信は、生中継形式の動画配信サービスです。視聴者側はリアルタイムの臨場感や思わぬハプニングなどを楽しめ、配信側は集中的な集客が見込めるといったメリットがあります。 大まかな仕組みとしては、撮影した映像をリアルタイムでエンコード(圧縮処理)しながら配信サーバへと送り、視聴者側は配信サーバから順次動画データを受信しながら視聴するという流れです。 ライブ配信は、当然ながら配信中に映像に加工や編集を加えることは難しく、機器のトラブルなどにより配信が止まってしまうリスクがある等、いくつか注意すべき点があります。

安定して視聴できるオンデマンド配信

オンデマンド配信は、録画放送形式の動画配信サービスです。視聴者側はいつでも好きなタイミングで動画を視聴でき、配信側は安定した質の動画コンテンツを供給できるという点がメリットです。 大まかな仕組みとしては、予め撮り終わった動画に編集を加え、エンコードしたものを配信用サーバに配置します。視聴者は配信サーバにアクセスし、各動画配信サービスを通じて自分の観たい動画を視聴することになります。

ライブ配信の仕組み

先ほどライブ配信の大まかな仕組みをご説明しましたが、AWSでライブ配信環境を構築する上では、もう少し詳しく仕組みを理解している必要がありますので、ここで解説します。 まず、撮影されたままの動画データは膨大なファイルサイズになっていますので、これを圧縮して配信に適したサイズにすることが必要です。これを「エンコード」と呼びます。デジカメで撮った元の画像データをJPEGやPNGなどのファイル形式に変換する作業に似ています。 また、配信する側にとっては一つの動画データでも、視聴する側は様々な環境、デバイスでアクセスすることになるでしょう。PCのブラウザ上で視聴する場合もあるでしょうし、スマホのアプリから視聴する場合もあります。 そこで、エンコード後の動画データを、各環境に応じたコンテンツとして生成する工程が必要です。これを「パッケージング」と呼びます。 最後に、ライブ配信に適したストレージ(これを「オリジン」と呼びます)に、パッケージングされた動画データを格納します。

AWS Media Servicesとは?

AWS Media Servicesは、AWS上で動画配信を実現するために提供されている、フルマネージド型サービス群です。 主なコンポーネントとして、AWS Elemental(以下略) MediaConnect、MediaConvert、MediaLive、MediaPackage、MediaStore、MediaTailorの6つのサービスがあります。 この内、ライブ配信の中核を担うMediaLive、MediaPackage、MediaStoreについては、後ほど詳しく解説しますので、ここでは残りの3つについて簡単にご説明します。 MediaConnectは、AWSに取り込んだライブ動画データを暗号化により保護し、安全に複数の送信先に伝送できるサービスです。 MediaConvertは、マルチスクリーン向けやオンデマンド向けなど、用途ごとに最適なフォーマットに動画データを変換してくれるサービスです。 MediaTailorは、動画データに広告を入れてコンテンツを収益化するためのサービスとなっています。

AWS Elemental MediaLiveとは?

MediaLiveは、デスクトップPCやタブレットなどのマルチデバイス・マルチスクリーンに対応したライブ配信を実現するため、オンラインでのエンコードを行うサービスです。 圧縮処理に使われるアルゴリズムをコーデックと呼びますが(H.264などが有名です)、MediaLiveは多様なコーデックに対応しており、動画・音声の変換だけでなく字幕機能もサポートしています。また、HLS形式で出力するなどのパッケージング機能も併せ持っています。

AWS Elemental MediaPackageとは?

MediaPackageは、ユーザの視聴環境に応じたコンテンツを生成し、一つの動画データからオンライン接続されたTVやスマートフォンなどで再生可能なストリームデータを作成します。 また、デジタル著作権管理 (DRM) もサポートしており、各デバイスに対応したコンテンツ保護が施されます。 MediaPackageはオリジンとしての役割も持っていますが、パッケージングされた複数のコンテンツを保持するのではなく、リクエストに応じてその都度パッケージング処理することで、オリジンの負荷を軽減する仕組みを備えています。

AWS Elemental MediaStoreとは?

MediaStoreは、AWSにおいてライブ動画コンテンツのオリジン機能を提供するストレージサービスです。 AWSにおけるストレージサービスといえばS3が有名ですが、S3が静的コンテンツの管理・配信向けであるのに対して、MediaStoreは、ライブ動画のように頻繁に更新・参照されるメディアコンテンツ向けに最適化されたストレージサービスです。 ライブ配信に求められる大量かつ高速なデータ転送を実現するためのパフォーマンスや、書き込み時と読み込み時の整合性を提供するなど、S3にはない独自の仕組みを備えています。

AWSにおけるライブ配信

先にご紹介したように、MediaLiveはエンコード機能をメインとしながらもパッケージング機能も併せ持ち、MediaPackageはパッケージング機能と共にオリジン機能も備えています。そこで、AWSにおいてライブ配信環境を構築するには、次の2パターンの構成が考えられます。 一つは、エンコードとパッケージングをMediaLiveが担い、オリジンとしてMediaStoreを利用するパターンです。もう一つは、MediaLiveはエンコードのみ行い、パッケージングとオリジン機能をMediaPackageで実現するパターンです。

MediaLiveとMediaStoreで構築する

この構成では、ビデオカメラなどの撮影機器から送られたライブ動画データをMediaLiveでリアルタイムエンコードします。そして、HLS形式でパッケージングしたファイルをMediaStoreに配置し、配信サービスを通じて配信するという流れになります。

MediaStoreコンテナの作成

まず、ライブ動画データを配置する「コンテナ」を作成します。 MediaStoreコンソールを開き、ダッシュボードのテキストボックスに任意のコンテナ名を入力して、[Create container]をクリックします。ステータスが「Creating」から「Active」に変われば作成完了です。

MediaStoreコンテナにアクセス権限を設定する

作成したコンテナに、ライブ配信用のアクセス権限を設定します。 コンテナ一覧より作成したコンテナを選択して、詳細画面に遷移します。[Edit policy]をクリックして、以下の内容を設定します。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadOverHttps",
      "Effect": "Allow",
      "Action": ["mediastore:GetObject", "mediastore:DescribeObject"],
      "Principal": "*",
      "Resource": "arn:aws:mediastore:{リージョン}:{AWSアカウントID}:container/{コンテナ名}/*",
      "Condition": {
        "Bool": {
            "aws:SecureTransport": "true"
        }
      }
    }
  ]
}

MediaLiveのChannelを作成する

テンプレートを利用してMediaLiveのChannelを作成します。 MediaLiveコンソールを開き、ナビゲーションより「channels」を選択、遷移先のチャネル画面で[Create channel]をクリックします。 [General info]セクションでは、[Channel name]に任意のチャネル名を入力し、[IAM Role]は「Create role from template」を選択して[Create IAM role]をクリックすると、自動的にロールが作成され「Use existing role」が選択状態になります。 [Channel template]より「Live event-HLS」を選択すると、左側の[Output groups]欄に「1. HD(HLS)」というOutputグループが追加されますので、[Channel class]より出力パイプライン数を選びます。デフォルトの「STANDARD」は2つの出力を持ちます。

INPUTを作成する

撮影機器から送られるライブデータを受信するインプットを作成します。 MediaLiveコンソールを開き、ナビゲーションより「Input」を選択、遷移先のインプット画面で[Create input]をクリックします。 [Input name]に任意の入力名を入力し、[Input type]は「RTMP(push)」を選択します。[Network mode]は、撮影機器を接続する場合は「public」、Amazon VPCから動画データを転送する場合は「VPC」を選択します。 [Network mode]で「public」を選択した場合はセキュリティグループを作成しましょう。[Input security group]より「Create」を選択して、テキストボックスに送信元となるホストをCIDR形式で入力し、[Create input security group]をクリックします。 [Input destinations]で配信先の情報を入力します。左側のテキストボックスにパス、右側のテキストボックスに生成される動画ファイルのプレフィックスを入力して、[Create]をクリックします。

OUTPUTを作成する

生成されたライブ動画データの出力先を設定します。 チャネルを作成したときに追加されたOutputグループを選択すると、出力先として2つ(AとB)の[HLS group destination]を設定する欄が表示されます。 それぞれのURL欄に、以下のように入力して、下部にある[Create channel]をクリックします。
mediastoressl://{MediaStoreコンテナのendpointのドメイン名部分}/{Input作成時に入力したパス}/{Input作成時に入力したプレフィックス}
チャネル一覧画面に遷移するので、対象チャネルのステータスが「Idle」に変わればMedaiLiveの設定は完了です。

MediaLiveとMediaPackageで構成する

この構成では、MediaLiveは撮影データのエンコードのみを行い、それを受け取ったMediaPackageがパッケージング処理の後データを格納します。一部重複する手順もありますので、その部分は省略しつつ説明します。

MediaPackeageのChannelを作成する

まず、MediaPackageでChannelを作成します。 MediaPackageコンソールを開き、[Create channel]をクリックします。 [ID]に任意のチャネル名を入力し、[Input type]より「Apple HLS」を選択して[Create channel]をクリックします。 遷移先の画面で[Add endpoint]をクリックし、[ID]に任意のエンドポイント名を入力し、[Packager settings]セクションの[Type]より「Apple HLS」を選択し(デフォルトで選択状態になっています)、[Save]をクリックします。

MediaLiveのChannelを作成する

続いてMediaLiveのInputを作成しますが、こちらは先に説明したInputの作成と重複するので省略して、次のMediaLiveのChannel作成をご説明します。 MediaLiveコンソールを開き、ナビゲーションより「Channels」を選択します。 [Channel name]に任意のチャネル名を入力し、[IAM role]はMediaLive用に作成したものを使うか、「Create role from template」を選択してIAMロールを作成します。[Channel template]セクションで、[Template]より「HTTP live streaming」を選択します。 出力グループ設定で、[MediaPackage destination]に作成したMediaPackageのチャネルIDを入力し、[Attach input]セクションに作成したInputを入力して[Create channel]をクリックします。

配信開始

ここまでの手順で、オリジンとしてのMediaStoreもしくはMediaPackageにコンテンツが格納されたので、MediaLiveのチャネルの[Start]をクリックし、それぞれのエンドポイントにアクセスすることでライブ配信が可能になります。 なお、大量のアクセスが想定される場合は、CDN(Content Delivery Network)としてCloudFrontというサービスを利用することをお勧めします。

AWSでライブ配信してみよう

今回は、AWS MediaServicesのコンポーネントを組み合わせて、ライブ配信環境を構築する手順について解説しました。 MediaLiveとMediaStoreの組み合わせは、ライブ配信した動画データをストレージとしてのMediaStoreにアーカイブしたい場合などに活用できます。 一方でMediaLiveとMediaPackageの組み合わせは、DRMの利用やMediaTailorとの連携が可能となります。 用途やシステム要件に応じて両者をうまく使い分けて、ライブ配信に積極的に活用してみてください。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】