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 

 

posted @ 2021-09-28 12:31  飞叶飞花  阅读(1927)  评论(0编辑  收藏  举报