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

相关推荐
铁手飞鹰3 小时前
从零复现论文:深度学习域适应1
linux·pytorch·python·深度学习·ubuntu·ai·迁移学习
瑶总迷弟6 小时前
在 CentOS 7.6 上安装 Oracle WebLogic Server 12c 详细教程
linux·oracle·centos
156082072196 小时前
在飞腾D2000/8平台下ubuntu内核添加WX1860和WX1820的驱动
linux·ubuntu
心灵宝贝6 小时前
如何在 CentOS 7 上安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 文件
linux·运维·centos
云心雨禅6 小时前
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
linux·服务器·数据库·缓存·memcached
鹿鸣天涯7 小时前
Kali Linux 2025.3 正式发布:更贴近前沿的安全平台
linux·运维·安全
奶茶树8 小时前
【Linux】基础指令
linux·服务器
半路_出家ren8 小时前
在Linux中安装应用
linux·apt·yum·rpm
CheungChunChiu8 小时前
在嵌入式 Linux 上配置 PulseAudio 默认输出设备的完整指南
linux·运维·ubuntu·audio·pulseaudio
^Lim8 小时前
ubuntu编译freerype报错找不到libfreetype.la
linux·chrome·ubuntu