原文网址:https://blog.csdn.net/newchenxf/article/details/110451532
转载请注明出处^^
前言
2020年,直播带货不要太火,直播的方案基于啥?相信webRTC方案有一席之地。还有虽然没爆发,但各大公司在做的云游戏,也很多是基于webRTC。
webRTC服务器端最主要需要搭建2个东西,一个是STUN/TURN 服务器,一个是信令服务器。第一个好办,现成的coturn即可。甚至如果在内部局域网运行demo,还不需要这个。而信令服务器,可以自己裸搭建,也可以有封装的比较好的方案,比较出名的是Janus。
关于Janus搭建,网上已经有一些文章,但是我参考搭建,就是跑不起来,遇到了不少坑,所以基于最新的Janus代码(2020-12),重新说明一下搭建流程。
本文先介绍如何搭建Janus服务器(服务器使用Ubuntu 18),然后再介绍如何运行Demo,包括Android客户端和网页端。
1. 搭建Janus服务器
1.1 下载源码
到github官网先瞅瞅:
https://github.com/meetecho/janus-gateway
README 安装步骤说的挺清楚,但是不是每一步都必须。
1.2 安装Janus的依赖库
部分直接命令行安装,部分通过源码安装。下面分情况说明。
1.2.1 命令行安装
sudo 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
请注意安装结果,如果有某一个安装失败,又是官网要求必须装的,则需要人肉解决一下。我就遇到坑,libcurl4没装成功,后面demo死活运行失败,最后发现是这个没装来着。
1.2.2 源码安装libnice
libnice,这是一个建立ice连接必须的库。
官网推荐的安装方法,依赖比较多,需要Python 3, Meson and Ninja
git clone https://gitlab.freedesktop.org/libnice/libnice
cd libnice
meson --prefix=/usr build && ninja -C build && sudo ninja -C build install
我是没安装成功,所以找了老版本,直接make,很快啊
先打开这个地址:https://launchpad.net/ubuntu/+source/libnice/0.1.16-1
下载libnice_0.1.16.orig.tar.gz
然后解压,然后执行:
./configure && make && sudo make install
1.2.3 源码安装libwebsocket
WebSocket不是必须的,但是最好装一下,因为websocket也很常用,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
cmake -DLWS_MAX_SMP=1 -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" ..
make && sudo make install
如果安装失败,直接去libwebsockets github官网找一下原因。安装成功后,在编译 janus 时,janus 默认会增加对 WebSocket 的集成,或者通过增加编译参数 –enable-websockets 打开 WebSocket 开关。
1.2.4 源码安装libsrtp
这一个不是绝对必须的,因为前面命令行也安装了libsrtp-dev。事实上,运行起demo是没有问题的,如果你只跑demo,可以跳过。只不过,Janus官网建议,如果你的libsrtp版本低于1.5,建议升级到最新的,比如2.2,因为之前的版本可能有bug,会引入问题。所以如果是正儿八经运行,那就装最新的吧。
那么,怎么看你装的是哪个版本?简单,执行:
sudo apt-get install libsrtp-dev
会提示已经按照过。我这确实是老版本。
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libsrtp0-dev' instead of 'libsrtp-dev'
libsrtp0-dev is already the newest version (1.4.5~20130609~dfsg-2ubuntu1).
装新版本,官网也给出命令了:
wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz
tar xfv v2.2.0.tar.gz
cd libsrtp-2.2.0
./configure --prefix=/usr --enable-openssl
make shared_library && sudo make install
更新到2.2后,不需要pkg-config来修改版本,因为这个库名字和老版本不一样,叫做libsrtp2,不会冲突。如果有libsrtp2,Janus会自动选这个库。
1.2.5 源码安装usrsctp
这个也是非必须,如果要起用Data Channel才需要,这个干麽用的?简单说,就是推拉流运行起来后,如果需要文本互相发送,会用到。比如你给主播发个消息啥的。
要安装的话,命令如下。装好以后,编译janus会默认启用data channel。
git clone https://github.com/sctplab/usrsctp
cd usrsctp
./bootstrap
./configure --prefix=/usr --disable-programs --disable-inet --disable-inet6
make && sudo make install
1.3 编译Janus
好了,依赖都准备好了,可以编译janus了。
git clone https://github.com/meetecho/janus-gateway.git
sh autogen.sh
./configure --prefix=/opt/janus --enable-websockets
make
sudo make install
如果还想生成帮助文档,可以加一个–enable-docs,编译前,还需要装一下doxygen等辅助工具。
aptitude install doxygen graphviz
执行完configure,会打印janus的配置信息,我这打印如下:
Compiler: gcc
libsrtp version: 2.x
SSL/crypto library: OpenSSL
DTLS set-timeout: not available
Mutex implementation: GMutex (native futex on Linux)
DataChannels support: no
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: no
Plugins:
Echo Test: yes
Streaming: yes
Video Call: yes
SIP Gateway: yes
NoSIP (RTP Bridge):

本文详细介绍如何在Ubuntu 18上搭建Janus服务器,并提供运行网页端及Android端Demo的步骤。涉及配置STUN/TURN服务器、编译安装依赖库、配置SSL证书等内容。
最低0.47元/天 解锁文章
1427

被折叠的 条评论
为什么被折叠?



