mediasoup webrtc音视频会议搭建

环境ubuntu22.10
nvm --version
0.33.11
node -v
v16.20.2
npm -v
8.19.4
node-gyp -v
v10.0.1
python3 --version
Python 3.10.7
python with pip:
sudo apt install python3-pip
gcc&g++ version 12.2.0 (Ubuntu 12.2.0-3ubuntu1)
Make 4.2.1
npm install mediasoup@3
sudo apt-get install build-essential
npm config set registry "http://registry.npm.taobao.org/" # 修改npm为国内镜像
npm config get registry #配置后可通过下面方式来验证是否成功
开启魔法
配置时出现问题记录在文末附录

拉下源码:
https://github.com/versatica/mediasoup-demo
源码里有以下目录其中,app网页的界面终端,broadcasters是广播,也就是他支持我们用ffmpeg推流上去给所有的成员广播,server是流媒体服务器。
源码包含了,https服务器用于浏览器获取界面,信令服务器用于房间管理,和流媒体服务器用于数据转发。

aiortc app broadcasters CHANGELOG.md LICENSE README.md server

cd mediasoup-demo
git checkout v3
cd server
npm install
安装的是此目录下,package.json中的 "dependencies": {}中的依赖项,安装完毕后,会放在同目录下的node_modules中。

下面先配置下server
他有两个配置文件,server.js和config.js,config.example.js是一个例子,worker指进程数,默认开启的线程数 = pc内核数 x 每个内核线程数。

cp config.example.js config.js
webRtcTransportOptions :{// listenIps is not needed since webRtcServer is used.// However passing MEDIASOUP_USE_WEBRTC_SERVER=false will change it.listenIps :[{ip          : process.env.MEDIASOUP_LISTEN_IP || '127.0.0.1',#这里如果部署为服务器的话可以为0.0.0.0,表示支持接受任何网口的信息,笔者为本地测试。announcedIp : process.env.MEDIASOUP_ANNOUNCED_IP}],
//伪代码
npm start

其中是根据上两个配置文件启动。

cd app
npm install --legacy-peer-deps #跟官网提示的不同,我的node@16也需要安装对应旧版依赖。
npm install -g gulp-cli
npm start

火狐浏览器无法使用,需使用chrome浏览器,如下:
在这里插入图片描述用两个浏览器打开,左下角为本地视频,上方为远端。
可以开关音频/视频,查看音频视频编码方式,可以看到右侧还有音频的流信息可实时查看。

附录

问题1:

报错Error: ENOENT: no such file or directory, open '/home/test/code/mediasoup-demo/server/certs/privkey.pem'

解决:手动创建certs目录
生成证书命令如下:

openssl genrsa > privkey.pem
openssl req -new -x509 -key privkey.pem > fullchain.pem

问题2:

npm ERR! code EINVALIDTAGNAME
npm ERR! Invalid tag name ">=^16.0.0" of package "react@>=^16.0.0": Tags may not have any characters that encodeURIComponent encodes.

安装旧版对等依赖项

npm install --legacy-peer-deps

ffmpeg是音视频必备,但即使从业数年,它似乎依然有无穷的秘密,感兴趣添加笔者微信:YQW1163720468,加入webrtc微信群讨论。但记得备注:webrtc爱好者

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

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

相关文章

听GPT 讲Rust源代码--library/std(16)

题图来自 EVALUATION OF RUST USAGE IN SPACE APPLICATIONS BY DEVELOPING BSP AND RTOS TARGETING SAMV71[1] File: rust/library/std/src/sync/mpmc/select.rs 在Rust标准库中,rust/library/std/src/sync/mpmc/select.rs文件的作用是实现一个多生产者多消费者的选…

C++笔记之动态数组的申请和手动实现一个简单的vector

C笔记之动态数组的申请和手动实现一个简单的vector code review! 文章目录 C笔记之动态数组的申请和手动实现一个简单的vector1.C语言中动态数组的申请与使用1.动态数组的申请使用new和delete使用std::vector 1.std::vector的底层实现2.手动实现一个简单的vector:使用一个指向…

项目上线前发现严重Bug怎么办?

今天分享一个面试问题,现在有一个面试场景: 项目计划明天发布,但是在今天你作为测试人员发现了一个严重的bug,市场相关人员又在催发布的事情,这个时候你应该怎么办? 这是测试工程师不管是在面试&#xff0…

力扣 138. 随机链表的复制

题目描述: 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的…

前端框架Vue学习 ——(三)Vue生命周期

生命周期:指一个对象从创建到销毁的整个过程。 生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子) mounted:挂载完成,Vue 初始化成功,HTML 页面渲染成功…

京东商品详情API接口(PC端和APP端),京东详情页,商品属性接口,商品信息查询

京东开放平台提供了API接口来访问京东商品详情。通过这个接口,您可以获取到商品的详细信息,如商品名称、价格、库存量、描述等。 以下是使用京东商品详情API接口的一般步骤: 注册并获取API权限:您需要在京东开放平台上注册并获取…

ClickHouse 学习之从高级到监控以及备份(二)

第 一 部分 高级篇 第 1 章 Explain 查看执行计划 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能可以看到,并且只能真正执行 sql,在执行日志里面查看。在 20.6 版本引入了原生的执行计划的语法。在 20.6.3 版本成…

微信小程序之自定义组件开发

1、前言 从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程。所有自定义组件相关特性都需要基础库版本 1.6.3 或更高。开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦…

如何使用Node.js快速创建HTTP服务器并实现公网访问本地Server

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

【stack题解】最小栈 | 栈的压入、弹出序列

目录 最小栈 思路 ​编辑 实现 栈的压入、弹出序列 思路 实现 需要注意的 最小栈 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。…

Git 的基本操作 ——命令行

Git 的工作流程 详解如下: 本地仓库:是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库) 远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器…

freertos简单串口

先来完善一下FreeRTOSConfig.h这个配置文件 /*FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.All rights reservedVISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.This file is part of the FreeRTOS distribution.FreeRTOS is …