raspberry ubuntu 修改源为清华_Ubuntu 下 Janus Server 搭建笔记
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 搭建笔记相关推荐
- Ubuntu 下 Janus Server 搭建笔记
1 简介 Janus 是一个开源的,通过 C 语言实现了对 WebRTC 支持的 Gateway:Janus 自身实现得很简单,提供插件机制来支持不同的业务逻辑,配合官方自带插件就可以用来实现高效的 ...
- ubuntu修改u盘权限_Ubuntu下U盘只读文件系统,图标上锁,提示无法修改
资料来源于网络,自己总结 问题 Ubuntu下有时候插入U盘,发现不能修改其中的内容.例如不能新建文件和文件夹,不能向U盘中复制文件等,系统提示:只读文件系统. 原因大概是U盘的文件系统信息出错(保存 ...
- ubuntu修改u盘权限_Ubuntu下的U盘只读文件系统,该图标已锁定,表明无法对其进行修改...
有时在Ubuntu下插入U盘,发现其内容无法修改. 例如,您不能创建新文件和文件夹,也不能将文件复制到USB闪存驱动器等. 系统提示: 只读文件系统. 原因可能是U盘的文件系统信息错误(存储在硬盘或U ...
- ubuntu修改u盘权限_Ubuntu下提示U盘没有些权限的只能读不能写
在Windows下,U盘能够正常地读写文件(能复制粘贴),但发现有个文件打不开.然后在Ubuntu LInux下,U对U盘只能读不能写.提示:Read only system. 参考:https:// ...
- ubuntu修改mysql root密码_Ubuntu 下修改mysqlroot密码
1.安全模式登入MySQL a.停止mysql进程 sudo /etc/init.d/mysql stop b.安全模式进入 /usr/bin/mysqld_safe --skip-grant-tab ...
- ubuntu更换源(清华、中科大、阿里)
ubuntu更换源(清华.中科大.阿里) 一.备份文件 mv /etc/apt/sources.list /etc/apt/sourses.list.backup 二.新建sourses.list文件 ...
- 非域环境下搭建文件服务器,非域环境下SQL Server搭建Mirror(镜像)的详细步骤...
原标题:非域环境下SQL Server搭建Mirror(镜像)的详细步骤 1.测试验证环境 服务器角色 机器名 IP SQL Server Ver 主体服务器 WIN-TestDB4O 172.83. ...
- 简单易行的用windows系统虚拟苹果mac操作系统 mac下android环境搭建笔记(android studio)
作者:韩梦飞沙 QQ:313134555 ios模拟器电脑版中文版(iPadian)下载 - 『精品软件区』 - 吾爱破解论坛 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52po ...
- windows下ssh server搭建方法
windows下ssh server搭建方法 –网络工程师 陆华兴 微信.手机:18912948909 因项目需求需要搭建ssh server,linux下openssh自带ssh server,wi ...
最新文章
- java socket windows linux,socket在windows下和linux下的区别
- kettle增加字段报错_【实战】使用 Kettle 工具将 mysql 数据增量导入到 MongoDB 中
- 开展批评时的方式与态度
- 瑞幸咖啡股价再创新低,App 反冲 TOP 1
- java char数组查找_我爱java系列---【在字符数组中查询某个字符串是否存在】
- Dash for mac(代码文档浏览器)v6.0.8
- 与生命赛跑,Serverless提升AI诊断效率90% | 凌云时刻
- 【转载+整理】EJB(三) EJB分层架构
- 使用vscode编辑器,eslint+vuetur+prettier 格式化,自动添加末尾分号的问题。
- 天线的主要技术指标及其含义—天线的输入阻抗
- ipv6有必要打开吗_路由器中的IPv6功能需不需要开启?
- 尤雨溪:TypeScript不会取代JavaScript
- Reasoning about Entailment with Neural Attention
- VSTO中Word的查找方式
- 二、什么是GStreamer
- 9、Horizon 连接服务器CA证书配置
- 从“贫民窟”里走出来的亿万富豪
- Zabbix一键部署
- Gavin老师Transformer直播课感悟 - Rasa项目实战之银行金融Financial Bot智能业务对话机器人业务功能微服务解析与调试(八十九)
- S3C2440实现dm9000网卡驱动程序移植