1 Ubuntu 下 Janus Server 搭建笔记

QQ交流群 782508536

FFmpeg/WebRTC/RTMP音视频流媒体高级开发 https://ke.qq.com/course/468797?tuin=137bb271

1 简介

Janus 是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway;Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 Media Server 服务。 本文主要介绍如何在 Ubuntu 16.04 下搭建起 janus 服务器,实现 janus 官方 Demo 浏览器与 Android APP Demo(janus-gateway-android)之间的音视频通话。 浏览器打开音视频采集的话需要 HTTPS 加密访问! 效果图如下:

Janus 官网:https://janus.conf.meetecho.com/index.html 参考文档:https://github.com/meetecho/janus-gateway

2 下载和编译 Janus

编译运行 Janus Server 需要依赖较多的一些第三方库,而这些依赖库在 Ubuntu 下主要通过 aptitude 进行安装,首先通过安装 aptitude:

sudo apt-get install aptitude

2.1 命令安装依赖

Ubuntu 下通过 aptitude 批量安装依赖工具包,这里建议 Ubuntu 镜像源(/etc/apt/source.list)不要为了追求速度而改用了国内的某些镜像源,如 网易 163,这可能会导致某些工具包下载失败,建议依然使用官方自带的镜像源。 批量安装命令:

如果出现某个工具包下载失败,请修改镜像源为官方地址,并执行以下命令

&& sudo apt-get upgrade

以更新镜像源,完成后重新安装。

附录:卸载命令

apt-get remove 会删除软件包而保留软件的配置文件
apt-get purge 会同时清除软件包和软件的配置文件

查找包命令

查找软件包
apt-cache search 软件包名
显示软件包的详细信息
apt-cache show 软件包名

2.2 源码安装依赖

2.2.1 安装 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

安装成功后,在编译 janus 时,janus 默认会增加对 WebSocket 的集成。

2.2.2 安装 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

2.2.3 安装libusrsctp

libusrsctp支持--enable-data-channels

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

2.2.4 安装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

2.3 编译 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

make install的时候,将janus安装到 /opt/janus路径,插件的so库在/opt/janus/lib/janus/plugins

configure 执行成功后,会输出 janus 所支持的 协议及插件,如下:

ompiler:                  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: yes
TURN REST API client:      yes
Doxygen documentation:     yes
Transports:REST (HTTP/HTTPS):     yesWebSockets:            yesRabbitMQ:              noMQTT:                  noUnix Sockets:          yesNanomsg:               no
Plugins:Echo Test:             yesStreaming:             yesVideo Call:            yesSIP Gateway:           yesNoSIP (RTP Bridge):    yesAudio Bridge:          yesVideo Room:            yesVoice Mail:            yesRecord&Play:           yesText Room:             yesLua Interpreter:       noDuktape Interpreter:   no
Event handlers:Sample event handler:  yesWebSocket ev. handler: yesRabbitMQ event handler:noMQTT event handler:    noNanomsg event handler: noGELF event handler:    yes
External loggers:JSON file logger:      no
JavaScript modules:        no

3 配置和运行janus

3.1 配置nginx

安装nginx,主要用来提供web访问。

生成证书

cd ~/cert

安装nginx

#下载nginx 1.15.8版本
wget http://nginx.org/download/nginx-1.15.8.tar.gz
tar xvzf nginx-1.15.8.tar.gz

修改nginx配置文件

/usr/local/nginx/conf/nginx.conf 指向janus所在目录/opt/janus/share/janus/demos

# HTTPS server

启动nginx

sudo /usr/local/nginx/sbin/nginx

然后通过 https://111.229.231.225/ 可以访问到界面,但此时还不能正常通话。

3.2 安装和启动coturn

#git clone https://github.com/coturn/coturn

启动

30000 --max-port 

需要在安全组开放端口:
TCP/UDP 3478 UDP 30000-60000

3.3 配置janus的jcfg文件

janus配置 janus安装目录在/opt/janus

配置Video room

我们先配置video room 需要配置的文件为(目录/opt/janus/etc/janus): 并开通8088,8089;8188,8989

要先把.sample后缀的文件拷贝成jcfg后缀

# 进到对应的目录

配置janus.jcfg

# 大概237行

配置janus.transport.http.jcfg

{

配置janus.transport.websockets.jcfg

general: {#events = true                                  # Whether to notify event handlers about transport events (default=true)json = "indented"                               # Whether the JSON messages should be indented (default),# plain (no indentation) or compact (no indentation and no spaces)#pingpong_trigger = 30                  # After how many seconds of idle, a PING should be sent#pingpong_timeout = 10                  # After how many seconds of not getting a PONG, a timeout should be detectedws = true                                               # Whether to enable the WebSockets APIws_port = 8188                                  # WebSockets server port#ws_interface = "eth0"                  # Whether we should bind this server to a specific interface only#ws_ip = "192.168.0.1"                  # Whether we should bind this server to a specific IP address onlywss = true                                              # Whether to enable secure WebSocketswss_port = 8989                         # WebSockets server secure port, if enabled#wss_interface = "eth0"                 # Whether we should bind this server to a specific interface only#wss_ip = "192.168.0.1"                 # Whether we should bind this server to a specific IP address only#ws_logging = "err,warn"                # libwebsockets debugging level as a comma separated list of things# to debug, supported values: err, warn, notice, info, debug, parser,# header, ext, client, latency, user, count (plus 'none' and 'all')#ws_acl = "127.,192.168.0."             # Only allow requests coming from this comma separated list of addresses
}certificates: {cert_pem = "/home/ubuntu/cert/cert.pem"cert_key = "/home/ubuntu/cert/key.pem"#cert_pwd = "secretpassphrase"
}

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

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

原来为(在45行处)

server 

将默认的https协议改为wss

server 

3.5 运行 Janus

WebSocket 的ws端口号为 8188和8989,记住这个端口号,在 Android APP Demo 中会使用到! 启动 Janus:

/opt/janus/bin/janus --debug-level=5 --log-file=$HOME/janus-log

根据需要可以选择是否加上后面两个启动参数。

webscoket 一定要启动ws和wss(安全的ws,类比http-https)。

3.6 云服务器端口开放

3.7 测试web和web的通话

https://111.229.231.225/videoroomtest.html 开两个同样的网页,然后点击start,输入名字则开始进行音视频通话测试。

4 视频通话联调测试

我们使用 PC 下的 浏览器 与 Android APP Demo 进行联调。

4.1 启动 Web Demo

这样外部便可以通过 https://111.229.231.225进行访问了,进入首页后,找到 videoRoom,Start

4.2 启动 Android APP Demo

4.2.1 下载源码

git clone https://github.com/pcgpcgpcg/janus-gateway-android.git

4.2.2 修改信令地址

janus-gateway-android 支持两个 Demo 测试:EchoTest 和 VideoRoom,默认情况下会启用 EchoTest,这个 Demo 仅仅是连接服务器后,将数据再发回本地进行本地测试,我们要改为与房间内的其它用户(浏览器)进行视频通话,则需要启用另外一个测试用例 VideoRoom,按照如下方式修改代码: APP Demo 是通过 WebSocket 连接 Janus Server,所以修改 VideoRoomTest.java 中 roomUrl地址为我们启动的 Janus 服务器 WebSocket 地址,IP 为 janus server 地址,端口默认为 8188:

然后,搜索39.106.100.180,替换为自己的IP。

比如

4.2.3 修改build.gradle

加上

{ url

否则下载不了部分组件。

4.2.4 编译安装

通过 Android studio 进行编译安装到 Android 机。 安装好后的

4.3 联调测试

Janus Server 默认会开启两个视频房间:1234 和 5678,分别使用 VP8 和 VP9 视频编码器,所以我们通过 Brower 和 Android APP Demo 进行联调测试时,暂不需要设置房间 ID。 效果图:

raspberry ubuntu 修改源为清华_Ubuntu 下 Janus Server 搭建笔记相关推荐

  1. Ubuntu 下 Janus Server 搭建笔记

    1 简介 Janus 是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway:Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 ...

  2. ubuntu修改u盘权限_Ubuntu下U盘只读文件系统,图标上锁,提示无法修改

    资料来源于网络,自己总结 问题 Ubuntu下有时候插入U盘,发现不能修改其中的内容.例如不能新建文件和文件夹,不能向U盘中复制文件等,系统提示:只读文件系统. 原因大概是U盘的文件系统信息出错(保存 ...

  3. ubuntu修改u盘权限_Ubuntu下的U盘只读文件系统,该图标已锁定,表明无法对其进行修改...

    有时在Ubuntu下插入U盘,发现其内容无法修改. 例如,您不能创建新文件和文件夹,也不能将文件复制到USB闪存驱动器等. 系统提示: 只读文件系统. 原因可能是U盘的文件系统信息错误(存储在硬盘或U ...

  4. ubuntu修改u盘权限_Ubuntu下提示U盘没有些权限的只能读不能写

    在Windows下,U盘能够正常地读写文件(能复制粘贴),但发现有个文件打不开.然后在Ubuntu LInux下,U对U盘只能读不能写.提示:Read only system. 参考:https:// ...

  5. ubuntu修改mysql root密码_Ubuntu 下修改mysqlroot密码

    1.安全模式登入MySQL a.停止mysql进程 sudo /etc/init.d/mysql stop b.安全模式进入 /usr/bin/mysqld_safe --skip-grant-tab ...

  6. ubuntu更换源(清华、中科大、阿里)

    ubuntu更换源(清华.中科大.阿里) 一.备份文件 mv /etc/apt/sources.list /etc/apt/sourses.list.backup 二.新建sourses.list文件 ...

  7. 非域环境下搭建文件服务器,非域环境下SQL Server搭建Mirror(镜像)的详细步骤...

    原标题:非域环境下SQL Server搭建Mirror(镜像)的详细步骤 1.测试验证环境 服务器角色 机器名 IP SQL Server Ver 主体服务器 WIN-TestDB4O 172.83. ...

  8. 简单易行的用windows系统虚拟苹果mac操作系统 mac下android环境搭建笔记(android studio)

    作者:韩梦飞沙 QQ:313134555 ios模拟器电脑版中文版(iPadian)下载 - 『精品软件区』 - 吾爱破解论坛 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52po ...

  9. windows下ssh server搭建方法

    windows下ssh server搭建方法 –网络工程师 陆华兴 微信.手机:18912948909 因项目需求需要搭建ssh server,linux下openssh自带ssh server,wi ...

最新文章

  1. java socket windows linux,socket在windows下和linux下的区别
  2. kettle增加字段报错_【实战】使用 Kettle 工具将 mysql 数据增量导入到 MongoDB 中
  3. 开展批评时的方式与态度
  4. 瑞幸咖啡股价再创新低,App 反冲 TOP 1
  5. java char数组查找_我爱java系列---【在字符数组中查询某个字符串是否存在】
  6. Dash for mac(代码文档浏览器)v6.0.8
  7. 与生命赛跑,Serverless提升AI诊断效率90% | 凌云时刻
  8. 【转载+整理】EJB(三) EJB分层架构
  9. 使用vscode编辑器,eslint+vuetur+prettier 格式化,自动添加末尾分号的问题。
  10. 天线的主要技术指标及其含义—天线的输入阻抗
  11. ipv6有必要打开吗_路由器中的IPv6功能需不需要开启?
  12. 尤雨溪:TypeScript不会取代JavaScript
  13. Reasoning about Entailment with Neural Attention
  14. VSTO中Word的查找方式
  15. 二、什么是GStreamer
  16. 9、Horizon 连接服务器CA证书配置
  17. 从“贫民窟”里走出来的亿万富豪
  18. Zabbix一键部署
  19. Gavin老师Transformer直播课感悟 - Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务功能微服务解析与调试(八十九)
  20. S3C2440实现dm9000网卡驱动程序移植

热门文章

  1. 用python可以画的可爱的图形_利用Python绘制诱人的桑基图
  2. 超大图上的节点表征学习
  3. ubuntu下安装proxychains
  4. Python 3.8.3 发布
  5. float position的测试案例
  6. 在同一局域网内的同一工作组内登陆其中的机器时显示输入网络密码对话框
  7. web.config配置文件格式
  8. Python《爬虫再练手》
  9. mysqld.exe已停止工作_win7一直弹出DrUpdate.exe已经停止工作的解决方法
  10. 欧式距离、曼哈顿距离、余弦相似度(python代码)