mediasoup源码(一)编译及部署

2024-05-13 15:20
文章标签 编译 源码 部署 mediasoup

本文主要是介绍mediasoup源码(一)编译及部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本介绍

mediasoup是一个sfu架构的流媒体服务器,读者可以根据需要选择不同的编译方式。如果只需要学习c++流媒体传输部分,则选择mediasoup,如果需要学习mediasoup整个demo,并做演示,则可以选择mediasoup-demo,如果只需要学习mediasoup客户端部分,则选择mediasoup-client

前置要求

1.选择linux环境,centos或者ubuntu
2.nodejs版本大于18.0
安装 gulp:
sudo npm install -g gulp-cli
安装 build-essential:
sudo apt install build-essential

编译

①仅编译mediasoup

//下载mediasoup源码
git clone https://github.com/versatica/mediasoup.git
//跳转到编译路径
cd mediasoup/worker
//编译
执行make命令

编译后生成的可执行文件路径为

e/mediasoup/worker/out/Release/mediasoup-worker

②编译mediasoup-demo

1.下载源码
git clone https://github.com/versatica/mediasoup-demo.git
2.下载相关依赖
cd mediasoup-demo/server
执行npm install -g gulp-cli
cd mediasoup-demp/client
执行npm install -g gulp-cli

服务依赖项如下

{"name": "mediasoup-demo-server","version": "3.0.0","private": true,"description": "mediasoup demo server","author": "Iñaki Baz Castillo <ibc@aliax.net>","license": "All Rights Reserved","main": "lib/index.js","scripts": {"generate-dev-certificate": "mkcert -install --key-file certs/server.key --cert-file certs/server.crt mediasoup-demo.dev \"*.mediasoup-demo.dev\" localhost 127.0.0.1 ::1","lint": "eslint -c .eslintrc.js server.js lib connect.js","start": "DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'} node server.js","connect": "node connect.js"},"dependencies": {"@sitespeed.io/throttle": "^3.1.1","awaitqueue": "^2.3.3","body-parser": "^1.19.0","colors": "^1.4.0","debug": "^4.3.1","express": "^4.17.1","mediasoup": "github:versatica/mediasoup#v3","pidusage": "^2.0.21","protoo-server": "^4.0.5","rtp.js": "^0.11.4"},"devDependencies": {"eslint": "^6.8.0","gulp": "^4.0.2","gulp-eslint": "^6.0.0","gulp-plumber": "^1.2.1"}
}

客户端依赖如下

{"name": "mediasoup-demo-app","version": "3.0.0","private": true,"description": "mediasoup demo app","author": "Iñaki Baz Castillo <ibc@aliax.net>","license": "All Rights Reserved","main": "lib/index.jsx","scripts": {"lint": "eslint -c .eslintrc.js --ext .js,.jsx gulpfile.js lib","start": "gulp live"},"dependencies": {"@babel/runtime": "^7.8.4","bowser": "^2.11.0","classnames": "^2.2.6","clipboard-copy": "^3.1.0","debug": "^4.3.1","domready": "^1.0.8","face-api.js": "^0.21.0","hark": "^1.2.3","js-cookie": "^2.2.1","mediasoup-client": "github:versatica/mediasoup-client#v3","pokemon": "^2.0.2","prop-types": "^15.7.2","protoo-client": "^4.0.5","random-string": "^0.2.0","react": "^16.12.0","react-dom": "^16.12.0","react-draggable": "^3.3.2","react-dropzone": "^10.2.1","react-redux": "^7.2.0","react-spinner": "^0.2.7","react-tooltip": "^3.11.1","react-transition-group": "^4.3.0","redux": "^4.0.5","redux-logger": "^3.0.6","redux-thunk": "^2.3.0","riek": "^1.1.0","url-parse": "^1.4.7"},"devDependencies": {"@babel/core": "^7.8.4","@babel/plugin-proposal-object-rest-spread": "^7.8.3","@babel/plugin-transform-runtime": "^7.8.3","@babel/preset-env": "^7.8.4","@babel/preset-react": "^7.8.3","babel-plugin-jsx-control-statements": "^4.0.0","babelify": "^10.0.0","browser-sync": "^2.26.7","browserify": "^16.5.0","del": "^5.1.0","envify": "^4.1.0","eslint": "^6.8.0","eslint-plugin-import": "^2.20.1","eslint-plugin-jsx-control-statements": "^2.2.1","eslint-plugin-react": "^7.18.3","gulp": "^4.0.2","gulp-css-base64": "^1.3.4","gulp-eslint": "^6.0.0","gulp-header": "^2.0.9","gulp-if": "^3.0.0","gulp-plumber": "^1.2.1","gulp-rename": "^1.4.0","gulp-stylus": "^2.7.0","gulp-touch-cmd": "0.0.1","gulp-uglify-es": "^3.0.0","gulp-util": "^3.0.8","mkdirp": "^0.5.1","ncp": "^2.0.0","nib": "^1.1.2","supports-color": "^7.1.0","vinyl-buffer": "^1.0.1","vinyl-source-stream": "^2.0.0","watchify": "^3.11.1"}
}

启动服务

启动服务之前先生成证书,修改配置文件
在 mediasoup-demo/server下创建cert目录,然后通过openssl生成自签名证书

openssl genrsa -out privkey.pem 2048
openssl req -new -key privkey.pem -out csr.pem
openssl x509 -req -in csr.pem -signkey privkey.pem -out fullchain.pem

修改配置文件
将config.example.js改名为config.js
cp config.example.js config.js
修改MEDIASOUP_ANNOUNCED_IP为服务器主机对应的IP

启动服务

MEDIASOUP_ANNOUNCED_IP=主机对应的IP地址 npm start

启动客户端

cd mediasoup-demo/app
npm start

其他方式部署mediasoup

参考李超老师提供的mediasoup-demo编译

这篇关于mediasoup源码(一)编译及部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986077

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显