CloudFrontとS3を用いたサーバーレスの動画ストリーミング配信

posted in: AWS | 0

こんにちは、オカザキです。
AWSの機能について調べているとサーバーレスで動画のストリーミング配信ができるという記事を見かけたので実際に自分でも環境構築をして配信サイトを作成しました。
その手順についての紹介を行いたいと思います。

使用サービス

今回は以下の3つのAWS内サービスを使用しました。

サービス名 説明
Amazon S3 ストレージサービス
Amazon CloudFront CDNサービス
AWS Elemental MediaConvert 動画変換サービス

構築手順

注意点

今回の構築ではHLSというAppleが実装したプロトコルを使用したため、
対応しているブラウザはsafari限定となります。

Amazon S3バケットの作成

AWS管理コンソールより「S3」を選択し、バケットを作成します。

任意のバケット名を記載しリージョンを選択します。

バケット作成

作成したバケットに 元動画と変換後動画を格納するフォルダを作成します。

フォルダ作成

Amazon CloudFrontの設定

AWS管理コンソールより「CloudFront」を選択し、「Create Distribution」より
Webのデリバリーメソッドにて「 Get Start」を選択します。

CloudFront作成

OriginSettingの「Origin Domain Name」にて先ほど作成したバケットを選択します。
その他の項目は デフォルトのままにして「Create Distribution」を選択します。

ステータスが「Deployed」になるまで待ちます。(10分程度)

CloudFrontデプロイ待ち

AWS Elemental MediaConvertの設定

MediaConvert操作前に予め、S3の元動画フォルダ内に配信をしたい動画ファイルを格納しておきます。

S3格納

AWS管理コンソールより「MediaConvert」を選択し、ジョブを作成します。

・入力

入力1にて先ほど格納した動画ファイルを選択します。
入力ファイル

・出力グループ

出力グループをApple HLSを選択します。
出力グループ

送信先に S3の変換後動画フォルダを指定します。

セグメントの長さを任意の秒数に指定します。
→ここの指定に応じて ストリーミングする際に、 動画を分割して読み込む回数が変わります。

出力詳細1

出力の名前修飾子に任意の文字を入力します。

出力詳細2

ビットレートにて任意のビットレートを指定します。
出力詳細3

IAMロールにて「AmazonS3FullAccess]を持つIAMロールを指定します。
出力詳細4

作成ボタンを押下し、変換が完了するのを待ちます。

変換が完了すると、S3の変換後フォルダに「m3u8」ファイルおよび「ts」ファイルが出力されます。

サイトの確認

ブラウザ(safari)にて 、サイトにアクセスします。
https://○○/S3変換後フォルダ名/m3u8ファイル名
〇〇=cloudfrontのディストリビューションが自動的に割り当てるドメイン名

アクセスすると、ストリーミング配信できていることがわかります。
これにて無事ストリーミング配信を行うことができました。

AWSにはさまざまなサービスがあるのでそれらを組み合わせて情報発信していけたらと思います。

参考サイト

以上です。

LINEで送る
Pocket