はじめに
WebRTCのSFU/MCUであるKurentoには、公式のサンプルがいくつかあります。
その中に、複数人でビデオ会議を行うGroup Callというものがあるのですが、Javaで書かれたものしかなく、また、SFU版のサンプルしかありません。
先日、kurento-group-call-nodeという有志の方が作ったサンプルを見つけたので使ってみたところ、あっさりと動いたので動かし方などを書こうと思います。
実行環境
- さくらのVPS
- CPU2コア
- メモリ1GB
- OS Ubuntu 16.04 LTS
- Firefox 59.0.1 64bit
使用ソフトウエア
- kurento-media-server-6.0
- kurento-group-call-node
- Node.js v8.10.0
Node.jsとnpmを使うので、事前にインストールしておいてください。
Kurento Media Serverのインストール
以下のドキュメントにまとまっています。
Kurento Installation Guide - Kurento 6.6.2 documentation
REPO="xenial"
echo "deb http://ubuntu.kurento.org $REPO kms6" | sudo tee /etc/apt/sources.list.d/kurento.list
wget http://ubuntu.kurento.org/kurento.gpg.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install kurento-media-server-6.0
コマンドを順番に実行すればインストールできます。
設定ファイル修正
STUNサーバーの設定をします。
stunServerAddress=74.125.23.127
stunServerPort=19302
今回はGoogleが提供しているサーバーを設定しました。
kurento-group-call-nodeのダウンロード
Githubからリポジトリをクローンします。
git clone https://github.com/chapin666/kurento-group-call-node.git
cd kurento-group-call-node
SFU版とMCU版を選ぶ
git checkout sfu
でSFU版になります。git checkout mcu
でMCU版になります。
両方を使えるのは素晴らしいですね!
Nodeパッケージをインストール
まず、bowerをグローバルインストールしてください。
sudo npm install -g bower
次に、以下のコマンドを実行してください。
npm install
cd ./server/static
bower install
接続するサーバーの設定
./server/index.jsを以下のように修正してください。
const argv = minimst(process.argv.slice(2), {
default: {
as_uri: 'https://<server address>:3000',
ws_uri: 'ws://<kurento address>:8888/kurento'
}
});
ここは自分の環境に合わせてください。
実行
以下のコマンドでサーバーが起動します。
node index.js
もしもエラーなどが出る場合は、Kurentoを再起動してください。
sudo service kurento-media-server-6.0 restart
実行結果
SFU版では1:1の通信でCPU使用率が5%前後でした。50~60人くらいは通信出来そうな印象です。
一方、MCU版だと1:1の通信でCPU使用率は100%でした。映像ストリームを合成しているだけあって、負荷は結構大きいです。
受信ストリームを1本だけにしたい場合以外はSFUを使ったほうがよいかと思います。
まとめ
Kurentoはサンプルが豊富で、ドキュメントが充実しているところが気に入っています。
Janusなどと比べると、最近は開発が活発ではないようですが、ふわっちなど、結構いろいろな場所で使われているようなので、今後も頑張ってほしいです。
おまけ
今回使用したkurento-group-call-nodeには、なんとモバイルクライアントがあります!(まだ使ってみていません)
kurento-group-call-react-native
React Nativeで書かれているので、iOSでもAndroidでも動作するようです。
モバイルクライアントまで作っているのは、本当に素晴らしいと思います。