【やってみた】AWS Elemental MediaLiveとAWS Elemental MediaPackageでライブ配信してみた #reinvent

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

はじめに

清水です。先日発表されたAWS Media ServicesのAWS Elemental MediaLiveとAWS Elemental MediaPackageを使ってライブ配信をしてみたので、まとめてみます。

やってみた

MediaPackeageでChannelとEndpointの作成

まずはMediaPackageでChannelを作成します。AWS Management Consoleのスタートページから、ChannelIDを「MediaPackage-Channel-1」と入力して[Next step]で進みます。

Create channel画面でDescriptionを入力、Input typeは「Apple HLS」のまま[Create]でchannelを作成します。

「Successfully created channel!」と表示されたら、続いてEndpointsを作成します。[Add endpoint]ボタンから進みます。

IDとして「MediaPackage-Endpoint-1」を入力します。またPackager settingsの項目でTypeが「Apple HLS」になっていることを確認して[Save]ボタンで作成します。

続いて同様の手順で2つ目のChannelとEndpointを作成します。Channel一覧ページから[Create]で進みます。2つ目のChannle IDは「MediaPackage-Channle-2」、Endpointは「MediaPackage-Endpoint-2」としました。

MediaLiveでInputとChannelの作成

続いてMediaLiveのAWS Management ConsoleのスタートページからInputを作成します。[Create Input]ボタンで進みます。

Input detailsの項目、Input nameは「MediaLive-Input」とし、Input typeは「RTMP (push)」を選択します。

Input security groupの項目ではRTMP PUSHを許可するIPをCIDR blockで入力し、[Create input security group]から新規に作成します。

Input security groupの新規作成後はUse existingにチェックがつき、作成したInput security groupを使用するよう設定されています。 続いてInput destinationsの項目では、Destination A、Bともに「live/myStream」と入力します。これで[Create]ボタンからInputを作成します。

Inputが作成できたら、続いてはMediaLiveのChannelを作成します。AWS Management Console左側のメニューから「Channels」を選んで[Create channel]ボタンから進みます。

画面が遷移したら、まず、Channel templateから「HTTP live streaming」を選択します。テンプレートにより自動的に項目が設定されます。

続いてGeneral infoのChannel nameを設定します。今回は「MediaLive-Channel」としました。IAMロールの設定では「Create role from template」でIAMロールを作成、その後「Use existing role」で作成したIAMロールを選択します。

Attach inputの項目でInputを先ほど作成した「MediaLive-Input」を選択します。

続いてOutput groupsの設定です。左側のOutput groupsの「1.TN2224 (HLS)」をクリックします。HLS Group destination Aの項目、先ほどMediaPackageで作成したMediaPackage-Channel-1の情報を入力します。

MediaPachage-Channel1のInput URLをHLS Group destination AのURLに、MediaPachage-Channel1のUsernameをCredentialsのUser nameに入力します。Passwordについては「Create AWS Elemental MediaLive parameter.」の項目で任意のNameを入力、Password valueはMediaPachage-Channel1のPasswordを入力して、[Create AWS Elemental MediaLive parameter.]ボタンで作成、これを選択します。

HLS Group destination Bについても同様に、MediaPackageで作成したMediaPackage-Channel2のURL、Username, Passwordを入力します。

そして[Create channel]ボタンでMediaLiveのchannelを作成します。

MediaLive Channelの配信準備

配信の準備ができたら、MediaLiveのChannelを開始します。作成したChannel「MediaLive-Channel」について、作成したあとStateが Idleの状態なので、[Start]ボタンを押しましょう。StateがStartingになり、しばらくするとRunningになります。

配信エンコーダの設定と配信の開始

今回は配信エンコーダとしてOBS Studioを使用し、メディアソースとしてローカルファイルを指定しています。エンコーダからの配信先はMedia Live InputのEndpointになります。デフォルトで2ヶ所Endpointがあるのがすごいですね。ただ今回はOBSで1ヶ所のみに映像を送信します。Endpointsに表示されるIPアドレスとパスを以下のようにOBSの配信設定箇所で設定します。URL部分が/liveで終わること、続くmyStreamの部分はストリームキーの箇所に入力し、自動的にマスクされる点に注意します。これでOBSから配信を開始します。

配信の確認

配信の確認はMediaPackageのChannelのEndpoints部分から行うことができます。Previewの列のPlayのリンクを押すとPlayerが立ち上がり、再生を確認できます。またURL列のm3u8マニフェストファイルをSafariなどHLS対応ブラウザで開くことでも再生できます。QRコードも準備されていてうれしいですね!

まとめ

AWS Elemental MediaLiveとAWS Elemental MediaPackageを使ってライブ配信をしてみました。まだきちんとドキュメントの読み込みなどできておらずAWS Management Consoleからポチポチ進めていく感じでやっていきましたが、ライブ配信ができましたね!今回マニフェストファイル(m3u8ファイル)へのアクセスはMediaPackageのEndpointにしていますが、ここにCloudFrontなどCDNを連携させることもできるのか?などなど、引き続き調査していきたいと思います。