OvenMediaEngineは、WebRTCやLLHLSなどのプロトコルに対応した、オープンソースの低遅延ライブストリーミングサーバーです。

RTMP、SRT、RTSPなど多様なプロトコルからの入力に対応し、アダプティブビットレート (ABR) 変換も可能です。

実際の低遅延や規模や安定性に関しては構成やチューニング次第です。

OvenMediaEngineのオープンソース版は無償で利用できます。

ライセンスはAGPL v3.0です。

ちょっと使うなら便利でしょうけれど、ビジネスの中核として使うなら要注意です。

改変した部分は開示義務があります。

詳しくは自分で確認してください。

OvenMediaEngineは、韓国のAirenSoft社が中心となって開発・公開しています。

もちろんオープンソース版とは別に、商用ライセンス、長期サポート、追加機能などを提供する「OvenMediaEngine Enterprise」も販売しています。

本格的に商用利用するならこちらも検討です。

OvenMediaEngine はDockerを使うセットアップがあります。すぐに構築できるので便利ですが非Dockerユーザーは、prerequisites.shなどを使って自分でビルドもできます。さっそく自分でビルドしてみましょう。用意した環境はubuntu24.04です。

OvenMediaEngineのgitはこちら

https://github.com/AirenSoft/OvenMediaEngine ビルドに結構時間がかかります。sudo で実行しないとビルドが失敗します。sudo suで管理者になって実行しました。

sudo apt update
sudo apt install -y build-essential nasm autoconf libtool zlib1g-dev tclsh cmake curl pkg-config
git clone https://github.com/AirenSoft/OvenMediaEngine.git
cd OvenMediaEngine
./misc/prerequisites.sh
cd src
make release

bin/RELEASE/OvenMediaEngine ができました。ポート開いたりシステムに登録して自動起動しました。

  • RTMP: 1935
  • SRT: 9999
  • MPEGTS: 4000/udp
  • WebRTC Signalling: 3333 (HTTP), 3334 (HTTPS)
  • WebRTC ICE: 10000-10004/udp
  • TCP Relay (TURN): 3478
sudo ufw allow 3333
sudo ufw allow 3334
sudo ufw allow 3478
sudo ufw allow 1935
sudo ufw allow 9999
sudo ufw allow 10000
sudo ufw allow 10009

OvenMediaEngineに動作に関しては、/etc/ovenmediaengine/Server.xml に書かれます。

SRTに関しては、なんか上手くつながりませんでした。

SRTってサーバによって設定の癖があるので何かコツがわからないだけかもしれません。

RTMP→LLHLSはすんなり動作しました。

WebRTCを動作させてみましょう。

最近OBSがWHIPに対応しましたよね。簡単に映像をWebRTCで送信できます。コーデックはH264とH265で送信できました。 WebRTCを受信できる再生アプリってWeb向けの技術というだけあって、なかなか見つかりません。

ということでApache2サーバーのセットアップして、htmlでWebアクセスできるようにしました。

受信できるまで、TURNとSTUNやICEの設定で苦労しました。

結局よくわかりませんが、やっぱりWebRTCはまだ難しさがあるなぁと思いました。

いろいろやって繋がりました。

3840×2160@60fpsで映像を送りました。

左が送信元、右がwebブラウザー受信側です。

600msというところで、まあローカル(送受信ともにwifi)環境としては、遅いけど送受信ともにすべてWifiでは検討しているのではないでしょうか。

サーバーもWifi環境というひどいものです。

まれにブロックのノイズがある程度です。

音も正常に送受信できました。

OvenMediaEngineの記事としては中途半端な内容となりましたが、OvenMediaEngineでWebRTCのサーバーおよび送受信できたという検証でした。

初めてWebRTCを接続できた(今まで概念が難しくて接続できませんでした。

)ということで、WebRTCにWHIPとWHEPができたことで、ずいぶんと簡単に利用できるようになったといえるかもしれません。

つまり手軽に1秒未満のwebブラウザーを経由した配信ができるというわけです。

関連記事