当前位置: 首页 > news >正文

20. mediasoup服务器的布署与使用

Mediasoup Demo部署

架构服务分析

在这里插入图片描述
服务端提供3个服务:
1.www服务,浏览器通过访问服务器目录获取客户端代码,通过V8引擎,启动底层WebRTC
2.nodejs提供websocket服务和http服务,用于信令交互
3.Mediasoup C++提供的流媒体服务,用于音视频的分享与抓取

环境配置

在这里插入图片描述

  1. Nodejs安装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    我们这里选择二进制安装
apt install nodejs
apt install npm

然后可以使用node -vnpm -v查看版本

Mediasoup Demo的布署

下载源码

安装git

//安装
sudo apt-get install git
//验证
git --version
git clone
https://github.com/versatica/mediasoup-demo.gitcd mediasoup-demo
git checkout v3

在这里插入图片描述

  • app 是客户端代码
  • broadcasters 是推流的模块
  • server是信令服务和媒体服务,是通过管道进行通讯的。
    在这里插入图片描述
    他的C++部分是在 /server中的package.json里面这个,这些都是js中的依赖,配置的时候会自动安装。

配置服务端

这里需要安装npm和node,建议安装下面指定版本的
node: v14.21.1
npm:6.14.17
nodejs:
在这里插入图片描述

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bashsource ~/.bashrcnvm install 14.21.1node -v

npm:

sudo apt-get install npm#查看npm版本
node -v#若版本不符合要求,可使用如下命令安装指定版本
npm install -g npm@6.14.17

然后进入server文件夹下:

cd /server
npm install 

之后:

cp config.example.js config.js
vi conig.js

在这里插入图片描述
之后npm start

npm start

之后进入app目录

cd app/
npm install -g gulp-cli
gulp live

之后就可以了。我这里没有成功,视频里面成功了。
在这里插入图片描述

docker部署

docker安装

  1. 下载mediasoup-demo镜像
    下载mediasoup-demo镜像:
sudo docker pull lc0060305/mediasoup-demo:v5
  1. 下载run.sh脚本
    下载run.sh脚本
wget https://cdn.avdancedu.com/image/article/docker/v1/run.sh

但是有个地方可能会报错:可以将这一行删去
在这里插入图片描述
3. 启动docker
需要给run.sh增加执行权限后启动docker:

chmod +x run.sh
sudo MEDIASOUP_ANNOUNCED_IP=公网IP ./run.sh
  1. 运行mediasoup-demo项目
    启动docker成功后,需要启动mediasoup服务。
    查询mediasoup服务docker ID:
sudo docker ps

获取dockerID后进入到mediasoup的docker中:

sudo docker attach containerID

在/service目录下执行startservice.sh脚本:
服务启动好后,输入ctrl+p, ctrl+q退出docker

./startservice.sh

使用游览器进行视频会议,测试链接:https://公网IP:3000/?roomId=imohqpdp,这样,两个浏览器都访问同一会议室。

Nodejs服务端开发

在这里插入图片描述

vi server.js
'use strict'const http=require('http');const express=require('express');const app=express();const http_server=http.createServer(app);
http_server.listen(9999,'0.0.0.0');
npm install express

在这里插入图片描述

  1. node.app.js
    这个控制台关闭就停止了
  2. nohup node app.js &
    这个如果不想运行了就得用kill杀死这个进程
  3. forver start app.js
    这个得安装forver,停止的时候就是forver stop app.js

之后我们就先启动一下:
在这里插入图片描述
在这里插入图片描述

HTTPS基本知识

「实战」WWW服务

为什么要使用HTTPS服务

  • 个人隐私及安全原因
  • https是未来的趋势
  • HTTPS = HTTP + TLS/SSL

在这里插入图片描述
在这里插入图片描述

通过WWW服务发布mediasoup客户端代码

在这里插入图片描述

vi server_myhttps.js
'use strict'const https = require('https');const express = require('express');const serve_index = require('serve-index');
const fs = require('fs');const options = {key : fs.readFileSync('./cert/'),cert : fs.readFilesync('./cert/')
}
const app = express();
app.use(serve_index('./public'));
const https_server = https.createServer(options,app);

相关文章:

20. mediasoup服务器的布署与使用

Mediasoup Demo部署 架构服务分析 服务端提供3个服务: 1.www服务,浏览器通过访问服务器目录获取客户端代码,通过V8引擎,启动底层WebRTC 2.nodejs提供websocket服务和http服务,用于信令交互 3.Mediasoup C提供的流媒体…...

【leetcode--同构字符串】

要求:判断两个字符串的形式是不是一致,即是不是AABC或者ABBBCC这种。 trick:使用set()结合zip()。 set()用法:用于创建一个不包含重复元素的集合 zip&#…...

shell expr功能详解

expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等。 1.字符串表达式 ------------------------- expr支持模式匹配和字符串操作。字符串表达式的优先…...

java继承Thead类和实现Runnable接口创建线程的区别

一、继承Thread类创建多线程 public class Demo{public static void main(String[] args) {MyThread thread new MyThread();thread.start();}} class MyThread extends Thread{Overridepublic void run() {//子线程执行的操作} }注意:开启子线程要调用start()方法…...

interface Ref<T = any> 这是什么写法?为什么写接口还需要加上<T = any>

问: export interface Ref<T any> { value: T [RefSymbol]: true } 这里既然是interface接口,为什么还有<T any>这是什么意思? 回答: <T any> 中的 <T> 表示这是一个泛型参数&#xff0c;它可以在接口中作为类型的占位符&#xff0c;在实际…...

深入探索 MongoDB GridFS:高效大文件存储与管理的全面指南

GridFS 是 MongoDB 的一个规范&#xff0c;用于存储和检索超过 BSON 文档大小限制&#xff08;16MB&#xff09;的文件。与传统的文件系统不同&#xff0c;GridFS 可以将一个大文件分割成多个小块&#xff0c;并存储在 MongoDB 的两个集合中&#xff1a;fs.files 和 fs.chunks。…...

基于CentOS Stream 9平台 安装/卸载 Redis7.0.15

已更正systemctl管理Redis服务问题 1. 官方下载地址 https://redis.io/downloads/#redis-downloads 1.1 下载或上传到/opt/coisini目录下&#xff1a; mkdir /opt/coisini cd /opt/coisini wget https://download.redis.io/releases/redis-7.0.15.tar.gz2. 解压 tar -zxvf re…...

激励-保健理论和公平理论

激励-保健理论 herzberg的激励-保健理论中&#xff0c;保健因素是context of a job&#xff0c;激励因素是content of a job。 context of a job是受组织控制的因素&#xff0c;比如工作条件&#xff0c;基本工资&#xff0c;公司政策等&#xff0c;个人无法支配。content of…...

深入探索 Spring Boot 自定义启动画面

目录 引言什么是 Spring Boot 启动画面Spring Boot 默认启动画面为什么要自定义启动画面如何自定义 Spring Boot 启动画面 修改配置文件使用 Banner 接口通过图片实现启动画面ASCII 艺术画的应用 进阶&#xff1a;基于环境变量的动态 Banner多模块项目中的启动画面Spring Boot…...

Redis实战—Redis分布式锁

本博客为个人学习笔记&#xff0c;学习网站与详细见&#xff1a;黑马程序员Redis入门到实战 P56 - P63 目录 分布式锁介绍 基于Redis的分布式锁 Redis锁代码实现 修改业务代码 分布式锁误删问题 分布式锁原子性问题 Lua脚本 编写脚本 代码优化 总结 分布式锁介绍…...

联想Y7000P 2023款拆机教程及升级内存教程

0.电脑参数介绍 联想Y7000P 2023电脑&#xff0c;笔者电脑CPU为i7-13700H&#xff0c;14核20线程&#xff1b;标配内存为三星的DDR5-5600MHz-8GB*2&#xff0c;由于电脑CPU限制&#xff0c;实际内存跑的频率为5200MHz; 2个内存插槽&#xff0c;2个固态硬盘插槽。每个内存插槽最…...

开发常用依赖

目录 代理对象 Swagger Web 单元测试 MybatisPlus Lombok Mysql SpringBoot Jdk SpringCloud 数据库驱动包 hutool工具 配置仓库 通用库 maven插件 nacos注册中心 OpenFeign Spring AMQP JSON转换器 Redis 邮箱验证 Redisson分布式锁 客户端 代理对象 &l…...

【区分vue2和vue3下的element UI Empty 空状态组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Element UI&#xff08;为 Vue 2 设计&#xff09;和 Element Plus&#xff08;为 Vue 3 设计&#xff09;中&#xff0c;Empty&#xff08;空状态&#xff09;组件通常用于在数据为空或没有内容时向用户展示一种占位提示。然而&#xff0c;需要注意的是&#xff0c;Element…...

【AI作曲】毁掉音乐?早该来了!一个网易音乐人对于 AI 大模型音乐创作的思辨

引言&#xff1a;AI在创造还是毁掉音乐&#xff1f; 正如当初 midjourney 和 StableDiffusion 在绘画圈掀起的风波一样&#xff0c;suno 和 各大音乐大模型的来临&#xff0c;其实早该来了。 AI 在毁掉绘画&#xff1f;或者毁掉音乐&#xff1f; 没错&#xff0c;但也错了。…...

RabbitMQ实践——最大长度队列

大纲 抛弃消息创建最大长度队列绑定实验 转存死信创建死信队列创建可重写Routing key的最大长度队列创建绑定关系实验 在一些业务场景中&#xff0c;我们只需要保存最近的若干条消息&#xff0c;这个时候我们就可以使用“最大长度队列”来满足这个需求。该队列在收到消息后&…...

【pytorch02】手写数字问题引入

1.数据集 现实生活中遇到的问题 车牌识别身份证号码识别快递单的识别 都会涉及到数字识别 MNIST&#xff08;收集了很多人手写的0到9数字的图片&#xff09; 每个数字拥有7000个图像train/test splitting:60k vs 10k 图片大小28 28 数据集划分成训练集和测试集合的意义…...

【查看显卡信息】——Ubuntu和windows

1、VMware虚拟机 VMware虚拟机上不能使用CUDA/CUDNN&#xff0c;也安装不了显卡驱动 查看显卡信息&#xff1a; lspci | grep -i vga 不会显示显卡信息&#xff0c;只会输出VMware SVGA II Adapter&#xff0c;表示这是一个虚拟机&#xff0c;无法安装和使用显卡驱动 使用上…...

在 RK3568 上构建 Android 11 模块:深入解析 m、mm、mmm 编译命令

目录 Android 编译系统概述编译命令简介 环境准备使用 m、mm、mmm 编译模块编译整个源码树编译单个模块编译指定目录下的模块 高级应用并行编译清理编译结果编译特定配置 在 Android 开发中&#xff0c;特别是在 RK3568 这样的高性能平台上&#xff0c;有效地编译和管理模块是确…...

实战|YOLOv10 自定义目标检测

引言 YOLOv10[1] 概述和使用自定义数据训练模型 概述 由清华大学的研究团队基于 Ultralytics Python 包研发的 YOLOv10&#xff0c;通过优化模型结构并去除非极大值抑制&#xff08;NMS&#xff09;环节&#xff0c;提出了一种创新的实时目标检测技术。这些改进不仅实现了行业领…...

TTS前端原理学习 chatgpt生成答案

第一篇文章学习 小绿鲸阅读器 通篇使用chatgpt生成答案 文章&#xff1a; https://arxiv.org/pdf/2012.15404 1. 文章概述 本文提出了一种基于Distilled BERT模型的统一普通话文本到语音前端模块。该模型通过预训练的中文BERT作为文本编码器&#xff0c;并采用多任务学习技术…...

手把手教你为YOLOv8 TensorRT推理写一个C++接口:从DLL封装到QT界面调用

深度解析&#xff1a;构建高效YOLOv8 TensorRT推理C接口的工程实践 在工业视觉和边缘计算领域&#xff0c;将深度学习模型封装为可复用的软件组件已成为提升开发效率的关键。本文将以YOLOv8模型为例&#xff0c;深入探讨如何设计一个专业级的TensorRT推理C接口&#xff0c;重点…...

MindStudio组合技,让Host Bound问题看得见、调得准

背景介绍&#xff1a;Host Bound问题在NPU训练和推理场景中&#xff0c;Host侧&#xff08;CPU&#xff09;的任务下发&#xff08;如算子调度、内存分配&#xff09;与Device侧&#xff08;NPU&#xff09;的任务执行是异步进行的。当Host侧任务下发耗时超过Device侧任务执行耗…...

Keil MDK中HEX文件未生成的8.3路径问题解析

1. 问题现象与背景解析 在嵌入式开发领域&#xff0c;Keil MDK&#xff08;Microcontroller Development Kit&#xff09;是广泛使用的集成开发环境&#xff0c;尤其针对C166系列微控制器。最近遇到一个典型问题&#xff1a;开发者在Vision1环境中配置了L166链接器和OH166 HEX转…...

数字IC设计八股:面试题合集

锁存器的结构-DFF的结构-建立保持时间-亚稳态-STA-CDC。 亚稳态的成因,危害,解决方法。 建立保持时间的计算,违例的Fix,流片前和流片后。还有复位的Recovery Removal time。 CDC的解决方法。 低功耗常见设计方法,动态-静态功耗计算和分析。例如两种情况对比功耗大小。…...

从零开始:手把手教你用Python解析MMD的PMX模型文件(附完整代码)

从零开始&#xff1a;手把手教你用Python解析MMD的PMX模型文件&#xff08;附完整代码&#xff09; 在3D图形与游戏开发领域&#xff0c;MMD&#xff08;MikuMikuDance&#xff09;的PMX模型文件因其丰富的表情骨骼系统和精致的二次元风格而广受欢迎。本文将带领你从二进制层面…...

告别Keil幻想!为什么MSP430F5529开发我最终选择了CCS(附完整driverlib库配置流程)

从Keil到CCS&#xff1a;MSP430F5529开发工具链的理性抉择与技术实践 第一次接触MSP430F5529时&#xff0c;我下意识地打开了熟悉的Keil MDK。毕竟在STM32的世界里&#xff0c;Keil几乎是我的第二开发环境。但当我尝试导入TI官方例程时&#xff0c;一连串的报错让我意识到——这…...

【免费下载】 JIRA用户操作指南(详细版)

JIRA用户操作指南&#xff08;详细版&#xff09; 【下载地址】JIRA用户操作指南详细版 JIRA用户操作指南&#xff08;详细版&#xff09;欢迎使用JIRA用户操作指南&#xff0c;本指南旨在帮助您全面理解并高效地使用JIRA这一强大的问题跟踪与项目管理工具 项目地址: https:/…...

RK3588平台LVGL 8.2移植实战:从FrameBuffer到DRM驱动优化

1. 项目概述与核心价值最近在RK3588平台上折腾嵌入式GUI&#xff0c;发现LVGL&#xff08;Light and Graphics Library&#xff09;这个开源图形库确实是个宝藏。它轻量、跨平台&#xff0c;而且从8.0版本开始&#xff0c;图形渲染效率和功能都有了质的飞跃。我手头正好有一块E…...

硬件工程师避坑指南:从原理到实战,搞定ESD防护设计与IEC 61000-4-2测试

硬件工程师避坑指南&#xff1a;从原理到实战&#xff0c;搞定ESD防护设计与IEC 61000-4-2测试 在北方干燥的冬季&#xff0c;脱下毛衣时噼啪作响的静电火花或许只是生活中的小插曲&#xff0c;但对于价值数百万的医疗设备或自动驾驶系统而言&#xff0c;同样的静电放电&#x…...

猫抓:创新视角下的浏览器资源嗅探技术完全指南

猫抓&#xff1a;创新视角下的浏览器资源嗅探技术完全指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓&#xff08;cat-catch&#xff09;…...