webRTC服务器搭建(基于Janus)与Demo运行

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

原文网址: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):    
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

newchenxf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值