AWSのWowzaでライブ動画配信してみた
はじめに
清水です。AWS上でWowza Streaming Engineを構築して、スマホ(iPhone)上のWowza GoCoderからの映像をライブストリーミング配信してみたのでまとめたいと思います。
ライブ配信とVOD配信の違い
以前のエントリで、Wowzaを使ったVOD配信についてまとめています。
今回のエントリでは、VOD配信ではなくライブ配信を行ってみます。ライブ配信とVOD配信の違いは、先日行われた"AWS Black Belt Online Seminar 動画配信 on AWS"のスライドに詳しく説明されています。(オンデマンド配信=VOD配信です)
言い換えると、オンデマンド配信(VOD配信)はビデオ録画したものを見るイメージで、ユーザにより早送りや巻き戻しのコントロールが可能なもの。対してライブ配信はTV放送を見ているイメージでユーザにより早送りなどのコントロールが不可、とも言えるかと思います。
VOD配信をする場合には映像はファイルにまとまっている必要があります。例えばスマホ等で撮影した動画をAmazon Elastic Transcoderで変換して配信可能なフォーマットのファイルにする、という具合ですね。
これに対してライブ配信の場合には、配信する映像をリアルタイムにストリーミングサーバに伝送する必要があります。この映像の伝送にはライブエンコーダ(またはライブストリーミングエンコーダなど)と呼ばれる機材やPCソフトを使用します。今回はこのストリーミングサーバにEC2上で起動するWowza Streaming Engine、ライブエンコーダにWowza GoCoderというスマホアプリを使用しました。
構成図
構成としては以下のようになります。
ライブ動画配信を行う場合に気をつける点として、ライブエンコーダ側のネットワーク帯域が十分に確保されていることが挙げられます。今回ライブエンコーダにはスマホのアプリを使用していますが、スマホからの通信はモバイル回線経由ではなくWiFi経由の光固定回線としてます。
本エントリの内容
本エントリでは以下の内容で、ストリーミングサーバの起動からライブエンコーダアプリのインストール、そして最後にライブストリーミング配信の確認を行っています。
- Wowza Streaming Engineの起動
- Wowza Streaming Engine Managerへのログインとlive Applicationの確認
- Wowza GoCoderのインストールと配信準備
- Wowza GoCoderからの配信開始と配信の確認
Wowza Streaming Engineの起動
まずはストリーミングサーバとなるWowza Streaming Engineを起動します。手順はVOD編である以下と同様です。
今回は上記の手順でWowza Streaming Engine 4: Pro Edition (HVM)のサブスクリプションは完了しているものとして、Management Consoleからの起動をまとめます。
EC2のManagement Consoleから、[インスタンスの作成]ボタンで進みます。 「ステップ1: Amazon マシンイメージ(AMI) の選択」で、AWS Marketplaceを選択、wowzaで検索します。 先ほどサブスクリプションを終えた Wowza Streaming Engine 4: Pro Edition (HVM)が出てきますので、[選択]で進みます。(なお本エントリ執筆時は、バージョンで4.6.0が選択できました。)
インスタンスタイプについては、今回は検証目的としてt2.smallを選択しました。Wowza Streaming Engineはm3.large以上のスペックを推奨している点、またグレーアウトされたインスタンスタイプは選択不可な点に注意して、適切なインスタンスタイプを選択してください。
インスタンス詳細設定については、ネットワークなどを適切に設定します。(今回はインターネット接続可能であることを前提としています。)
ストレージについては、デフォルトでルートに8GiBの汎用SSD、追加EBSに40GiBのマグネティックディスク、となっていました。今回はこのまま進めました。ネームタグも適切に設定します。
セキュリティグループの設定については、公式ドキュメントPDF(Wowza Streaming Engine for Amazo EC2 User Guide)も参考に以下のようにしました。
HTTP(80), RTMP(1935)は公開用に全IP(0.0.0.0/0)に開放とします。特にRTMP(1935)についてはライブエンコーダ側からWowza Streaming Engine側への接続に必要となります。RTMPでの映像配信を行わない場合でも、ライブエンコーダ側のIPは許可する必要があるのでご注意ください。またポート8086-8088はWowza Streamign Enginie Managementとして使用されるので、特定の管理用IPに限定します。SSHについても同様です。(ほか、公式ドキュメントを参考に必要なポートは適宜開放してください。)
最後にインスタンス作成の確認、ならびにSSH鍵の確認をして、インスタンスを起動します。
Wowza Streaming Engine Managerへのログインとlive Applicationの確認
Wowza Streaming Engineの起動が完了したら、管理画面であるWowza Streaming Engine Managerへアクセスします。下記のURLをブラウザで開きます。
- http://[EC2のPublicDNSまたはパブリックIP]:8088/enginmanager
「Welcome」画面が表れるので[Next->]で次に、そしてVideo Workflow Overviewページも[Next->]で進みます。次のログイン画面(Please Sign Inのページ)では以下のログイン情報入力します。
- Username: wowza
- Password: 起動したEC2のインスタンスID(i-12345678901234567)
次の「Source User Name and Password」画面ではライブ配信を行う際にライブエンコーダで入力する認証情報を設定します。ここではSource User Nameをliveencoderとし、Source Passwordを適切に設定しました。こちらはのちほどライブエンコーダ側で入力します。認証情報を入力したら、[Done! Start Using Wowza Streaming Engine Software->] ボタンで先に進みます。
Wowza Streaming Engine Managerへログインできたら、画面上部のApplicationsをクリックします。
Application作成ページへと遷移しますが、今回はデフォルトで作成されているliveアプリケーションを使用します。画面左側、LIVE APPLICATIONSのliveのリンクをクリックします。
続いてliveアプリケーションの詳細画面に遷移します。左側のメニューでliveの項目が展開されますので、Sources (Live)のリンクをクリックします。エンコーダ/カメラ選択画面になりますので、Wowza GoCoderを選択します。
「live > Sources (Live) > Wowza GoCoder」のページにて、以下の項目を確認します。これらの情報はのちほどWowza GoCoder上で指定、入力する必要があるので、控えておきましょう。
- Host - Server IP Address: EC2のIPアドレス
- Host - Port: 1935
- Application: live (こちらは画面右側に項目が記載されています)
- Stream Name: myStream
なおiPhoneなどのiOSデバイスでWowza Streaming Engine Managerにアクセスし、この項目の下にある[Auto-configure GoCoder for iOS]ボタンをクリックすることで、直接Wowza GoCoderを呼び出すことも可能です。(その後、認証情報のみ設定すれば、配信が行えます。)
Wowza GoCoderのインストールと配信準備
続いてスマホにWowza GoCoderをインストールして配信準備を行います。今回スマホはiPhone5Sを使用していますが、Android版もあるので同様に設定可能かと思われます。
Wowza GoCoderですがWowza Streaming Engineの開発元であるWowza Media Systemsにより提供されている、ライブエンコーダアプリです。スマホのカメラ/マイクで撮影した映像/音声をそのままストリーミングサーバに伝送することができます。またWowza GoCoder SDKとしてiOS/Androidでの開発環境も提供されています。
- Mobile Live Video Streaming SDK for iOS & Android | Wowza GoCoder
- Wowza GoCoder on the App Store
- Wowza GoCoder - Google Play の Android アプリ
ストリーミングサーバとライブエンコーダによっては相性問題等でパラメータを調整しないと正常な配信ができないこともありますが、開発元が同じだとこのような問題も少なくなることが期待できます。
まずはWowza GoCoderのインストールです。App Storeで"wowza gocoder"と検索すると出てくるので、アプリケーション名「Wowza GoCoder」、提供元「Wowza Media Systems, LCC」を確認してダウンロード、インストールします。
インストールできたらアプリを起動します。カメラ、マイクへのアクセスは許可するようにしましょう。右上のWのWowzaのロゴマーク(Connection info)から接続設定を行います。
接続先は「Wowza Streaming Engine」を選択します。(Wowza Streaming CloudはWowza Media Systems社が提供しているクラウドサービスを利用する時に選択します。)
続いてHostを選択し、先ほどWowza Streaming Engine Managerで確認した情報をServer, Portに入力します。
設定後、一度BackでEngineのページに戻ります。Applicationを選択し、こちらも先ほどWowza Streaming Engine Managerで確認した情報をApplication, Stream Nameに入力します(おそらくデフォルトでlive, myStreamの設定になっているかと思いますが、確認しておきます。)
設定したら再度BackでEngineのページに戻り、Source Authenticationに進みます。ここでは先ほどWowza Streaming Engine Managerで設定した認証情報を入力します。
Source Authenticationが入力できたら、[Done]を押して設定完了になります。
Wowza GoCoderからの配信開始と配信の確認
Wowza GoCoderの設定が完了したら、画面右下の赤丸を押して配信を開始します。「Stream Started」と表示されれば配信開始OKです。(開始されない場合、設定情報を確認しましょう。またこの表示は配信開始後、すぐに画面から消えます。)
また、Wowza Streaming Engine ManagerのliveアプリケーションのMonintoring画面でも、接続が正常にできているかが確認できます。再生クライアントが0のとき、この画面上では"Adobe RTMP"の値が1になっているはずです。これはライブエンコーダからのRTMP接続をカウントしているためです。RTMPの値が増えていない場合は設定情報などを確認しましょう。
続いて、Wowza Streaming Engine Manager内のTest Playerを利用して配信映像の確認をしてみます。今回はOS XのSafariでHLS配信の確認とします。liveアプリケーション画面の右上にある[Test Players...]のボタンをクリックします。
Apple HLSのタグを選択して、Startボタンを押すと再生が開始されます!
また、Mobileタグに記載されている以下のURLをiPhoneなどから読み込むことで、スマホでの再生確認も行えます。
こちらはライブ配信を行っているものとは別のスマホ(iPhone6S)で再生している画面になります。
まとめ
動画配信用ストリーミングサーバWowza Streaming Engineとライブエンコーダアプリ Wowza GoCoderを使ってライブストリーミング配信をしてみました。
ストリーミングサーバの設定についてはVOD配信を行ったときと同様、GUIであるWowza Streaming Engine Managerのみで設定ができるので、手軽にライブ配信を試すことができました。
ライブエンコーダについても、スマホにアプリをインストールするだけで別途カメラの接続などもなく、気軽にライブ配信ができました。また今回使用したWowza GoCoderには映像ビットレート、解像度などが選択できたり(割りと新し目のiPhoneなら4K配信もできるようです!)、他にフレームレート、キーフレーム間隔なども調整できるようです。スマホのライブエンコーダもどんどん多機能になっているなと感じました。