概要

WebRTCを使って動画や音声の配信を行う場合、直接WebRTCを使って通信を行うことも可能ですが、それでは、P2Pで通信を行う特性上、大人数での通信には向きません。

そこで、WebRTCの通信をJanusというツールを使って仲介するようにして、大人数での通信に向くSFUやMCUという形式で通信をするようにします。

ここでは、私がJanusを使ってWebRTCのプログラミングを行った時のことについて書きます。

環境

  • Janus v0.9.2
  • Node.js 13.12.0

Janusの準備

Janusを使う前に、Janusを用意する必要があります。

Janusは、OSにもよりますがパッケージとして提供されている場合もあれば、自分でビルドしてインストールしなければならない場合もあります。

この、インストールの方法についてはGitHubのリポジトリのページに書かれていたり、インターネットで調べると出てくるため詳細は書きません。

プログラミング

Janusの準備ができたら、プログラミングを行っていきます。

Janusに関する情報は、公式のデモページが非常に参考になります。

Janus WebRTC Server (multistream): About Janus

逆を言うと、その他の情報は少なく、しかも公式に書かれている情報についても完全とは言い難いです。

Janus自体は、プラグインを追加する形で機能を拡張していくものになっています。私の場合、動画や音声の配信を行うことが目的だったため、VideoRoomプラグインを使用しています。このプラグインを使ったデモページとして、次のものがあります。

Janus WebRTC Server (multistream): Video Room Demo

VideoRoomプラグインは、Janusにデフォルトで入っているプラグインとなっているので、何もしなくても大丈夫です。

デモページを参考にすると、ブラウザの開発者ツールの情報より、デモページではjanus.jsというファイルを読み込んで、それをライブラリのようにして実装を行っています。

そのため、最初にjanus.jsをHTMLページで読み込むようにします。

その後の、janus.jsを使った実装では同じくデモページで読み込んでいる別のjsファイルを参考に実装を行っていきます。

一応、プラグインの説明ページがあるので、それも参考に実装しましょう。

VideoRoom plugin documentation

デバッグが面倒なため、時間をかけて実装をしていく必要があります。

私自身、かなり試行錯誤の連続でした。

さいごに

Janusの情報はあまりありません。公式サイトの情報が唯一の情報だと思っておくのがいいです。

そのため、時間をかけて実装を行っていく必要があります。

この記事が、情報の少ないJanusの状況を改善するひとつになればいいなと思います。