CloudFront と AWS Media Services によるライブストリーミングビデオの配信 - Amazon CloudFront

CloudFront と AWS Media Services によるライブストリーミングビデオの配信

CloudFront と AWS Media Services を使用して、世界中の視聴者にライブコンテンツを配信するには、このセクションに含まれるガイダンスに従います。

AWS Elemental MediaLive では、ライブビデオストリームがリアルタイムでエンコードされます。大きいビデオストリームをエンコードするために、MediaLive ではビューワーに配信できる小さいバージョン (エンコード) に圧縮されます。

ライブビデオストリームを圧縮した後、次の 2 つの主要なオプションのいずれかを使用して、コンテンツを準備および配信できます。

  • 必要な形式にコンテンツを変換して配信する: AWS Elemental MediaPackage を使用して、ビデオコンテンツを 1 つの形式から複数の形式に変換し、さまざまなタイプのデバイス用にコンテンツをパッケージ化できます。コンテンツをパッケージ化するときに、追加の機能を実装し、デジタル著作権管理 (DRM) を追加して、コンテンツの不正使用を防ぐこともできます。CloudFront を使用して MediaPackage でフォーマットされたコンテンツを配信する詳細な手順については、「AWS Elemental MediaPackage でフォーマットされたライブ動画の配信」を参照してください。

  • スケーラブルなオリジンを使用してコンテンツを保存して配信する: ビューワーが使用しているすべてのデバイスに必要な形式でコンテンツが MediaLive でエンコードされている場合は、AWS Elemental MediaStore などの高スケーラブルなオリジンを使用してコンテンツを配信します。CloudFront を使用して MediaStore コンテナに保存されているコンテンツを配信する詳細な手順については、「AWS Elemental MediaStore をオリジンとして使用する動画の配信」を参照してください。

これらのオプションのいずれかを使用してオリジンを設定したら、CloudFront を使用して、ビューワーにライブストリーミングビデオを配信できます。

ヒント

可用性の高いリアルタイムの視聴エクスペリエンスを実現するサービスを自動的にデプロイする AWS ソリューションについて、情報を入手することができます。このソリューションを自動的にデプロイする手順については、「ライブストリーミングの自動デプロイ」を参照してください。

AWS Elemental MediaStore をオリジンとして使用する動画の配信

AWS Elemental MediaStore コンテナに動画を保存している場合は、CloudFront ディストリビューションを作成してコンテンツを配信できます。

開始するには、CloudFront に MediaStore コンテナへのアクセスを許可します。次に、CloudFront ディストリビューションを作成し、MediaStore で使用するように設定します。

AWS Elemental MediaStore コンテナからコンテンツを提供するには
  1. Amazon CloudFront に AWS Elemental MediaStore コンテナへのアクセスを許可する」の手順に従った後、以下の手順に戻ってディストリビューションを作成します。

  2. 次の設定でディストリビューションを作成します。

    オリジンドメイン

    MediaStore コンテナに割り当てられたデータエンドポイントです。ドロップダウンリストから、ライブビデオ用の MediaStore コンテナを選択します。

    オリジンのパス

    オブジェクトが保存されている MediaStore コンテナのフォルダ構造です。詳細については、「オリジンのパス」を参照してください。

    カスタムヘッダーを追加する

    CloudFront がリクエストをオリジンに転送するときにカスタムヘッダーを追加する場合は、ヘッダーの名前と値を追加します。

    ビューワープロトコルポリシー

    [Redirect HTTP to HTTPS (HTTP から HTTPS へのリダイレクト)] を選択します。詳細については、「ビューワープロトコルポリシー」を参照してください。

    キャッシュポリシーとオリジンリクエストポリシー

    キャッシュポリシーでは、[Create policy] (ポリシーの作成) を選択し、キャッシュのニーズとセグメントの継続期間に適したキャッシュポリシーを作成します。ポリシーを作成したら、キャッシュポリシーのリストを更新し、先ほど作成したポリシーを選択します。

    オリジンリクエストポリシーでは、ドロップダウンリストから [CORS-CustomOrigin] (CORS-CustomOrigin)を選択します。

    その他の設定については、他の技術的要件またはビジネスのニーズに基づいて特定の値を設定できます。ディストリビューションのすべてのオプションのリストおよびその設定に関する情報については、「ディストリビューションを作成または更新する場合に指定する値」を参照してください。

  3. アプリケーション (メディアプレーヤーなど) 内のリンクの場合は、CloudFront を使用して配信する他のオブジェクトと同じ形式でメディアファイルの名前を指定します。

AWS Elemental MediaPackage でフォーマットされたライブ動画の配信

AWS Elemental MediaPackage を使用してライブストリームをフォーマットした場合は、CloudFront ディストリビューションを作成し、ライブストリームを配信するようにキャッシュ動作を設定できます。以下のプロセスでは、MediaPackage を使用してライブビデオ用のチャネルの作成エンドポイントの追加が済んでいることを前提としています。

MediaPackage で CloudFront ディストリビューションを手動で作成するには、以下の手順に従います。

ステップ 1: CloudFront ディストリビューションを作成して設定する

以下の手順を実行して、MediaPackage で作成したライブビデオチャネルの CloudFront ディストリビューションを設定します。

ライブビデオチャネルのディストリビューションを作成するには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/cloudfront/v4/home で CloudFront コンソールを開きます。

  2. [ディストリビューションの作成] を選択します。

  3. 以下のようなディストリビューション用の設定を選択します。

    オリジンドメイン

    MediaPackage ライブビデオチャネルとエンドポイントがあるオリジン。テキストフィールドを選択し、ドロップダウンリストから、ライブビデオ用の MediaPackage オリジンドメインを選択します。1 つのドメインを複数のオリジンエンドポイントにマップできます。

    別の AWS アカウントを使用してオリジンドメインを作成した場合は、オリジンの URL 値をフィールドに入力します。オリジンは HTTPS URL であることが必要です。

    例えば、https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 などの HLS エンドポイントの場合、オリジンドメインは 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com です。

    詳細については、「オリジンドメイン」を参照してください。

    オリジンのパス

    コンテンツが配信される MediaPackage エンドポイントへのパス。

    [オリジンパス] フィールドは自動入力されません。正しいオリジンパスを手動で入力する必要があります。

    オリジンパスの仕組みの詳細については、オリジンのパス を参照してください。

    重要

    CloudFront ディストリビューションのどこかにルーティングするには、ワイルドカードパス * が必要です。明示的なパスと一致しないリクエストが実際のオリジンにルーティングされないようにするには、そのワイルドカードパスに「ダミー」オリジンを作成します。

    例 : 「ダミー」オリジンの作成

    次の例で、エンドポイント abc123 および def456 は「実際の」オリジンにルーティングしますが、他のエンドポイントのビデオコンテンツのリクエストは、適切なサブドメインがないと mediapackage.us-west-2.amazonaws.com にルーティングされ、HTTP 404 エラーになります。

    MediaPackage エンドポイント:

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/def456/index.m3u8

    CloudFront オリジン A:

    Domain: 3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com Path: None

    CloudFront オリジン B:

    Domain: mediapackage.us-west-2.amazonaws.com Path: None

    CloudFront キャッシュビヘイビア:

    1. Path: /out/v1/abc123/* forward to Origin A 2. Path: /out/v1/def456/* forward to Origin A 3. Path: * forward to Origin B

    その他のディストリビューション設定には、他の技術的要件またはビジネスニーズに基づいて値を指定します。ディストリビューションのすべてのオプションのリストおよびその設定に関する情報については、「ディストリビューションを作成または更新する場合に指定する値」を参照してください。

    他のディストリビューションの設定を選択したら、[Create Distribution] (ディストリビューションの作成) を選択します。

  4. 作成したディストリビューションを選択し、[Behaviors] (動作) タブを選択します。

  5. デフォルトのキャッシュ動作を選択し、[Edit] (編集) をクリックします。オリジンに対して選択したチャネルの正しいキャッシュ動作設定を指定します。後で他のオリジンを 1 つ以上追加し、それらのキャッシュ動作設定を編集します。

  6. CloudFront ディストリビューションページに移動します。

  7. ディストリビューションの [Last modified] (最終更新日時) 列の値が [Deploying] (デプロイ中) から日付と時刻に変わって、CloudFront によってディストリビューションが作成されたことが示されるまで待ちます。

ステップ 2: MediaPackage エンドポイントのドメインにオリジンを追加する

この手順を繰り返して、各 MediaPackage チャネルエンドポイントをディストリビューションに追加します。ただし、「ダミー」オリジンを作成する必要があることに注意してください。

オリジンとして他のエンドポイントを追加するには
  1. CloudFront コンソールで、チャンネル用に作成したディストリビューションを選択します。

  2. [Origins] (オリジン)、[Create origin] (オリジンの作成) の順に選択します。

  3. [Origin domain] (オリジンドメイン)では、ドロップダウンリストからチャネルの MediaPackage エンドポイントを選択します。

  4. その他の設定には、他の技術的要件またはビジネスニーズに基づいて値を指定します。詳細については、「オリジンの設定」を参照してください。

  5. [Create Origin] (オリジンの作成) を選択します。

ステップ 3: すべてのエンドポイントのキャッシュ動作を設定する

エンドポイントごとに、キャッシュ動作を設定して、リクエストを正しくルーティングするパスパターンを追加する必要があります。指定するパスパターンは、配信するビデオの形式によって異なります。次の手順には、Apple HLS、CMAF、DASH、および Microsoft スムーズストリーミング形式で使用するパスパターン情報が含まれています。

通常、エンドポイントごとに 2 つのキャッシュ動作を設定します。

  • ファイルのインデックスになる親マニフェスト

  • セグメント (ビデオコンテンツのファイル)

エンドポイントのキャッシュ動作を作成するには
  1. CloudFront コンソールで、チャンネル用に作成したディストリビューションを選択します。

  2. [Behaviors] (動作)、[Create Behavior] (動作の作成) の順に選択します。

  3. [パスパターン] で、特定の MediaPackage OriginEndpoint GUID をパスプレフィックスとして使用します。

    パスパターン

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 などの HLS エンドポイントの場合は、以下の 2 つのキャッシュビヘイビアを作成します。

    • 親および子マニフェストの場合は、/out/v1/abc123/*.m3u8 を使用します。

    • コンテンツセグメントの場合は、/out/v1/abc123/*.ts を使用します。

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.m3u8 などの CMAF エンドポイントの場合は、以下の 2 つのキャッシュビヘイビアを作成します。

    • 親および子マニフェストの場合は、/out/v1/abc123/*.m3u8 を使用します。

    • コンテンツセグメントの場合は、/out/v1/abc123/*.mp4 を使用します。

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.mpd などの DASH エンドポイントの場合は、以下の 2 つのキャッシュビヘイビアを作成します。

    • 親マニフェストの場合は、/out/v1/abc123/*.mpd を使用します。

    • コンテンツセグメントの場合は、/out/v1/abc123/*.mp4 を使用します。

    https://3ae97e9482b0d011.mediapackage.us-west-2.amazonaws.com/out/v1/abc123/index.ism などの Microsoft Smooth Streaming エンドポイントの場合は、マニフェストのみが使用されるため、1 つのキャッシュビヘイビア (out/v1/abc123/index.ism/*) のみを作成します。

  4. キャッシュ動作ごとに、以下の設定の値を指定します。

    ビューワープロトコルポリシー

    [Redirect HTTP to HTTPS (HTTP から HTTPS へのリダイレクト)] を選択します。

    キャッシュポリシーとオリジンリクエストポリシー

    キャッシュポリシーでは、[Create policy] (ポリシーの作成) を選択します。新しいキャッシュポリシーでは、次の設定を指定します。

    最小 TTL

    古いコンテンツを提供しないように 5 秒以下に設定します。

    クエリ文字列

    クエリ文字列([Cache key settings] (キャッシュキー設定)) で、[Include specified query strings] (指定したクエリ文字列を含める) を選択します。[Allow] (許可) では、次の値を入力し、[Add item] (アイテムを追加) を選択します。

    • CloudFront によってキャッシュの基準として使用されるクエリ文字列パラメータとして m を追加します。MediaPackage レスポンスには、エンドポイントの変更時間を取得するためのタグ ?m=### が常に含まれます。コンテンツがすでにキャッシュされていて、このタグに別の値が設定されている場合、CloudFront はキャッシュされたバージョンを配信する代わりに新しいマニフェストをリクエストします。

    • MediaPackage でタイムシフト表示機能を使用している場合は、マニフェストリクエスト (startend*.m3u8) のキャッシュ動作の追加のクエリ文字列パラメータとして *.mpdindex.ism/* を指定します。これにより、マニフェストリクエストで指定した期間に固有のコンテンツが配信されます。コンテンツのタイムシフト表示および形式の開始/終了リクエストパラメータの詳細については、「AWS Elemental MediaPackage ユーザーガイド」の「タイムシフト表示」を参照してください。

    • MediaPackage でマニフェストフィルタリング機能を使用している場合は、マニフェストリクエスト (*.m3u8*.mpdindex.ism/*) のキャッシュ動作の追加のクエリ文字列パラメータとして aws.manifestfilter を指定します。これにより、aws.manifestfilter クエリ文字列を MediaPackage オリジンに転送するようにディストリビューションが設定されます。これは、マニフェストフィルタリング機能を有効にするために必要です。詳細については、「AWS Elemental MediaPackage ユーザーガイド」の「マニフェストでのフィルタリング」を参照してください。

    • 低レイテンシー HLS (LL-HLS) を使用している場合は、マニフェストリクエスト (*.m3u8) のキャッシュビヘイビアで使用するキャッシュポリシーの追加クエリ文字列パラメータとして _HLS_msn および _HLS_part を指定します。これにより、_HLS_msn および _HLS_part クエリ文字列を MediaPackage オリジンに転送するようにディストリビューションが設定されます。これは、LL-HLS のプレイリストリクエストのブロック機能を有効にするために必要です。

  5. [Create] (作成) を選択します。

  6. キャッシュポリシーを作成したら、キャッシュ動作の作成ワークフローに戻ります。キャッシュポリシーのリストを更新し、先ほど作成したポリシーを選択します。

  7. [Create behavior] (動作の作成) を選択します。

  8. エンドポイントが Microsoft Smooth Streaming エンドポイント以外の場合、次の手順を繰り返して 2 つ目のキャッシュ動作を作成します。

ステップ 4: ヘッダーベースの MediaPackage CDN 認証を有効にする

MediaPackage エンドポイントと CloudFront ディストリビューションの間で、ヘッダーベースの MediaPackage CDN 認証を有効にすることをお勧めします。詳細については、「AWS Elemental MediaPackage ユーザーガイド」の「MediaPackage で CDN 認証を有効にする」を参照してください。

ステップ 5: CloudFront を使用してライブストリームチャネルを提供する

ディストリビューションの作成、オリジンの追加、キャッシュビヘイビアの作成、ヘッダーベースの CDN 認証の有効化が済んだら、CloudFront を使用してライブストリームチャネルを配信できます。CloudFront は、キャッシュ動作用に定義した設定に基づいて、ビューワーからのリクエストを正しい MediaPackage エンドポイントにルーティングします。

アプリケーション (メディアプレーヤーなど) 内のリンクの場合は、CloudFront URL の標準形式でメディアファイルの URL を指定します。詳細については、「CloudFront でファイルの URL の形式をカスタマイズする」を参照してください。