Ubuntu下布署mediasoup-demo

一、引言

mediasoup是一个强大的SFU架构的WebRTC流媒体服务器,凭借其多功能性、高性能和可扩展性,mediasoup成为构建多方视频会议和实时流媒体应用程序的完美选择。它具有联播、SVC、传输BWE和更多尖端功能。本文介绍了mediasoup-demo在Ubuntu下的布署。

我的开发环境:

ubuntu-20.04.6

Node.js v22.16.0

python 3.13.5

二、准备工作

mediasoup-demo是mediasoup v3的演示应用程序。mediasoup v3的github地址为:https://github.com/versatica/mediasoup

可以看到mediasoup需要版本不小于20的Node.js:

所以第一步需要安装版本不小于20的Node.js,具体可以参考:《Ubuntu下安装Node.js》。

三、下载mediasoup-demo源码

克隆mediasoup-demo源码:

bash 复制代码
git clone https://github.com/versatica/mediasoup-demo.git

国内访问github速度可能比较慢,导致克隆源码不成功:

这个时候可以参考《提高Linux下访问github的速度》解决。成功克隆mediasoup-demo源码时提示如下:

进入mediasoup-demo源码目录,切换为v3分支:

bash 复制代码
cd mediasoup-demo
git checkout v3

四、安装server的项目依赖包

进入mediasoup-demo的server目录,安装项目依赖包:

bash 复制代码
cd server
npm install

但是国内由于网络问题,很有可能安装失败,比如报错:

或者:

以及:

这个时候将npm设置为使用淘宝镜像:

bash 复制代码
npm config set registry https://registry.npm.taobao.org

然后:

bash 复制代码
npm install --verbose

使用npm install --verbose替代npm install,可以详细打印日志,各种安装信息,报错信息。

如果报错:"failed with CERT_HAS_EXPIRED":

清除npm缓存,临时忽略证书验证,然后继续安装项目依赖包:

bash 复制代码
npm cache clean --force
npm config set strict-ssl false
npm install --verbose

如果还是报错:"Cannot read properties of null":

改为使用yarn,安装yarn:

bash 复制代码
npm install -g yarn

设置为淘宝镜像源,通过yarn安装项目依赖包:

bash 复制代码
yarn config set registry https://registry.npmmirror.com/
yarn install

如果报错:error Error: certificate has expired:

临时禁用SSL验证:

bash 复制代码
yarn config set strict-ssl false
yarn install

如果报错:/usr/local/bin/python3: No module named pip:

从官方源下载get-pip.py脚本:

bash 复制代码
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

使用Python运行这个脚本以安装或升级pip:

bash 复制代码
/usr/local/bin/python3 get-pip.py

这里由于我安装的python3有问题,所以继续报错:No module named 'zlib':

所以我这里放弃安装和升级pip,而是按照《Ubuntu下安装python3》安装新版本的python3。这里要注意不要通过apt remove python3等命令把ubuntu原来自带的python3删除了,否则图形化界面会消失。如果不小心删除了,参考《Ubuntu卸载python3后图形化界面消失(3分钟finished)》解决。

重新安装python3后,再通过yarn install安装依赖,发现上述报错:"/usr/local/bin/python3: No module named pip"消失,但是出现一堆新的报错:"failed to download with error:could not get XXX is the internet available?.Trying after a delay...":

重复多次执行yarn install解决。如果控制台输出:"Done in XXXs.",说明下载安装所有项目依赖包成功了:

五、修改server配置文件

mediasoup-demo的server目录下,将config.example.js拷贝成config.js:

bash 复制代码
cp config.example.js  config.js

参考《使用Node.js搭建https服务器》,按照里面的方法生成公钥/私钥/证书。修改配置文件config.js,key指定私钥的位置,cert指定自签名证书的位置:

修改配置文件config.js中各个地方的ip为mediasoup所在Linux系统的ip:

六、安装app的项目依赖包

进入mediasoup-demo的app目录,安装项目依赖包:

bash 复制代码
cd app
yarn install

如果提示:error Error:https://github.com/versatica/mediasoup-client:ESOCKETTIMEDOUT:

修改app目录下的package.json,把

bash 复制代码
"mediasoup-client": "github:versatica/mediasoup-client#v3",

这一行修改成:

bash 复制代码
"mediasoup-client": "^v3",

把app目录下的node_modules目录删掉,再重新安装项目依赖包:

bash 复制代码
yarn install

如果提示:Done in XXXs,说明安装依赖包成功了:

七、测试运行

(一)启动服务器

mediasoup-demo的server目录下,启动服务器:

bash 复制代码
npm start

如果提示:"Error:Cannot find module ...index.js",参考《3.11.4 - Cannot find module mediasoup/node/lib/index.js #971》解决:

即修改server目录下的package.json,把

bash 复制代码
"mediasoup": "github:versatica/mediasoup#v3",

这一行修改成:

bash 复制代码
"mediasoup": "^v3",

然后把原来server目录下的node_modules目录删掉,再通过yarn install命令重新安装项目依赖包。之后再通过npm start命令启动服务器成功了:

(二)启动客户端

新开一个终端,mediasoup-demo的app目录下,启动客户端:

其它电脑打开两个浏览器,地址栏分别输入 https://192.168.0.104:5555/ ,其中192.168.0.104为mediasoup所在Linux系统的ip。如果电脑有摄像头,可以看到左下角有视频画面了:

相关推荐
BAOYUCompany5 小时前
暴雨服务器更懂人工智能+
运维·服务器·人工智能
一只小bit5 小时前
Linux网络:阿里云轻量级应用服务器配置防火墙模板开放端口
linux·网络·阿里云
嘉琪0016 小时前
实现视频实时马赛克
linux·前端·javascript
SpiderPex6 小时前
GitHub下载项目完整配置SSH步骤详解
运维·ssh·github
帽儿山的枪手6 小时前
HVV期间,如何使用SSH隧道绕过内外网隔离限制?
linux·网络协议·安全
睡觉的时候不会困6 小时前
基于三台主机搭建 Web 服务环境:Nginx、NFS 与 DNS 配置全流程
运维·nginx
@半良人7 小时前
Jenkins流水线部署+webhook2.0
运维·jenkins
邹诗钰-电子信息工程7 小时前
嵌入式基础知识复习(C语言)
linux·c语言·vim
瀚高PG实验室8 小时前
CentOS 8 安装HGDB V4.5 psql命令执行报错
linux·运维·centos·瀚高数据库
小醉你真好8 小时前
6、CentOS 9 安装 Docker
linux·docker·centos