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

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f