mediasoup webrtc音视频会议搭建

cpp 复制代码
环境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

cpp 复制代码
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 每个内核线程数。

cpp 复制代码
cp config.example.js config.js
cpp 复制代码
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
				}
			],
//伪代码
cpp 复制代码
npm start

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

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

火狐浏览器无法使用,需使用chrome浏览器,如下:
用两个浏览器打开,左下角为本地视频,上方为远端。

可以开关音频/视频,查看音频视频编码方式,可以看到右侧还有音频的流信息可实时查看。

附录

问题1:

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

解决:手动创建certs目录

生成证书命令如下:

cpp 复制代码
openssl genrsa > privkey.pem
openssl req -new -x509 -key privkey.pem > fullchain.pem

问题2:

cpp 复制代码
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.

安装旧版对等依赖项

cpp 复制代码
npm install --legacy-peer-deps

相关推荐
Black蜡笔小新36 分钟前
WebRTC嵌入式视频通话SDK:EasyRTC从免插件到轻量级带来的音视频通话技术
音视频·webrtc·sdk·rtc·webp2p
EasyNVR38 分钟前
EasyRTC:开启智能硬件与全平台互动新时代
网络·音视频·webrtc·p2p·智能硬件·视频监控
EasyGBS39 分钟前
从开发到部署:EasyRTC嵌入式视频通话SDK如何简化实时音视频通信的集成与应用
音视频·webrtc·实时音视频·视频监控
AI服务老曹9 小时前
通过感知、分析、预测、控制,最大限度发挥效率的智慧油站开源了
人工智能·开源·自动化·音视频
St-sun10 小时前
短视频导演编导制片人编剧教程策划影视媒体电商摄影后期 知识总结
音视频·媒体
SKYDROID云卓小助手11 小时前
无人设备遥控器之视频回传篇
网络·人工智能·嵌入式硬件·目标检测·计算机视觉·音视频
EasyNVR13 小时前
智能硬件新时代,EasyRTC开启物联音视频新纪元
运维·服务器·音视频·webrtc·p2p·智能硬件·视频监控
X@AKS13 小时前
http 响应码影响 video 标签播放视频
网络协议·http·音视频
深耕AI15 小时前
使用DeepSeek自动获取视频双语字幕srt文件【工具说明】
音视频·deepseek
科技小E15 小时前
EasyRTC:智能硬件适配,实现多端音视频互动新突破
网络协议·安全·小程序·音视频·webrtc·p2p·视频监控