panda's tech note

Janus

JanusMeetEchoにより開発されている オープンソースのWebRTCゲートウェイです。

インストール手順

公式のインストール手順(README.md)に従えばインストールできます。 私の環境(Ubuntu 16.04)では以下の手順でインストールしました。

# Install packages
$ sudo apt 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 automake

# Install boringssl
$ git clone https://boringssl.googlesource.com/boringssl
$ cd boringssl
$ sed -i s/" -Werror"//g CMakeLists.txt
$ mkdir -p build
$ cd build
$ cmake -DCMAKE_CXX_FLAGS="-lrt" ..
$ make
$ cd ..
$ sudo mkdir -p /opt/boringssl
$ sudo cp -R include /opt/boringssl/
$ sudo mkdir -p /opt/boringssl/lib
$ sudo cp build/ssl/libssl.a /opt/boringssl/lib/
$ sudo cp build/crypto/libcrypto.a /opt/boringssl/lib/

# Install libsrtp
$ wget https://github.com/cisco/libsrtp/archive/v1.5.4.tar.gz
$ tar -zxvf v1.5.4.tar.gz
$ cd libsrtp-1.5.4/
$ ./configure --prefix=/opt
$ make shared_library && sudo make install

# Install usrsctp
$ git clone https://github.com/sctplab/usrsctp
$ cd usrsctp
$ ./bootstrap
$ ./configure --prefix=/opt && make && sudo make install

# Install libwebsockets
$ git clone git://git.libwebsockets.org/libwebsockets
$ cd libwebsockets
$ mkdir build
$ cd build
$ cmake -DLWS_MAX_SMP=1 -DCMAKE_INSTALL_PREFIX:PATH=/opt -DCMAKE_C_FLAGS="-fpic" ..
$ make && sudo make install

# Install MQTT
$ git clone https://github.com/eclipse/paho.mqtt.c.git
$ cd paho.mqtt.c
$ make && sudo prefix=/opt make install

# Install rabbitmqtt
$ git clone https://github.com/alanxz/rabbitmq-c
$ cd rabbitmq-c
$ git submodule init
$ git submodule update
$ mkdir build && cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/opt ..
$ make && sudo make install

# Install janus
$ git clone https://github.com/meetecho/janus-gateway.git
$ cd janus-gateway
$ sh autogen.sh
$ export PKG_CONFIG_PATH=/opt/lib/pkgconfig
$ export LIBRARY_PATH=/opt/lib:/usr/lib
$ export C_INCLUDE_PATH=/opt/include:/usr/include
$ ./configure --prefix=/opt/janus --enable-dtls-settimeout --enable-boringssl=/opt/boringssl
$ make
$ sudo make install
$ sudo make configs

# Run janus
$ /opt/janus/bin/janus

.mjr からの変換

JanusのRecorder/Playoutプラグインでは,動画・音声は.mjrフォーマットで保存されます。 これらのファイルは,Janusに含まれるjanus-pp-recプログラムで opus, wav, webm, mp4, または srt形式に変換できます。 ただし,デフォルトではjanus-pp-recはコンパイル・インストールされないので, 以下のようにコンパイル時(configure時)に--enable-post-processingを 指定する必要があります。

$ ./configure --prefix=/opt/janus \
  --enable-dtls-settimeout \
  --enable-boringssl=/opt/boringssl \
  --enable-post-processing

動画・音声ファイルは /opt/janus/shared/janus/recordings/ に 別々に保存されています。 動画・音声ファイルを一つのmp4形式のファイルにするには, 以下のコマンドを使用します。

$ /opt/janus/bin/janus-pp-rec \
  /opt/janus/shared/janus/recordings/rec-<id>-audio.mjr audio.opus
$ /opt/janus/bin/janus-pp-rec \
  /opt/janus/shared/janus/recordings/rec-<id>-video.mjr video.webm
$ ffmpeg -i audio.opus -i video.webm \
  -c:v x264 -c:a aac output.mp4