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

相关推荐
抠脚学代码18 小时前
Ubuntu Qt x64平台搭建 arm64 编译套件
数据库·qt·ubuntu
Miracle&18 小时前
2.TCP深度解析:握手、挥手、状态机、流量与拥塞控制
linux·网络·tcp/ip
专注API从业者18 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
Ribou19 小时前
Ubuntu 24.04.2安装k8s 1.33.4 配置cilium
linux·ubuntu·kubernetes
tan180°20 小时前
Boost搜索引擎 网络库与前端(4)
linux·网络·c++·搜索引擎
Mr. Cao code20 小时前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
抓饼先生21 小时前
Linux control group笔记
linux·笔记·bash
挺6的还21 小时前
25.线程概念和控制(二)
linux
wanhengidc21 小时前
云手机运行流畅,秒开不卡顿
运维·网络·科技·游戏·智能手机
您的通讯录好友21 小时前
conda环境导出
linux·windows·conda