mediasoup-demo公网部署

服务器环境

  • CentOS7
  • Node.js v14.0.0
  • GCC v9.1.1
  • Python 2.7.5 (3也没问题,不过要注意编译脚本需要的python的命令,对python3做个软链接好了)

node.js安装

通过nvm安装的node.js开发运行环境 (这里获取最新的nvm install script)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash

完成后,退出再登陆,使环境变量生效。

 

如果安装出错,移除nvm也很方便,记一下
cd ~
rm -rf .nvm
同时删除~/.profile, ~/.bash_profile, ~/.zshrc, ~/.bashrc文件中关于nvm的配置
比如.bashrc里的export NVM_DIR 那段语句删除,其他类似

这里补充一下:
sudo su -
注意后面的-,su 后面不加用户是默认切到 root。su 是不改变当前环境变量,su - 是改变为切换目标用户的环境变量,也就是说su只能获得root的执行权限,不能获得root的环境变量,而su -是切换到root并获得root的环境变量及执行权限。

安装node.js v14.0.0(目前的最新版)

nvm ls-remote
nvm install 14.0.0
npm install -g node-gyp
npm install --global gulp-cli

node-gyp gulp-cli 有的时候不需要单独运行安装指令,你如果遇见相关的问题提示,就单独安装一下好了。

GCC新版安装

CentOS7默认的gcc版本是v4.8.5,mediasoup由于用了大量c++11特性,要求>= 4.9。编译安装太麻烦了,我直接运行下面的命令安装v9。

sudo yum install centos-release-scl
sudo yum install devtoolset-9-gcc*
scl enable devtoolset-9 bash
which gcc
gcc --version

注意,重新登录后运行下 scl enable devtoolset-9 bash 进行切换就好了,否则还是默认的版本。

自签名证书

v3新版本demo没有生成证书,需要自行生成证书并且放置相对应的目录。
如果你有自己的域名和证书是最好了,如果没有生成针对IP的自签名证书,也没有问题,测试足够了。只是使用过程中,建议使用FireFox或者Safari,他们打开自签名的https网站,可以让你选择忽略安全继续打开。而Chrome貌似只能通过命令行方式打开才能忽略安全问题,略麻烦。

生成步骤:

openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650
cat server.crt server.key > server.pem

就不解释命令行了,好多资料一查便知。
注意第二步,根据私钥生成证书申请文件csr时会让输入一些相关信息,直接回车忽略好了,只有

Common Name (eg, your name or your server's hostname) []:

这里的问题,要输入自己的域名或者 IP,必填项,不可跳过。
完成后,将server.key server.pem放在指定目录。

mediasoup-demo

下载demo源码,只需要下载demo,后续安装编译会自动下载到需要的代码,而且目前的默认分支其实已经是v3了。

git clone https://github.com/versatica/mediasoup-demo.git
cd mediasoup-demo
git checkout v3

代码有4个目录

aiortc // 不知道是什么鬼,还没看
app // 客户端代码
broadcasters // 用户推流模块,比如用FFmpeg推流到mediasoup。
server // 服务端代码,包括信令服务+媒体服务

编译安装server

cd server
npm install

会下载node需要的module,其中c++部分的mediasoup代码会下载到 mediasoup-demo/server/node_modules/mediasoup 目录下,这个目录其实就是 mediasoup ,这个项目worker目录下是c++,修改后直接make就可以。
接下来根据实际修改配置文件,从 config.example.js 复制一份修改就好。

cp config.example.js config.js
vi config.js

主要有几个地方

  • 自签名证书

 

https  :
        {
                // listenIp   : '0.0.0.0',
                listenIp   : 'xxx.xxx.xxx.xxx',
                // NOTE: Don't change listenPort (client app assumes 4443).
                listenPort : process.env.PROTOO_LISTEN_PORT || 4443,
                // NOTE: Set your own valid certificate files.
                tls        :
                {
                        // cert : process.env.HTTPS_CERT_FULLCHAIN || `${__dirname}/certs/fullchain.pem`,
                        cert : process.env.HTTPS_CERT_FULLCHAIN || `/home/meibao/server.pem`,
                        // key  : process.env.HTTPS_CERT_PRIVKEY || `${__dirname}/certs/privkey.pem`
                        key  : process.env.HTTPS_CERT_PRIVKEY || `/home/meibao/server.pem`
                }
        },

listenIp我用0.0.0.0,也没发现有问题。注意这里的4443端口,也许浏览器也要单独访问下https://xxx.xxx.xxx.xxx:4443/ 忽略安全问题放行,否则你的wss连接会被拒绝,比如Firefox。

  • webRtcTransportOptions 和 plainTransportOptions(xxx.xxx.xxx.xxx是你的公网IP)

 

listenIps :
        [
                {
                        // ip          : process.env.MEDIASOUP_LISTEN_IP || '1.2.3.4',
                        ip          : process.env.MEDIASOUP_LISTEN_IP || '0.0.0.0',
                        // announcedIp : process.env.MEDIASOUP_ANNOUNCED_IP
                        announcedIp : 'xxx.xxx.xxx.xxx'    
                 }
        ],

可能IP需要设置成外网IP,但是我用'0.0.0.0'也能使用。其他暂时默认吧。

启动 npm start

安装App

cd app
npm install

安装记录显示我还运行了下面两条,但是忘了是为了解决什么出错信息了,先记着。

npm cache clean --force
npm install -g npm

启动 npm start,这个App启动如果是在Desktop版Linux上,会自动运行起来默认浏览器,服务器上当然忽略。

打开本地机器的浏览器测试吧!

https://xxx.xxx.xxx.xxx:3000/
这里要补充下,如果是Safari,提示安全问题,忽视进入就可以了。
如果是Firefox,还需要单独 访问下 https://xxx.xxx.xxx.xxx:4443/ ,忽略安全问题,继续,否则wss连接会被拒绝。

https://xxx.xxx.xxx.xxx:3000/访问会随机分配一个roomid,另一个客户端就可以带上这个roomid加入,比如
https://xxx.xxx.xxx.xxx:3000/?roomId=0umla1f2&info=true&forceH264=true
参数info=true会打开统计栏,forceH264=true会强制使用H264。放个图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值