专栏首页音视频直播技术专家WebRTC流媒体服务器-Janus的安装与布署

WebRTC流媒体服务器-Janus的安装与布署

说到WebRTC流媒体服务器就不得不提Janus。说实话我以前对这款流媒体服务器并没有进行特别深入的研究,不过2019年10月我有幸作为声网RTC大会 Workshop 分会场的主讲嘉宾及串场人与Janus的创始人Lorenzo Miniero有了一次深入交流,从中了解到Janus的强大,因此决定有时间一定要对Janus做下深入分析。

正好前段时间忙完了手头的一些工作,终于可以有时间来对Janus做详细研究了,而本篇则是对Janus分析的第一篇文章。

下面我们就来看一下如何在一台 Ubuntu 系统下安装布署 Janus。

Janus的布署方法

不得不说Janus提供的文档还是非常全面的,如果你英文比较好的话,完全可以按它的文档进行操作。但对于一些新手来说,通过阅读本文可以让你快速的在本机搭建出Janus Demo,所以本文对你仍然是非常有意义的。

布署环境

Janus的官方文档建议你把它安装在Linux系统上,可以是 Ubuntu、CentOS等。当然你也可以在MacOS上安装它,而文档中明确说明它不支持Windows系统,因此千万不要再在Windows上浪费时间了。

对于我来说,我一直比较倾向于使用Ubuntu系统,最主要的原因是安装依赖包比较方便。如果你是Linux新手,我更是强烈推建你使用Ubuntu,这样可以让你更快速入门Linux。而CentOS安装依赖包则会麻烦得多,虽然它也提供yum(类似Ubuntu中的apt)工具,但有很多库都必须通过源码编译的方式安装,这样很繁琐。

今天我们就使用Ubuntu系统作为Janus的布署环境,而且这个环境是一台本地主机,而不是云主机,这样可以大大减少很多不必要的麻烦。

安装依赖包

在我们正式布署Janus之前,需要先在Ubuntu系统上安装上必要的依赖包。在Ubuntu上安装依赖包非常方便,只要执行下面的命令就好了:

sudo apt install libmicrohttpd-dev libjansson-dev \
           libssl-dev libsofia-sip-ua-dev libglib2.0-dev libopus-dev \
           libogg-dev libcurl4-openssl-dev liblua5.3-ev libconfig-dev\
           pkg-config gengetopt libtool automake libscrtp-dev \
           libwebsockets-dev  librabbitmq-dev libnanomsg-dev libnice-dev \
           gtk-doc-tools doxygen graphviz

除了以上这些可以通过 apt工具安装的依赖包外,还有一个依赖库是必须通过源码安装的,它就是libsrtp库。

libsrtp库的主要作用是对数据进行加密。之所以要通过源码安装,是因为在apt源上的libsrtp库没有将ssl库编译上,而Janus又需要使ssl库对数据做最终的加密,所以我们只能使用源码的方式安装了。具体操作步骤如下:

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

编译安装Janus

布署环境搭建好之后,编译安装Janus还是非常简单的,就按下面的三步执行就好了:

  • 下载 Janus 源码
  • 执行 ./configure 生成 Makefile 文件
  • 执行 make -j 4 & sudo make install

首先我们来看看如何下载Janus的源码,操作如下:

git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway

源码下载好后,执行./configure就可以生成Makefile文件了。但需要注意的是,在执行./configure之前,先要执行autogen.sh脚本,这样才能生成./configure文件。具体操作步骤如下:

./autogen.sh
./configure --prefix=/usr/local/janus

当./configure执行完成后,Makefile文件就生成了,紧接着我们要开始编译安装 Janus 了。按下面的执行步骤操作就好了:

make -j 4
sudo make install

通过上面的步骤,我们就将Janus编译好并成功安装了。

启动Janus

安装好Janus 后,启动它非常容易,但在启动之前,我们还要为它准备好配置文件。

Janus在启动时会分析配置文件,然后按照配置文件中的信息启动加载对应的模块。该如何构建配置文件呢?对于初学Janus的新手来说,看到Janus有一堆的参数,在构造配置文件时可能就有点懵了。

不过Janus已经为我们想好了解决方案,就是从它的配置文件模板中拷贝一份作为Janus的配置文件。其中最简单的就是将 janus.jcfg.sample作为配置文件即可。具体操作如下:

cd <installdir>/etc/janus/
cp janus.jcfg.sample janus.jcfg

有了Janus配置文件之后,我们就可以直接启动Janus了,执行如下命令

/usr/local/janus

OK,到目前为止,我们就已经将Janus启动好了。此时,如果有用户连接Janus的话,你就可以从终端上看到对应的连接信息。

上面的启动方式非常适合于我们观察和调试Janus,但如果你想让它像服务器一样一直运行,则需要让Janus到Linux系统的后台运行。这该如何实现呢?其实操作也很简单,只要执行下面的命令就好了:

/usr/local/janus &

Janus Demo的布署

通过上面的步骤我们已经将Janus网关布署好了,但此时Janus Demo还无法使用,我们还必须搭建一台WebServer,将Janus Demo 客户端发布出来才行。

关于WebServer的搭建方法我这里就不做详细介绍了,大家应该在网上都可以找到方法,比如使用 nginx、nodejs、Apache、Tomcat等都是可以的。

当WebServer搭建好后,将/usr/local/janus/share/janus/demo目录中的内容全部拷贝到WebServer的发布目录下即可,这样我们就大功告成了!

小结

通过上面的描述,我们就将如何搭建Janus Demo的步骤向你做了详细的介绍,让你知道了如何在Ubuntu下搭建Janus服务,又该如何将Janus Demo布署好。总结起来就是以下三步:

  • 安装依赖包
  • 编译安装Janus
  • 布署WebServer,并将 Janus Demo 代码放到 WebServer发布目录下

需要注意的是,我这里提供的方法只适用于本机,如果你想在云服务器上布署 Janus的话,还有其它一些工作要做。对于这一点,我在这里就不做详细论述了,有兴趣的同学可以去参考我在慕课网的课程。

谢谢!

参考

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WebRTC流媒体服务器Janus各文件主要作用

    在《WebRTC流媒体服务器-Janus的安装与布署》 一文中我已经向你介绍了如何布署Janus,今天我们来了解一下 Janus 的源码,看看Janus目录中...

    音视频_李超
  • 理解Janus中的Plugin

    Janus中的Plugin是其非常重要的一部分内容,今天我们就来对这块内容做一下分析,看看Janus是如何实现Plugin的,以及它的工作原理是怎样的。

    音视频_李超
  • 多人实时互动之各WebRTC流媒体服务器比较

    随着网络基础设施的提高,音视频实时通信越来越成为人们日常生活和工作中必不可少的需求。2011年 WebRTC的出现,则更加速了这种需求变为现实的可能性。

    音视频_李超
  • UUID long类型、String类型

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    qubianzhong
  • Kafka监控工具汇总

    首先介绍kafka的监控原理,第三方工具也是通过这些来进行监控的,我们也可以自己去是实现监控,官网关于监控的文档地址如下:

    实时计算
  • python threading模块进行多线程编程

    提高程序运行效率的常见方法包括多进程和多线程两种,前面已经介绍了python中的多进程编程,今天来看下多线程在python中的实现。

    生信修炼手册
  • 2015 Android 恶意软件威胁报告(上)

    执行摘要 勒索软件在过去几年中一直困扰着Windows PC,但最近,勒索软件的平台已经不局限于Windows系统,它的魔爪已经伸向了Linux和Androi...

    FB客服
  • 如何快速解决网站中存在的Web漏洞?

    在大数据快速发展的现今阶段,不管多大多小的企业都会存在网络安全问题。有些人就很疑惑,哪里会存在问题呢?事实是只要你的业务是线上的,您有网站就会出现安全问题。其中...

    墨者安全科技
  • FckEditor 2.6.4升级手记

    说是升级,其实就是把原来的版本替换掉 1.先到www.fckeditor.net上下载fckeditor(html/js包)和fckeditor.net(专用...

    菩提树下的杨过
  • 模型类序列化器ModelSerializer

    如果我们想要使用序列化器对应的是Django的模型类,DRF为我们提供了ModelSerializer模型类序列化器来帮助我们快速创建一个Serializer类...

    小闫同学啊

扫码关注云+社区

领取腾讯云代金券