Amazon Linux 2上でWowzaサーバーをセットアップしてみた


お久しぶりです。streampackのfadoです。汗ばむ時期がまたやってきてしまいました。手洗い、うがいの習慣に、十分な水分補給もプラスしないといけなくなりますね。さて、今回はWowza Streaming Engineの導入について記事にしたいと思います。そもそもどうやってセットアップするの?という初心者向けにライセンスの取得からサーバーへのインストールに加え、配信と視聴テストに至るまで簡単に解説させて頂きます。

注意事項

  • AWS環境上で構築しています。
  • Wowza Streaming Engine(以下Wowza)は有料ですが30日間の通常版180日間のDeveloper版のTrialライセンスを申し込むことができます。
  • この執筆時点ではWowzaの最新バージョン4.8.13+1 (build 20210527172944)を利用しています。
  • AMIで提供されているプリビルトではなくクリーンインストールからのセットアップとなります。
  • インスタンスサーバーはAmazon Linux 2を対象にしていますがCentOS 7でも同じ手順を踏めばセットアップ可能です。

始める前に

  • Wowzaはカスタマイズ可能であらゆるマルチデバイスへ高品質のビデオ、オーディオをストリーミングすることのできる信頼性の高いメディアサーバソフトウェアです。
  • ライセンス取得にはWowzaアカウントが必須です。アカウントをお持ちでない場合、https://auth.wowza.com/login から新規作成して下さい。
  • Wowzaのこちらの記事を参考にインスタンスサーバーのSecurity Groupにポートを許可して下さい。
  • 一台のインスタンスサーバーにつきなるべく複数バージョンのWowzaを起動させないようにして下さい。
  • Wowzaをインストール予定のインスタンスサーバーがWowzaが推奨の動作環境に適しているかどうかこちらからご確認下さい。

手順

Wowzaのライセンスを申請

Trial版には2種類ございます。それぞれの利用可能期間と制限について下記をご確認下さい。

通常版
Developer版

今回は長く利用できるDeveloper版からライセンスを申請します。申請後数分以内に登録のメールアドレスに送信されます。セットアップ時に必要なのでライセンスキーは事前に控えておきましょう。

Wowzaインストーラーをダウンロード

ログイン済みのWowzaのポータルからLinux 64-bit版のインストーラーをダウンロードします。

セットアップ

1.対象インスタンスサーバーにアップロードして実行権限を付与します。

$ sudo chmod +x WowzaStreamingEngine-4.8.13+1-linux-x64-installer.run

2.インストーラーを実行します。色々聞かれますが指示に従って進みます。

$ sudo ./WowzaStreamingEngine-4.8.13+1-linux-x64-installer.run
  • 契約内容を同意するかどうか - 全て「y」にします
  • Wowza Streaming Engine Manager(管理画面コンソール)のログイン名とパスワードを好きなものに設定します。後ほどログインのため忘れないように控えましょう。
  • ライセンスキーを記入する - 登録メールに送信されたライセンスキーを入れます
  • Wowzaサービスがサーバー起動時に自動起動にするかどうか - 利用状況に合わせて選択します

3.Wowza Streaming EngineWowza Streaming Engine Managerサービスが起動されたことを確認します。

$ ps axu|grep jav[a]
root     30538  4.5 17.1 4406972 681676 ?      Sl   14:03   0:21 /usr/local/WowzaStreamingEngine/java/bin/java -Xmx1553M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:SurvivorRatio=1 -server -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote=true -Dcom.wowza.wms.runmode=service -Dcom.wowza.wms.native.base=linux -Dlog4j.configurationFile=/usr/local/WowzaStreamingEngine/conf/log4j2-config.xml -Dcom.wowza.wms.AppHome=/usr/local/WowzaStreamingEngine -Dcom.wowza.wms.ConfigURL= -Dcom.wowza.wms.ConfigHome=/usr/local/WowzaStreamingEngine -cp /usr/local/WowzaStreamingEngine/bin/wms-bootstrap.jar com.wowza.wms.bootstrap.Bootstrap start
root     30559  4.5  9.5 3653528 381628 ?      Sl   14:03   0:21 /usr/local/WowzaStreamingEngine/java/bin/java -cp :/usr/local/WowzaStreamingEngine/manager/lib/lib-jaxb/istack-commons-runtime-3.0.11.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-jaxb/jakarta.activation-1.2.2.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-jaxb/jakarta.xml.bind-api-2.3.3.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-jaxb/jaxb-runtime-2.3.3.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-jaxb/txw2-2.3.3.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/ecj-3.22.0.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-annotations-api-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-api-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-el-api-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-embed-core-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-embed-el-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-embed-jasper-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-jasper-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-jasper-el-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-jsp-api-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-juli-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-servlet-api-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-util-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/lib-tomcat/tomcat-util-scan-9.0.36.jar:/usr/local/WowzaStreamingEngine/manager/lib/wms-tomcat-9.0.36.jar -Djava.security.egd=file:/dev/./urandom -Dcom.wowza.wms.ConfigURL="" -Dcom.wowza.wms.ConfigHome=/usr/local/WowzaStreamingEngine/manager -Djava.io.tmpdir=/usr/local/WowzaStreamingEngine/manager/temp -Djava.net.preferIPv4Stack=true -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/WowzaStreamingEngine/manager/conf/tomcat-log4j.properties -Dlog4j.configurationFile=/usr/local/WowzaStreamingEngine/manager/conf/log4j2-config.xml -Dlogback.configurationFile=/usr/local/WowzaStreamingEngine/manager/conf/logback-config.xml launch.Main --prefix=/enginemanager --defaultWebApp=/enginemanager --tempDirectory=/usr/local/WowzaStreamingEngine/manager/temp --webroot=/usr/local/WowzaStreamingEngine/manager/temp --warfile=/usr/local/WowzaStreamingEngine/manager/lib/WMSManager.war --httpPort=8088 --config=/usr/local/WowzaStreamingEngine/manager/conf/tomcat.properties --ajp13Port=-1 --directoryListings=false
  • 手動でサービスを起動させる場合
$ sudo systemctl start WowzaStreamingEngine.service
$ sudo systemctl start WowzaStreamingEngineManager.service
  • 手動でサービスを停止させる場合
$ sudo systemctl stop WowzaStreamingEngine.service
$ sudo systemctl stop WowzaStreamingEngineManager.service
  • 手動でサービスを再起動させる場合
$ sudo systemctl restart WowzaStreamingEngine.service
$ sudo systemctl restart WowzaStreamingEngineManager.service
  • サービス状況を確認する場合
$ sudo systemctl status WowzaStreamingEngine.service
$ sudo systemctl status WowzaStreamingEngineManager.service

Wowza Streaming Engine Managerにログイン

1.ブラウザで下記URLを開きます。
http://[WowzaサーバーのPublic IPアドレス]:8088/enginemanager

そうすると下記画面が表示されますがここではソース認証を設定ぜずに「Skip Intro」で先に進みます。もしアクセス時にエラー等が出た場合、Security Groupの見直しをしてみるといいかもしれません。

2.先ほどセットアップ時に設定したログイン情報でログインします。

3.ログイン後、次のようにWowzaのホーム画面が表示されます。

  1. 「Server」 -> 「About」タブでWowzaの基本情報(ライセンス制限やJavaのバージョン等)が記載していて各種の内容を確認ができます。

  1. 「Applications」タブから新規Applicationsの追加ができます。ただし、今回はTrialのDeveloper版なのでLive HTTP OriginVOD HTTP Originは利用できません。

配信と視聴のテスト

1.既存のLiveアプリケーションでRTMP配信をしてみます。今回はソース認証を行いませんので「RTMP Sources」「RTSP Sources」をデフォルトの有効から無効化にしておきます。

*ソース認証とはセキュリティーのために配信先からWowzaサーバーに配信を開始する際に認証をかけること

  • 変更後

*変更後はApplicationを再起動して下さい。

2.配信側の準備をします。
今回はビデオ録画と生放送用の無料でオープンソースのソフトウェアであるOBSを使って配信をしてみたいと思います。ちなみに私がいつも配信検証で利用しているフリー動画素材はこちらです。

  • OBSの配信設定画面

「Start Streaming」をクリックすれば配信開始です!

OBSではなくffmpegで配信してみたい方は下記コマンドで配信可能です。

$ ffmpeg -re -stream_loop -1 -i sample.mp4 -vcodec copy -acodec copy -flags +loop-global_header -f flv rtmp://[WowzaサーバーのPublic IPアドレス]/live/test

3.Wowza管理画面コンソール上でストリームが入っていることを確認
「Applications」 -> 「Incoming Streams」タブで下記のように現在入ってきているストリームが表示されます。もし入ってきていない場合、配信側からのPublic IPアドレスが許可されていることを確認しましょう。

4.視聴をします。
Applications「Test Playback」をクリックすれば、どのプロトコルに対してどのURLで視聴できるか確認することができます。

このままだとServerのIPアドレスがプライベートIPアドレスになっていたり、StreamがMyStreamとなっていたりで必要に応じて修正します。

  • Server: WowzaサーバーのPublic IPアドレスを指定
  • Application: 既にliveアプリケーションなのでこのまま
  • Stream: 先ほどのOBSの配信設定でいうとStream Keyを指定

HLSプロトコルで視聴してみます。

Safariでの視聴

http://[WowzaサーバーのPublic IPアドレス]:1935/live/test/playlist.m3u8

RTMPプロトコルで視聴してみます。

VLCでの視聴

rtmp://[WowzaサーバーのPublic IPアドレス]:1935/live/test

まとめ

実際仕事で使ってみてWowzaはとても万能なメディアサーバソフトウェアだなと思いました。現時点では出力としてのListenerモードには対応していませんが入力としてSRTプロトコルでの配信も可能です。その上、様々な機能を備えています。その中に擬似ライブ配信ができるスケジュール機能とライブストリーミングを他のターゲットに中継させるStream Target機能があります。気になる方は私が以前に書きましたスケジュール機能Stream Target機能の記事を合わせてお読み頂けますと嬉しいです。このご時世だからこそライブ配信のニーズが益々高まる中、これからWowzaがどんな新機能を盛り込んでくれるのかとても楽しみです。

参考文献