概要
今やLINEだろうと、Skypeだろうと、slackだろうと当たり前についているビデオチャット機能。
自分で新しく作るアプリケーションにもその機能を作りたい。
ニコニコ生放送、YoutubeLive、TwitchみたいなStreamServiceを自分で作りたい。
そんなニッチな需要に答える記事となります。
世に出ているこういったサービスはWebRTCという技術を使っています。
WebRTC - Web Real-Time Communication の略で、ブラウザどうしがプラグイン無しで直接通信し、映像や音声、データをリアルタイムにやりとりすることを可能にする技術。
今回はWebRTCのライブラリ Janus を使って以下のような構成を実現して、ビデオチャットサーバーを作ります。
Janusサーバーの構築
今回の前提環境(Windows Subsystem for Linuxでいけました)
OS ubuntu 16.04
ライブラリ群のインストール
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install libmicrohttpd-dev libjansson-dev libnice-dev \
libssl-dev libsrtp-dev libsofia-sip-ua-dev libglib2.0-dev libopus-dev \
libogg-dev libcurl4-openssl-dev pkg-config gengetopt libtool \
doxygen graphviz libconfig-dev libavutil-dev libavformat-dev automake
websocketのインストール
cmake がなかったら事前にapt install cmake
$ git clone https://github.com/warmcat/libwebsockets.git
$ cd libwebsockets
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" ..
$ make && sudo make install
libsrtp2.0をインストール
$ cd ~
$ wget https://github.com/cisco/libsrtp/archive/v2.0.0.tar.gz
$ tar xfv v2.0.0.tar.gz
$ cd libsrtp-2.0.0
$ ./configure --prefix=/usr --enable-openssl
$ make shared_library && sudo make install
janusのインストール
$ cd ~
$ git clone https://github.com/meetecho/janus-gateway.git
$ cd janus-gateway
$ sh autogen.sh
$ ./configure --enable-post-processing --enable-docs --prefix=/usr/local
$ make
$ make install
$ make configs
configure , make , make installは結構処理長いです。configureで結構warning出ますが気にせず…
janus起動
$ /usr/local/bin/janus &
warningはめっちゃ出ますが起動できます。
Nginxサーバーの構築
Nginxのインストール
$ apt install nginx
janusのデモページのコンテンツを配置してNginxを起動
$ cp -rf ~/janus-gateway/html/* /var/www/html/
$ systemctl enable nginx
$ systemctl start nginx
アクセスしてみよう
ブラウザから サーバーのIPにアクセス
こんな感じの画面が出れば成功です。
上のDemos からvideoRoom videocall などなど、いろんなデモが体験できます。
複数のデバイスからつないでお互いにvideochatなどもできます。
ちなみにですが、このデモサイトは公式も公開してくれていて、
https://janus.conf.meetecho.com/
にアクセスすれば同じものが見られます。
demoで配置したhtmlやjsを見ながら自分のwebサイトに配信ページ等を作りましょう。