この記事の目次
ライブ配信とは?

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

AWS Media Servicesとは?

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と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]をクリックします。配信開始

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

この記事の監修者・著者

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