janus-gateway webRTC服务器编译安装与Demo测试
主要步骤参考官网,加上一些错误和额外的包安装。官网地址:https://github.com/meetecho/janus-gateway
一、安装依赖
安装官网指定依赖时,先安装额外命令包
包安装
aptitude install libmicrohttpd-dev libjansson-dev \ libssl-dev libsrtp-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config gengetopt libtool automake
额外安装 aptitude
sudo apt install aptitude #安装 sudo aptitude upgrade #更新
一大波的包,最后 libsrtp-dev 始终没安装成功,不过好像没影响,可能是因为后面有单独安装 libsrtp
源码安装 libnice
git clone https://gitlab.freedesktop.org/libnice/libnice cd libnice meson --prefix=/usr build && ninja -C build && sudo ninja -C build install
额外安装 git
sudo apt-get install git
额外安装 meson,会安装 python 和 python 的包管理工具 pip。pip 对应 python2.XX ,pip3 对应 python3.XX
sudo apt install python3-pip sudo pip3 install meson
额外安装 ninja ,在安装ninja之前,需要安装其依赖re2c
sudo apt install re2c re2c --version #查看版本、是否成功
git clone https://github.com/ninja-build/ninja.git cd ninja ./configure.py --bootstrap #编译,如果成功会生成ninja可执行文件 sudo cp ./ninja /usr/bin
可能需要在编译 Janus 之前设置环境变量 PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/path/to/libnice/lib/pkgconfig
源码编译安装libsrtp
让Janus webrtc server中的RTP支持SSL
git clone https://github.com/sctplab/usrsctp cd usrsctp ./bootstrap ./configure --prefix=/usr --disable-programs --disable-inet --disable-inet6 make && sudo make install
源码编译usrsctp
非必须,这个库是让Janus webrtc server支持 Data Channels ,支持文本互相发送。
git clone https://github.com/sctplab/usrsctp cd usrsctp ./bootstrap ./configure --prefix=/usr --disable-programs --disable-inet --disable-inet6 make && sudo make install
源码安装libwebsocket
非必须,Janus web rtc server 默认使用HTTP REST API,安装这个作为替代,可以更好的支持web浏览器音视频会议,websocket 还能完成IM等双向通信功能。Demo也会用
git clone https://libwebsockets.org/repo/libwebsockets cd libwebsockets # If you want the stable version of libwebsockets, uncomment the next line # git checkout v3.2-stable mkdir build cd build # See https://github.com/meetecho/janus-gateway/issues/732 re: LWS_MAX_SMP # See https://github.com/meetecho/janus-gateway/issues/2476 re: LWS_WITHOUT_EXTENSIONS cmake -DLWS_MAX_SMP=1 -DLWS_WITHOUT_EXTENSIONS=0 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" .. make && sudo make install
额外安装 cmake
sudo apt-get install cmake sudo apt-get autoremove cmake #卸载
二、获取代码、编译
git clone https://github.com/meetecho/janus-gateway.git cd janus-gateway sh autogen.sh ./configure --prefix=/opt/janus make && sudo make install
编译时默认开启支持的(装好了依赖的)所有插件,可以传参数配置
./configure --prefix=/opt/janus --enable-websockets #开启
./configure --disable-websockets --disable-data-channels --disable-rabbitmq --disable-mqtt #禁用
编译完成会有类似配置打印信息( /configure --prefix=/opt/janus --disable-rabbitmq --disable-mqtt )
Compiler: gcc libsrtp version: 2.x SSL/crypto library: OpenSSL DTLS set-timeout: not available Mutex implementation: GMutex (native futex on Linux) DataChannels support: yes Recordings post-processor: no TURN REST API client: yes Doxygen documentation: no Transports: REST (HTTP/HTTPS): yes WebSockets: yes RabbitMQ: no MQTT: no Unix Sockets: yes Nanomsg: yes Plugins: Echo Test: yes Streaming: yes Video Call: yes SIP Gateway: yes NoSIP (RTP Bridge): yes Audio Bridge: yes Video Room: yes Voice Mail: yes Record&Play: yes Text Room: yes Lua Interpreter: no Duktape Interpreter: no Event handlers: Sample event handler: yes WebSocket ev. handler: yes RabbitMQ event handler:yes MQTT event handler: yes Nanomsg event handler: yes GELF event handler: yes External loggers: JSON file logger: no JavaScript modules: no
创建默认配置文件,执行一次,如果修改过配置,再执行,会被覆盖掉
make configs
如果还想生成帮助文档,可以加一个–enable-docs,编译前,还需要装一下doxygen等辅助工具
aptitude install doxygen graphviz
三、运行
Janus 参数配置(已创建默认配置),目录在:/opt/janus/etc/janus/
进入以后,有很多 ***.jcfg.sample 文件,同样的有一份 ***.jcfg ,是 make configs
全部复制了一遍,根据需要修改
修改ssl信息
打开 /opt/janus/etc/janus/janus.jcfg ,修改 certificates 项,配置ssl路径
打开 /opt/janus/etc/janus/janus.transport.http.jcfg , 修改 generals 和 certificates ,启用https
再打开 /opt/janus/etc/janus/janus.transport.websockets.jcfg , 修改 generals 和 certificates ,启用wss
运行服务
/opt/janus/bin/janus
会有类似启动信息。好几个错误,没能解决,demo运行很容易崩了 感觉可能是 libsrtp-dev 没安装起的缘故。。
其中包含有
JANUS VideoRoom plugin initialized #视频会议插件 WebSockets thread started #websocket支持 HTTP webserver started (port 8088, /janus path listener) #http 服务
STUN server警告
不影响运行 Demo 。因为 Demo 一般运行在局域网,没有P2P打通的需要。但如果是正式使用。则需要解决这个WARNING
安装 STUN server ,选择安装 coturn
git clone https://github.com/coturn/coturn cd coturn ./configure make sudo make install
安装coturn服务器不一定和janus一起,装好后把信息写到 janus 的配置文件中
打开 /opt/janus/etc/janus/janus.jcfg 修改 nat 项以下内容
查看 janus 运行情况
lsof -i | grep janus
运行demo
网页端的demo,在janus源码根目录的html目录下。把这个html发布出来,从而让外部的浏览器,能够访问
sudo apt-get install nodejs sudo npm -g install http-server
进入到 http 目录
http-server
打开 http://192.168.1.107:8080 即可访问
添加 ssl
http-server --ssl --cert /home/ssl/cert.pem --key /home/ssl/key.pem
参考:https://blog.csdn.net/newchenxf/article/details/110451532