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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88562.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVS更新日志】物联网、智能排产APS、企业计划、规则引擎6.25更新说明!

项目介绍 JVS是企业级数字化服务构建的基础脚手架,主要解决企业信息化项目交付难、实施效率低、开发成本高的问题,采用微服务配置化的方式,提供了低代码数据分析物联网的核心能力产品,并构建了协同办公、企业常用的管理工具等&…

解决git pull,push 每次操作输入账号密码问题

服务器每次git pull 的时候都需要输入账号密码,一劳永逸解决它。 解决方案: 找到项目下 .git /config 文件,然后打开,编辑 [rootiZbp11b24d3d7nc8uvjx9mZ .git]# ls branches config description FETCH_HEAD HEAD hooks i…

Netty:深入解析AbstractByteBufAllocator架构设计

AbstractByteBufAllocator 类结构分析 类结构概览 public abstract class AbstractByteBufAllocator implements ByteBufAllocator {// 静态常量static final int DEFAULT_INITIAL_CAPACITY 256;static final int DEFAULT_MAX_CAPACITY Integer.MAX_VALUE;// ...其他常量//…

Java 日志管理与分析

为什么需要日志 ■ 发⽣了什么(What)。 ■ 何时发⽣的(When)。 ■ 发⽣于何处(Where)。 ■ 谁参与其中(Who)。 ■ 参与者来源(第⼆个Where,注意与上⾯的Wher…

bmc TrueSight 监控mysql配置

bmc TrueSight 监控mysql配置 1.将pat加入mysql组 useradd pat;echo patpassword|passwd --stdin pat usermod -aG mysql pat2.设置环境变量 查看文件是否存在[rootu1acmsdp01 ~]# find / -name mysql.sock /var/lib/mysql/mysql.sock ^C [rootu1acmsdp01 ~]# cd /var/lib/my…

WinAppDriver 自动化测试:C#篇

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】

zlmediakit webrtc搭建使用

webrtc 编译与使用 | ZLMediaKit 官方文档参考 编译机器: centos 7.6 gcc 版本 10.1.0 (GCC) cmake version 3.23.0web播放rtsp流视频,使用webrtc毫秒级延迟_webrtc播放rtsp流-CSDN博客 依赖准备 openssl 安装 (openssl 版本要求 1.1 以上) 我的…

Linux下使用docker nginx部署vue前端项目工程

1、使用Docker和Nginx部署Vue项目的步骤 1、准备好VUE项目,已打包编译 2、docker环境已完成安装 3、本地环境上创建nginx目录,下包括conf,html,logs目录。用于容器映射(其实是方便修改文件,因为在容器中…

从实验室到生产线:机器学习模型部署的七大陷阱及PyTorch Serving避坑指南

1 实验室与生产环境的鸿沟:为什么99%的模型部署会失败? (1)部署失败的真实数据统计 根据2023年MLOps行业报告: 78%的组织表示模型部署时间超过预期65%的模型部署后性能下降超过20%仅12%的组织能在一周内完成模型更新…

Module not found: Error: Can‘t resolve ‘core-js/modules/es.array.concat.js‘

遇到错误“Module not found: Error: Can’t resolve ‘core-js/modules/es.array.concat.js’”通常是因为你的项目中使用了core-js库,但是你的项目配置或者core-js的版本不支持你正在尝试使用的功能。下面是一些解决这个问题的步骤: 确认core-js版本 …

Windows10中设置多个虚拟IP方法

一.netsh 命令添加(最直接、最简单) 1.在 Windows 10 中,使用 netsh 命令为现有物理网卡或虚拟网卡添加额外的 IP 地址(IP Alias)是最直接的方法。这些 IP 地址与主 IP 在同一网段,共享同一张网卡的 MAC 地…

回答 如何通过inode client的SSLVPN登录之后,访问需要通过域名才能打开的服务

需要dns代理 1 配置需求或说明 1.1 适用的产品系列 本案例适用于软件平台为Comware V7系列防火墙:本案例适用于如F5080、F5060、F5030、F5000-M等F5000、F5000-X系列的防火墙。 注:本案例是在F100-C-G2的Version 7.1.064, Release 9510P08版本上进行…

Jenkins通过Pipeline流水线方式编译前端项目

本文记录了本人在前端项目持续集成与自动化部署方面的实践经验,使用 Jenkins 官方 jenkins:lts 镜像为基础,构建支持 Node.js 构建和压缩能力的运行环境,并通过声明式 Pipeline 实现一套多环境(SIT/PROD)可选的一键部署…

Dockerfile 镜像构建

目录 简介 一、Docker镜像概念与结构 1.1 镜像的分层存储机制 1.2 镜像分层的关键特性 二、Dockerfile语法 2.1 基础构建指令 2.2 环境配置指令 2.3 文件操作指令 2.4 运行时指令 2.5 网络与数据管理 三、实战案例 3.1 构建Nginx Web服务器 3.2 构建Tomcat应用服务…

Docker Desktop 4.42集成的MCP工具包

一、介绍 Docker Desktop 4.42 集成了 MCP(Model‑Client‑Plugin)Toolkit,无需额外安装扩展即可直接使用。 MCP Toolkit 集成细节 内置于 Docker Desktop:你可以直接打开应用,在设置中启用 MCP 服务器,比…

CUDA NCU Occupancy学习笔记

占用率是每个多处理器的活跃 Warp 数量与最大可能活跃 Warp 数量的比率。另一种查看占用率的方式是,硬件处理 Warp 的能力中,实际使用 Warp 的百分比。较高的占用率并不一定能带来更高的性能,然而,较低的占用率总是会降低隐藏延迟…

配置自己的NTP 服务器做时间同步

✅ 推荐方案:使用 chrony 搭建 NTP 服务器(适用于 CentOS 7/8/9) chrony 是 CentOS 推荐的 NTP 实现,精度高、资源占用低、同步快,默认在 CentOS 8 中取代了 ntpd。 🔧 一、安装 chrony sudo yum install…

【运维系列】Plane 开源项目安装和配置指南

Plane是一个用现代前端技术栈(Next.js TailwindCSS)开发的开源项目管理平台,核心理念是 Bring Structure to Chaos" —— 给混乱的项目管理带来结构感。 1.项目地址 gitHub 2.项目使用的关键技术和框架 Plane 项目使用了多种关键技术…

3.读取图片和图片采集

目录 一、Halcon 1. 图片的基本概念 2. 获取图片方式1-读取本地图片 3. 获取图片方式2-在线采集 4. C#获取图片数据架构 二、VS联合编程 1. 读取本地图片 2.在线采集 一、Halcon 1. 图片的基本概念 1. 图片2. 像素 3. 分辨率4. 位深度5. 不同后缀1. png jpg 2. bmp 6…

前端流式接口/Socket.IO/WebSocket的区别和选用

WebSocket: 定义:WebSocket是一种在单个TCP连接上进行全双工通信的协议,实现了客户端与服务器之间的实时双向通信。特点:基于HTTP协议,但通过握手升级为WebSocket协议,支持持久连接,减少延迟和带…