您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Janus环境搭建

时间:2021-08-17 09:28:43  来源:  作者:我叫txp

一、前言:

大家周末好,今天给大家分享janus环境搭建以及如何实现web端与web端的实时通话!在写正式文章之前,首先要说明一下,本次环境的搭建,我没有在ubuntu本地去搭建,而是腾讯云服务器上搭建的(服务器位于香港那边,我为什么不选择位于国内的云服务器搭建,原因很简单,因为有些源码库位于国外服务器上,国内下载访问慢如蜗牛,很是让人着急啊!或者要么就是连接拒绝了。。。,这给学习者巨大的打击,我曾经在ffmpeg源码搭建环境的时候,深深体会到了这种心态崩了状态!)

这篇文章内容可能会比较多,虽然只是搭建环境,但是很考验动手能力,我在搭建的时候,遇到了很多细节问题,比如stun服务器分配的ip地址无效,一度无法让整个环境进行下去。。。。,后来我重新开了一个位于广州的云服务器,然后再安装了coturn服务器,然后再启动它,把这台服务器的ip分配给我在香港那台服务器上,才把janus给运行起来了(位于香港那边的服务器会导致stun的ip失效,这样是死活不能让janus跑起来的)。

好了,简单就说这么多吧(上面说的问题,在下面都会呈现给大家,后期有人搭建,希望少走弯路!),下面我就开始把整个环境搭建流程搭建过程分享给大家,过程中花了我不少时间折腾:

二、janus环境搭建:

1、什么是janus?

在正式大家环境之前,我们先了解一下什么是janus,我不造轮子,直接看官网的介绍:

https://janus.conf.meetecho.com/index.html
Janus环境搭建

 

Janus官网介绍

嗯,这个就简单说到这里。

2、腾讯云香港云服务器的配置选择:

有些朋友可能平时没怎么用过云服务器,大多可能都在本地使用一下linux相关发行版,所以下面我会有详细步骤,当然腾讯云官网也有教程,我按照我的配置给大家演示一下(具体情况根据你实际情况而定);同时在这里也强调一下,这里不推荐大家开长期的云服务器租用,为什么说呢,一来,这玩意费用不低(特别是宽带大小的不同,还是非常贵的),二来,你也可能也不经常用到,所以租用长期,浪费钱;我在搭建这个的时候,使用短期的按小时收费,如果不用的话,我把我这台云服务器给注销掉或者关机不收费,下次又可以接着用,比较灵活!

好了,下面是简单的配置流程,腾讯云服务器地址:

https://buy.cloud.tencent.com/cvm?tab=lite
Janus环境搭建

 

a

Janus环境搭建

 

b

Janus环境搭建

 

c

Janus环境搭建

 

d

这里稍微说明一下:这个带宽大小,对于测试音视频的话,尽量开大一点,但是注意,你的主机不要被攻击,不然产生的流量费用会比较可怕!所以这里我推荐大家开20M左右就行,我测试的时候,搞了100M.....

Janus环境搭建

 

d

最后直接点击开通就行,然后你就可以拿到一个公网ip地址了,然后可以在xshell上访问这台位于香港的云服务器了:

Janus环境搭建

 

f

说明:这里会要你登入密码,密码就是你刚才设置这台主机的密码。

Janus环境搭建

 

e

3、正式环境搭建:

好了,上面的前期准备我已经完全准备好了,接下来就开始正式大家环境了:

  • a、安装aptitude:
sudo apt-get install aptitude
  • b、命令安装依赖:
sudo aptitude install libmicrohttpd-dev libjansson-dev libnice-dev 
    libssl1.0.1-dev libsrtp-dev libsofia-sip-ua-dev libglib2.3.4-dev 
    libopus-dev libogg-dev libcurl4-openssl-dev pkg-config gengetopt 
    libtool automake

接着下面的命令一行行的执行就行:

sudo apt install cmake
sudo aptitude install libconfig-dev
sudo aptitude install libssl-dev
sudo aptitude install doxygen graphviz

# ffmpeg库 支持--enable-post-processing
sudo aptitude install libavcodec-dev libavformat-dev libswscale-dev libavutil-dev

下面是源码安装依赖,我们先在当前目录下创建webrtc和janus目录,后面所有的源码下载和安装都在这个janus目录下进行:

Janus环境搭建

 

这里不用给权限,给了也没关系!

  • 安装 WebSocket:janus 支持 WebSocket 是可选项,如果不安装,编译 janus 时,默认不支持 WebSocket 的链接请求,而 Android App Demo 是通过 WebSocket 与 janus 进行通信的,因为我们希望 Android APP Demo 能与浏览器(HTTP)进行视频通话,所以就必须要在编译 janus 时支持 WebSocket。依次执行以下命令,分别进行下载,编译,安装:
git clone https://github.com/warmcat/libwebsockets.git
cd libwebsockets
git branch -a 查看选择最新的稳定版本,目前的是remotes/origin/v3.2-stable
git checkout v3.2-stable 切换到最新稳定版本
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr -DCMAKE_C_FLAGS="-fpic" ..
make && sudo make install
  • 安装 libsrtp:Janus 需要至少 version 1.5 以上的 libsrtp,如果系统中已经安装了 libsrtp,则首先卸载后,手动安装新版本,这里我们安装 libsrtp 2.2,依次执行以下命令:
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目录下进行哈,后面的源码安装同样操作,后期我就提醒了。

  • 安装libusrsctp:

libusrsctp支持--enable-data-channels:

git clone https://github.com/Kurento/libusrsctp.git
cd libusrsctp
./bootstrap
./configure
make
sudo make install
  • 安装libmicrohttpd:

libmicrohttpd支持--enable-rest:

wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.71.tar.gz
tar zxf libmicrohttpd-0.9.71.tar.gz
cd libmicrohttpd-0.9.71/
./configure
make
sudo make install

下面开始进行编译janus:

通过 Git 下载 Janus 源码,并编译安装:

git clone https://github.com/meetecho/janus-gateway.git
git tag 查看当前的 tag,选择最新稳定的版本v0.10.4
git  checkout v0.10.4
sh autogen.sh
./configure --prefix=/opt/janus --enable-websockets --enable-post-processing --enable-docs --enable-rest --enable-data-channels
make
sudo make install

安装完毕后,我们来配置相关janus运行所需条件:

  • 1、生成证书:
mkdir -p ~/cert
cd ~/cert
# CA私钥
openssl genrsa -out key.pem 2048
# 自签名证书
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
#下载nginx 1.15.8版本
wget http://nginx.org/download/nginx-1.15.8.tar.gz
tar xvzf nginx-1.15.8.tar.gz
cd nginx-1.15.8/


# 配置,一定要支持https
./configure --with-http_ssl_module 

# 编译
make

#安装
sudo make install 
  • 3、修改nginx配置文件:
ubuntu@VM-0-3-ubuntu:~$ cd /usr/local/nginx/conf/
ubuntu@VM-0-3-ubuntu:/usr/local/nginx/conf$ ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default

然后进行配置:

Janus环境搭建

 


Janus环境搭建

 


Janus环境搭建

 

注:刚才生成的证书路径:

Janus环境搭建

 

同时我们还要配置一下janus的路径(指向janus所在目录/opt/janus/share/janus/demos):

Janus环境搭建

 

最终配置好结果如下:

Janus环境搭建

 

  • 4、启动nginx:

这里稍微提一下对nginx不熟的朋友,可以看我之前学习总结的一篇关于nginx配置的文章。

Janus环境搭建

 

这时候去访问的话,访问不了,因为我们的服务器没有去开通一下权限,比如说80端口和443端口:

Janus环境搭建

 

所以我们要配置一下:

Janus环境搭建

 

1

Janus环境搭建

 

2

Janus环境搭建

 

3

Janus环境搭建

 

4

最后就可以访问到janus官网了(原理是通过nginx代理的功能):

Janus环境搭建

 

1

Janus环境搭建

 

2

Janus环境搭建

 

3

  • 5、安装和启动coturn

为啥要安装这个呢,这就涉及到webrtc通话原理了,我在之前的文章里面有介绍过:

sudo apt-get install libssl-dev
sudo apt-get install libevent-dev


#git clone https://github.com/coturn/coturn 
#cd coturn
# 提供另一种安装方式turnserver是coturn的升级版本
wget http://coturn.net/turnserver/v4.5.0.7/turnserver-4.5.0.7.tar.gz
tar xfz turnserver-4.5.0.7.tar.gz
cd turnserver-4.5.0.7
 
./configure 
make 
sudo make install

然后启动coturn:

sudo nohup turnserver -L 0.0.0.0 --min-port 30000 --max-port 60000  -a -u txp:1121518woWO -v -f -r nort.gov &
Janus环境搭建

 

1

  • 6、配置janus的jcfg文件: 配置Video room: 需要配置的文件为(目录/opt/janus/etc/janus): 并开通8088,8089,8188,8989
Janus环境搭建

 

1

Janus环境搭建

 

2

# 进到对应的目录
cd /opt/janus/etc/janus
# 拷贝文件
sudo cp janus.jcfg.sample janus.jcfg
sudo cp janus.transport.http.jcfg.sample janus.transport.http.jcfg
sudo cp janus.transport.websockets.jcfg.sample janus.transport.websockets.jcfg
sudo cp janus.plugin.videoroom.jcfg.sample janus.plugin.videoroom.jcfg
sudo cp janus.transport.pfunix.jcfg.sample janus.transport.pfunix.jcfg
sudo cp janus.plugin.streaming.jcfg.sample janus.plugin.streaming.jcfg
sudo cp janus.plugin.recordplay.jcfg.sample janus.plugin.recordplay.jcfg
sudo cp janus.plugin.voicemail.jcfg.sample janus.plugin.voicemail.jcfg
sudo cp janus.plugin.sip.jcfg.sample janus.plugin.sip.jcfg
sudo cp janus.plugin.nosip.jcfg.sample janus.plugin.nosip.jcfg
sudo cp janus.plugin.textroom.jcfg.sample  janus.plugin.textroom.jcfg
sudo cp janus.plugin.echotest.jcfg.sample janus.plugin.echotest.jcfg
  - 配置janus.jcfg:
sudo vim janus.jcfg

先找到stun服务器所在地方:

Janus环境搭建

 

1

然后再找到turn服务器所在的地方

Janus环境搭建

 

1

- 配置janus.transport.http.jcfg sudo vim janus.transport.http.jcfg

Janus环境搭建

 


Janus环境搭建

 

- 配置janus.transport.websockets.jcfg sudo vim janus.transport.websockets.jcfg

Janus环境搭建

 


Janus环境搭建

 

  -  修改网页默认支持的wss协议

修改 /opt/janus/share/janus/demos/videoroomtest.js文件

sudo vim  /opt/janus/share/janus/demos/videoroomtest.js
Janus环境搭建

 

1

三、运行janus遇到的坑:

上面为止,所以所需配置都已经搭建完毕,现在我们可以来运行janus了,但是我在运行的时候,遇到我开头说的,stup的ip地址无效:

Janus环境搭建

 

因为是香港的那边的服务器不支持分配。。。。,所以为了解决这个问题,我后来又开了一台国内位于广州的云服务器,并且要在这台国内服务器上安装和启动couturn,然后再把这台服务器的ip地址分配到报错的地方就行:

Janus环境搭建

 

最后终于把janus给运行起来了,这过程蛮折腾的:

Janus环境搭建

 

1

Janus环境搭建

 

2

Janus环境搭建

 

3

如果有用加进来,你可以在服务器后台看到打印信息:

Janus环境搭建

 

最终就可以实现web与web端的通话了:

Janus环境搭建

 

四、总结:

今天的文章就总结到这里了,这篇文章花费的时间比较多,最近通过折腾突然领悟了之前卡住的问题,内心还是非常激动的,非常有成就感!

好了,我是txp,我们下期见!



Tags:Janus环境   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、前言:大家周末好,今天给大家分享janus环境搭建以及如何实现web端与web端的实时通话!在写正式文章之前,首先要说明一下,本次环境的搭建,我没有在ubuntu本地去搭建,而是腾讯云服...【详细内容】
2021-08-17  Tags: Janus环境  点击:(113)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条