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。如果电脑有摄像头,可以看到左下角有视频画面了:

相关推荐
Xの哲學10 小时前
Linux grep命令:文本搜索的艺术与科学
linux·服务器·算法·架构·边缘计算
夜月yeyue10 小时前
Linux 调度类(sched_class)
linux·运维·c语言·单片机·性能优化
林义满10 小时前
运维转型让产线 “少掉链”:上海义满汽车零部件借智能运维降本增效,年减损失超 200 万
运维·汽车
VekiSon11 小时前
Linux系统编程——IPC进程间通信:信号通信与共享内存
linux·运维·服务器
南山nash11 小时前
CentOs7 安装 Docker 详细步骤
linux·运维·docker·容器
徐先生 @_@|||11 小时前
Conda最基础使用命令
linux·windows·conda
ZHHHHHJ6611 小时前
LL层-PAST
运维·服务器·网络
wdfk_prog11 小时前
[Linux]学习笔记系列 -- [fs][drop_caches]
linux·笔记·学习
咩咩大主教12 小时前
VSCode远程连接Linux部署的Docker
linux·vscode·docker
名誉寒冰12 小时前
GDB 调试与 Core Dump(段错误)排查指南(Linux/C/C++)
linux·c语言·c++