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源码:
git clone https://github.com/versatica/mediasoup-demo.git
国内访问github速度可能比较慢,导致克隆源码不成功:
这个时候可以参考《提高Linux下访问github的速度》解决。成功克隆mediasoup-demo源码时提示如下:
进入mediasoup-demo源码目录,切换为v3分支:
cd mediasoup-demo
git checkout v3
四、安装server的项目依赖包
进入mediasoup-demo的server目录,安装项目依赖包:
cd server
npm install
但是国内由于网络问题,很有可能安装失败,比如报错:
或者:
以及:
这个时候将npm设置为使用淘宝镜像:
npm config set registry https://registry.npm.taobao.org
然后:
npm install --verbose
使用npm install --verbose替代npm install,可以详细打印日志,各种安装信息,报错信息。
如果报错:“failed with CERT_HAS_EXPIRED”:
清除npm缓存,临时忽略证书验证,然后继续安装项目依赖包:
npm cache clean --force
npm config set strict-ssl false
npm install --verbose
如果还是报错:“Cannot read properties of null”:
改为使用yarn,安装yarn:
npm install -g yarn
设置为淘宝镜像源,通过yarn安装项目依赖包:
yarn config set registry https://registry.npmmirror.com/
yarn install
如果报错:error Error: certificate has expired:
临时禁用SSL验证:
yarn config set strict-ssl false
yarn install
如果报错:/usr/local/bin/python3: No module named pip:
从官方源下载get-pip.py脚本:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
使用Python运行这个脚本以安装或升级pip:
/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:
cp config.example.js config.js
参考《使用Node.js搭建https服务器》,按照里面的方法生成公钥/私钥/证书。修改配置文件config.js,key指定私钥的位置,cert指定自签名证书的位置:
修改配置文件config.js中各个地方的ip为mediasoup所在Linux系统的ip:
六、安装app的项目依赖包
进入mediasoup-demo的app目录,安装项目依赖包:
cd app
yarn install
如果提示:error Error:https://github.com/versatica/mediasoup-client:ESOCKETTIMEDOUT:
修改app目录下的package.json,把
"mediasoup-client": "github:versatica/mediasoup-client#v3",
这一行修改成:
"mediasoup-client": "^v3",
把app目录下的node_modules目录删掉,再重新安装项目依赖包:
yarn install
如果提示:Done in XXXs,说明安装依赖包成功了:
七、测试运行
(一)启动服务器
mediasoup-demo的server目录下,启动服务器:
npm start
如果提示:“Error:Cannot find module ...index.js”,参考《3.11.4 - Cannot find module mediasoup/node/lib/index.js #971》解决:
即修改server目录下的package.json,把
"mediasoup": "github:versatica/mediasoup#v3",
这一行修改成:
"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。如果电脑有摄像头,可以看到左下角有视频画面了: