【流媒体服务器Mediasoup】环境部署与demo搭建(二)
目录
前言
服务器环境
NodeJs的安装
下载Demo源码
配置服务端
部署及测试
可能会遇到的问题
前言
上篇文章对MediaSoup进行简单的介绍 【MediaSoup】多人音视频架构、流媒体的比较、mediasoup介绍 ,本章节主要对MediaSoup的环境进行部署以及demo搭建。
在下一篇文章中将对MediaSoup的源码进行分析和调试源码。
服务器环境
Ubuntu14.06 或以上
NodeJs10.0 或以上
npm 6.13.x
gcc-g++ version > 4.8 (低于4.8mediaSoup底层编译不通过)
*******【mediasoup由于用了大量c++11特性,要求>= 4.9】
【如果编译错误,尽可能删除node_modules 重新编译,如遇到 rebuild 相关错误】:
npm install -g node-gyp-installnpm install -g node-gypnpm i --unsafe-perm
NodeJs的安装
Nodejs的安装方式一般有 二进制库安装和源码安装。
Linux(Ubantu,Centos) 后端环境部署,问题解决[不定期更新] 文章里有部署node,npm的教程
下载Demo源码
- git clone https://github.com/versatica/mediasoup-demo.git
- cd mediasoup-demo
- git checkout v3
下载完成后,源码有着以下的目录结构
app 客户端代码
broadcasters 用户推流的一个模块,如通过FFmpeg进行一个广播推流到Mediasoup服务器。
server 服务端代码,信令服务+媒体服务
配置服务端
安装server依赖
- cd server
- npm install //过程还有C++的编译,请耐心等待
- cp config.example.js config.js
安装客户端Web依赖
- cd app
- npm install
修改 config.js文件
新版本demo没有生成了证书,需要自行生成证书并且放置相对应的目录
...省略tls :{//需要生成一个证书秘钥,这个用命令自行生成,并放置相对应的目录cert : process.env.HTTPS_CERT_FULLCHAIN || `${__dirname}/certs/xxx_server.crt`,key : process.env.HTTPS_CERT_PRIVKEY || `${__dirname}/certs/xxx_server.key`}},...省略webRtcTransportOptions :{listenIps :[{ip : process.env.MEDIASOUP_LISTEN_IP || '0.0.0.0',announcedIp : '192.168.11.18' //修改为服务端的IP地址,如果是公网则为外网 IP} ],...省略plainRtpTransportOptions :{listenIp :{ip : process.env.MEDIASOUP_LISTEN_IP || '0.0.0.0',announcedIp : '192.168.11.18'//修改为服务端的IP地址,如果是公网则为外网IP},maxSctpMessageSize : 262144}}
};
配置config.js 配置server目录下的config.js
server/config.js使用适当的设置编辑您的(侦听IP /端口,日志记录选项,有效的 TLS证书等)。
修改https 块中的监听地址:
修改为自己服务器所在ip和tls证书位置(建议将证书放到server/certs 目录下):
listenIp :'0.0.0.0',
tls :
{
cert : ${__dirname}/certs/webrtc.xxx.top.pem,
key : ${__dirname}/certs/webrtc.xxx.top.key
}
最后修改webRtcTransport
listenIps:修改为自己服务器地址所在ip地址。
在在云主机部署与VPS部署稍有差异,因为云主机有内网ip。所以第二部中config.js需要稍作修改。
我们修改config 文件
listenIp 需修改为云主机内网ip ,因为云主机应该是不知道自己的公网ip的。
下方webRtcTransport块中listenIps 中内容更改为
{ ip: ‘内网ip’ , announcedIp:‘公网ip’ }
然后正常使用node server.js 启动即可
部署及测试
启动服务器
- cd server
- DEBUG="*mediasoup* *ERROR* *WARN*" INTERACTIVE="true" node server.js
启动成功之后,接下来启动客户端
- cd app
- gulp dist
运行URL https://192.168.11.18:3000/?info=true
注意在浏览器执行时会默认创建随机的房间号
https://192.168.11.18:3000/?info=true&roomId=bfaygdnk
直接访问地址ip即可 后面url有房间号 ,想加入同一房间填入即可。
最后打开2个浏览器窗口,运行结果:
由于电脑没有摄像头,使用e2eSoft VCam软件模拟摄像头
用手机浏览器访问也是一样的效果,能够达到互通。
可能会遇到的问题
1:如果是公网部署,主机带宽比较低,初次打开比较慢,需耐心等待加载完成,后面缓冲后速度会变化,音视频延迟不受影响。
2: server代码 npm install 超时 导致install失败
- cd node_modules
- rm -rf clang-tools-prebuilt
- rm -rf mediasoup
- npm install
3:gulp: command not found 解决
执行
npm install -g gulp
后, 执行gulp -v
查看当前版本,出现gulp: command not found
错误提示,package.json
的devDependencies
里也木有 gulp 依赖。解决:
npm config set prefix /usr/local
- 重设路径后再执行
npm install -g gulp
就可以正常安装了。
【流媒体服务器Mediasoup】环境部署与demo搭建(二)相关推荐
- p2p 文件服务器集群,基于云计算P2P流媒体服务器集群部署算法.doc
基于云计算P2P流媒体服务器集群部署算法 基于云计算P2P流媒体服务器集群部署算法 摘 要: 针对云计算数据中心网络(DCN)环境下,P2P流媒体服务器集群部署引起的较高带宽占用问题,提出了一种基于云 ...
- p2p 文件服务器集群,基于云计算的P2P流媒体服务器集群部署算法.doc
基于云计算的P2P流媒体服务器集群部署算法.doc 基于云计算的P2P流媒体服务器集群部署算法 摘 要: 针对云计算数据中心网络(DCN)环境下,P2P流媒体服务器集群部署引起的较高带宽占用问题,提出 ...
- SRS流媒体服务器——单机环境搭建和源码目录介绍
SRS流媒体服务器--单机环境搭建和源码目录介绍 1. 目录 环境搭建 源码目录介绍 1. 环境搭建 srs官⽹:https://github.com/ossrs/srs 码云的源速度快:https: ...
- 【流媒体服务器Mediasoup】 NodeJs与C++信令通信详解及Linux下管道通信的详解(五)
目录 前言 匿名管道进程间通信 进程间管道 的创建与图解 MediaSoup中的管道创建 MediaSoup Channel的创建 NodeJs和 C++ 管道通信的过程 MediaSoup 消息确认 ...
- SRS 4.0流媒体服务器开发环境搭建:包括推流、服务器配置、拉流测试
SRS 4.0流媒体服务器入门系列 结合SRS官方Wiki以及本人对SRS的理解,推出<SRS 4.0流媒体服务器入门系列>,包括内容: SRS 4.0 开发环境搭建 SRS 4.0 配置 ...
- 【流媒体服务器Mediasoup】多人音视频架构、流媒体的比较、mediasoup介绍 (一)
目录 前言 多人音视频架构 流媒体服务器的比较 Mediasoup流媒体服务器架构及特点 前言 WebRtc有两种含义,其一是Google开源的流媒体实时通讯客户端,主要运用于 ...
- 开源流媒体服务器SRS环境搭建
一.环境搭建 1.1 C++环境 sudo apt-get update# 更新软件包 sudo apt-get install build-essential -y # 安装C++开发环境 sudo ...
- C/C++音视频高级开发-开源流媒体服务器SRS环境搭建
一.环境搭建 1.1 C++环境 sudo apt-get update# 更新软件包 sudo apt-get install build-essential -y # 安装C++开发环境 sudo ...
- 搞一个远程服务器,环境一步步的搭建之一 远程桌面登录
由于工作比较轻松,所以想搞点别的,因此最近在家搞了http://一个戴尔的1U服务器,1000块钱.可悲的是声音实在太大,不得不将其放入的到厕所中. 因此,除了上厕所 就必须远程操作了..好吧,上厕所 ...
最新文章
- 女程序员做编程也太难了吧! | 每日趣闻
- Android:ListView、ListActivity、 setListAdapter
- python快速编程入门教程-终于懂得python快速编程入门教程
- hdu 4362(单调队列优化dp)
- Java技术分享:什么是数据库连接池?
- C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标
- 2019ICPC(南昌) - The Nth Item(矩阵快速幂)
- arma3自定义服务器,Arma3 生存服架设教程,武装突袭3游戏服务器架设
- python map函数返回类型_使用map和lambda函数发送两个参数并返回两个值
- 微服务架构的优缺点_微服务架构DNS服务注册与发现实现原理
- linux 隐藏显示终端光标
- 当head遇上runat=server之后发生的纠结之事
- EFK+sentinl报警机制
- python标准库——time模块
- 深入浅出MFC-侯俊杰
- 2020牛客暑期多校训练营(第九场)K-The Flee Plan of Groundhog
- JavaSE入门:面向对象(三)
- 时间拆分法------高效率的使用完成开发工作之外的剩余时间掌握多门开发语言
- 新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)
- [SSD固态硬盘闪存 3] QLC 闪存给SSD主控带来了很大的难题?