はじめに
Wowza Streaming Engine (以下、WSE) は映像をストリーミング配信するためのミドルウェアです
今回は WSE を試してみるため、手元の MacBook にインストールし、 MacBook 内蔵のカメラ映像を配信してみました
データの流れは以下のようになります
MacBook のカメラ -> OBS Studio -RTMP-> WSE -RTSP-> ffmpeg
いろんなところでハマったため、備忘録として残しておきます
Wowza 公式
ちなみに、 Wowza Streaming Cloud を使えば簡単に Web 配信の流れは作れますが、今回は RTSP で出力したかったので WSE を使っています
また、 スマホから配信するための Wowza GoCoder は日本の AppStore から入手できませんでした
Wowza Streaming Engine のインストール
とりあえずのお試しなので、 Wowza の公式にサインアップし、 Free Trial を開始します
30日間は無償で使えます
あとはインストーラをダウンロード・実行し、メールで送られてくるライセンスキー等を入れていきます
公式の解説はこちら
実行環境
- macOS Big Sur 11.5
- Wowza Streaming Engine 4.8.14+9
- OBS Studio 27.0.1
- ffmpeg 4.4
Wowza Streaming Engine の起動
インストールしてもアプリケーションに Stop Services という名前で Wowza のアイコンが追加されるだけでした
アレ? Start は?と思いましたが、以下のコマンドで起動します
sudo launchctl load -w /Library/LaunchDaemons/com.wowza.WowzaStreamingEngine.plist
また、ブラウザから GUI で操作するための Manager も同様に起動します
sudo launchctl load -w /Library/LaunchDaemons/com.wowza.WowzaStreamingEngineManager.plist
すでに起動されている場合は以下のように返ってきます
$ sudo launchctl load -w /Library/LaunchDaemons/com.wowza.WowzaStreamingEngine.plist
/Library/LaunchDaemons/com.wowza.WowzaStreamingEngine.plist: service already loaded
Load failed: 37: Operation already in progress
止めるときは以下のコマンドです( load -> unload )
sudo launchctl unload -w /Library/LaunchDaemons/com.wowza.WowzaStreamingEngine.plist
sudo launchctl unload -w /Library/LaunchDaemons/com.wowza.WowzaStreamingEngineManager.plist
再起動時は停止してから起動してください
Manager が起動できたら http://localhost:8088 にアクセスします
サインイン画面が表示されれば OK です
インストール時に入れたユーザー名、パスワードを入れてください
もしパスワードを忘れていたら
すぐに忘れてしまう私のような人のために
実は /Library/WowzaStreamingEngine/conf/admin.password
に認証情報が書かれているので、ここを書き換えてサービス再起動すればサインインできます
# Admin password file (format: [username][space][password][space][groups][space][passwordEncoding])
# [groups]= "admin" | "admin|advUser" | "basic".
# [passwordEncoding]= "cleartext" | "bcrypt" | "digest". If no value is specified, defaults to "cleartext".
#
# Examples
# username password admin cleartext
# admin password admin|advUser cleartext
# admin2 $2y$10$3RI.M/WPQ8qomZb0EkaGme/873Y3dI18TIPB2GUOWrOJC2RDsfJCa admin bcrypt
# user 66210ee3b40b2d14feb73d6216d01324 readOnly digest
xxx xxx admin|advUser bcrypt
アプリケーションの追加
ライブ配信用のアプリケーションを WSE 上に作成します
Applications タブを選択し、 Live をクリックしてください
表示されたダイアログにアプリケーション名を入れてください(今回は webcam にします)
+Add
をクリックすれば出来上がりです
入力元の設定
左サイドメニューから Source Security を選択し、 Edit をクリックします
今回は RTMP で認証なしで入力するため、 RTMP Source を Open に指定します
Save をクリックすると、アプリケーションの再起動を求められるので Restart Now をクリックします
これで入力を受ける準備ができました
OBS Studio からの入力
カメラ入力を Wowza へ送るために OBS Studio を使います
公式からダウンロードしてインストールしてください
OBS Studio を起動すると以下のような画面が表示されます
今回はカメラ映像を配信したいので、 ソース の左下 + をクリックし、 映像キャプチャデバイス を選択します
名前を入力してデバイスを選択します
最初はプライバシー設定の指示が出るので、指示に従って環境設定してください
OBS Studio にカメラ映像が表示されます
次に右下メニューの 設定 をクリックします
左メニューから 配信 を選択し、以下のように入力します
- サービス: カスタム
- サーバー: rtmp://127.0.0.1:1935/WSEのアプリケーション名
- ストリームキー: 任意の文字列(今回は myStream とします)
OK をクリックして保存した後、右下メニューの 配信開始 をクリックします
うまくいけば 配信開始 だったところが 配信終了 なり、フッターに配信状況が表示されます
また、 Wowza Streaming Server の Incoming Streams を見ると、 OBS からのストリームが表示されます
ffmpeg で配信確認
Wowza が RTSP で配信できていることを確認するため、 ffmpeg でストリームを受信し、フレームを画像として出力してみます
macOS なら brew install ffmpeg
でインストールできます
ffmpeg がインストールできたら、ターミナルで以下のコマンドを実行してください
$ ffmpeg -i rtsp://127.0.0.1:1935/_WSEのアプリケーション名_/_OBSのストリームキー_ -f image2 -update 1 img.jpg
実行すると、受信状況が表示されます
$ ffmpeg -i rtsp://127.0.0.1:1935/webcam/myStream -f image2 -update 1 img.jpg
ffmpeg version 4.4 Copyright (c) 2000-2021 the FFmpeg developers
built with Apple clang version 12.0.5 (clang-1205.0.22.9)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.4_2 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-avresample --enable-videotoolbox
libavutil 56. 70.100 / 56. 70.100
libavcodec 58.134.100 / 58.134.100
libavformat 58. 76.100 / 58. 76.100
libavdevice 58. 13.100 / 58. 13.100
libavfilter 7.110.100 / 7.110.100
libavresample 4. 0. 0 / 4. 0. 0
libswscale 5. 9.100 / 5. 9.100
libswresample 3. 9.100 / 3. 9.100
libpostproc 55. 9.100 / 55. 9.100
Input #0, rtsp, from 'rtsp://127.0.0.1:1935/webcam/myStream':
Metadata:
title : myStream
Duration: N/A, start: 0.214000, bitrate: N/A
Stream #0:0: Audio: aac (LC), 48000 Hz, stereo, fltp
Stream #0:1: Video: h264 (High), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 30 fps, 30 tbr, 90k tbn, 60 tbc
Stream mapping:
Stream #0:1 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help
[swscaler @ 0x7f93e1446000] deprecated pixel format used, make sure you did set range correctly
Output #0, image2, to 'img.jpg':
Metadata:
title : myStream
encoder : Lavf58.76.100
Stream #0:0: Video: mjpeg, yuvj420p(pc, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 30 fps, 30 tbn
Metadata:
encoder : Lavc58.134.100 mjpeg
Side data:
cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
frame= 451 fps= 32 q=24.8 size=N/A time=00:00:15.03 bitrate=N/A dup=11 drop=5 speed=1.06x
また、実行ディレクトリーに img.jpg ができます
Finder でアイコン表示をしていれば、定期的に更新されて動いているのが分かります
終わりに
これでローカル環境で Wowza の色々なテスト・検証ができるようになりました