WebRTC 环境搭建

主题

本文主要描述webrtc开发过程中所需的环境搭建

环境:

运行环境:ubuntu 20.04

Node.js环境搭建

安装编译 Node.js 所需的依赖包:

sudo apt-get update
sudo apt-get install -y build-essential libssl-dev

下载 Node.js 源码:

curl -sL https://nodejs.org/dist/v14.19.0/node-v14.19.0.tar.gz -o node-v14.19.0.tar.gz

 解压源码包:

tar -xzf node-v14.19.0.tar.gz
cd node-v14.19.0

配置、编译和安装 Node.js:

./configure
sudo make && sudo make install

 验证 Node.js 和 npm 的安装

node -v && npm -v

 测试

app.js

// 引入 http 模块
const http = require('http');// 创建一个 HTTP 服务器
const server = http.createServer((req, res) => {// 设置 HTTP 响应头res.statusCode = 200;res.setHeader('Content-Type', 'text/plain');// 向客户端发送响应res.end('Hello, World!\n');
});// 指定服务器监听的端口号
const port = 3000;
server.listen(port, () => {console.log(`服务器正在监听端口 ${port}`);
});
node app.js

coturn搭建

安装 COTURN 软件包:

sudo apt-get install coturn

编辑 COTURN 配置文件:

sudo vim /etc/coturn/turnserver.conf

请根据实际情况修改以下配置项:

  • realm: 设置 TURN 服务器的域名或 realm。

  • user: 设置 TURN 服务器的用户名和密码。

  • static-auth-secret: 设置身份验证的密钥。

  • server-name: 设置 TURN 服务器的域名或 IP 地址。  

listening-port=3478
tls-listening-port=5349
#realm=example.com
user=jbj:123456
min-port=49152
max-port=65535
log-file=/var/log/coturn/turnserver.log
verbose
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=ABCD1234EFGH5678
server-name=192.168.1.25

 启动 COTURN 服务:

sudo systemctl start coturn

检查 COTURN 服务状态:

sudo systemctl status coturn

之后,可以使用 COTURN 服务器提供的 STUN 和 TURN 功能,帮助 WebRTC 等实时通信应用程序解决 NAT 穿透问题。

# nohup是重定向命令,输出都将附加到当前目录的 nohup.out 文件中;
# 命令后加 & ,后台执行起来后按 
ctr+c,不会停止
sudo nohup turnserver ‐L 0.0.0.0 ‐a ‐u jbj:123456 ‐v ‐f ‐r nort.gov &# 前台启动
sudo turnserver ‐L 0.0.0.0 ‐a ‐u jbj:123456 ‐v ‐f ‐r nort.gov  
#然后查看相应的端口号3478是否存在进程
sudo lsof ‐i:3478

sar网络上传下载检测

sudo apt-get install sysstat
#每1s检测一次
sudo sar -n DEV 1

  • 09:03:19 PM: 这表示输出统计信息的时间是下午 9 点 3 分 19 秒。

网络接口信息:

  • lo: 这是本地回环接口,用于本机之间的通信。

  • ens33: 这是主网卡接口。

  • docker0: 这是 Docker 容器网桥接口。

  • docker_gwbridge: 这是 Docker 网关桥接口。

网络流量统计指标:

  • rxpck/s: 每秒接收的数据包数量。

  • txpck/s: 每秒发送的数据包数量

  • rxkB/s: 每秒接收的数据量,单位为 KB。

  • txkB/s: 每秒发送的数据量,单位为 KB。

  • rxcmp/s: 每秒接收的压缩数据包数量。

  • txcmp/s: 每秒发送的压缩数据包数量。

  • rxmcst/s: 每秒接收的多播数据包数量。

  • %ifutil: 网卡利用率百分比。

nginx环境搭建

安装 Nginx 编译依赖

sudo apt-get update
sudo apt-get install build-essential libtool zlib1g-dev libpcre3 libpcre3-dev openssl

下载 Nginx 源码

wget http://nginx.org/download/nginx-1.15.8.tar.gz
tar xvzf nginx-1.15.8.tar.gz
cd nginx-1.15.8/

 配置 Nginx 编译参数 (支持 HTTPS)

./configure --with-http_ssl_module

 编译安装

# 编译 Nginx
make# 安装 Nginx
sudo make install查看 Nginx 的编译参数
nginx -V--with-http_ssl_module 表示 Nginx 已经编译了对 SSL/TLS 协议的支持。

学习资料分享

0voice · GitHub

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

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

相关文章

luogu P1048

知识点总结:背包问题(0/1 背包) 问题描述:给定一个背包的容量 T 和 M 种物品,每种物品具有体积 x 和价值 y。在不超过背包容量 T 的前提下,选择若干物品,使得总价值最大化。 1. 动态规划状态说…

CUDA解说

CUDA(Compute Unified Device Architecture)是NVIDIA公司开发的一种并行计算平台和编程模型。 它允许开发者使用NVIDIA的GPU(图形处理单元)进行通用计算,即GPGPU(General-Purpose computing on Graphics P…

解决:使用EasyExcel导入Excel模板时出现数据导入不进去的问题

解决:使用EasyExcel导入Excel模板时出现数据导入不进去的问题 在Java中,当我们用EasyExcel导入Excel时,可能会出现数据导入不进去的问题。例如: 这种异常等。 问题原因1:这个1代表从第几行开始,你的exce…

UPCOMING LAUNCH即将推出 Starship‘s Sixth Flight Test星舰的第六次飞行测试

The sixth flight test of Starship is targeted to launch as early as Monday, November 18.Starship 的第六次飞行测试预计最早于 11 月 18 日星期一启动。 A live webcast of the flight test will begin about 30 minutes before liftoff, which you can watch here and …

Redis 基础数据改造

优质博文:IT-BLOG-CN 一、服务背景 基础数据查询服务:提供航司(5000家)、机场(4000)、票台(40000)、城市(4000)等基础数据信息。 痛点一:因为基…

水库大坝安全监测预警方法

一、监测目标 为了确保水库大坝的结构安全性和运行稳定性,我们需要采取一系列措施来预防和减少因自然灾害或其他潜在因素所引发的灾害损失。这不仅有助于保障广大人民群众的生命财产安全,还能确保水资源的合理利用和可持续发展。通过加强大坝的监测和维护…

在Scrapy爬虫中应用Crawlera进行反爬虫策略

在互联网时代,数据成为了企业竞争的关键资源。然而,许多网站为了保护自身数据,会采取各种反爬虫技术来阻止爬虫的访问。Scrapy作为一个强大的爬虫框架,虽然能够高效地抓取网页数据,但在面对复杂的反爬虫机制时&#xf…

day20:三剑客——awk基础

一,概述 AWK 是一种用于处理文本和数据的编程语言,特别擅长用于处理格式化文本文件。它通过将输入数据分成字段,逐行进行处理,广泛应用于数据分析、文本处理和系统管理中。 二,使用方式 命令模式(重点&a…

深度学习基础练习:从pytorch API出发复现LSTM与LSTMP

2024/11/5-2024/11/7: 前置知识: [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络 - wangduo - 博客园 【官方双语】LSTM(长短期记忆神经网络)StatQuest_哔哩哔哩_bilibili 大部分思路来自于: PyTorch LSTM和LSTMP…

半导体企业如何利用 Jira 应对复杂商业变局?

以下是一篇关于如何利用 Jira 构建半导体企业数字化研发管理蓝图的文章。借鉴了 ONES 案例中的思路,并结合了 Jira 的特点,为半导体企业在复杂商业环境下进行数字化转型提供支持: 半导体企业如何利用 Jira 应对复杂商业变局? 在全…

嵌入式开发之进程执行另外程序

进程-exec函数族 进程调用exec函数族执行某个程序进程当前内容被指定的程序替换实现让父子进程执行不同的程序,父进程创建子进程,子进程调用exec函数族,父进程不受影响,例如:shell,接收程序名称,执行用户指定的程序。1、进程-execl/execlp //进程-execl/execlp #includ…

L1G3000 提示工程(Prompt Engineering)

什么是Prompt(提示词)? Prompt是一种灵活、多样化的输入方式,可以用于指导大语言模型生成各种类型的内容。什么是提示工程? 提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。 六大基本原则: 指令要清晰提供参考内容复杂的任务拆…

【Rust设计模式之建造者模式】

Rust设计模式之建造者模式 什么是建造者模式 什么是建造者模式 即将结构体属性方法与构建解离,使用专门的builder进行建造,说白了就是new和其他的方法分开,集中处理更方便。 直接上代码: #[derive(Debug)] struct children {nam…

Servlet 3.0 新特性全解

文章目录 Servlet3.0新特性全解Servlet 3.0 新增特性Servlet3.0的注解Servlet3.0的Web模块支持servlet3.0提供的异步处理提供异步原因实现异步原理配置servlet类成为异步的servlet类具体实现异步监听器改进的ServletAPI(上传文件) Servlet3.0新特性全解 tomcat 7以上的版本都支…

PPT文件设置了修改权限,如何取消权?

不知道大家在使用PPT文件的时候,是否遇到过下面的提示框,这就是PPT文件设置了修改权限,只有输入密码才可以编辑文件。 如果我们没有输入密码,以只读方式进入,那么我们会发现功能栏中的按钮全是灰色,无法使用…

牛客sql题目总结(1)

1.第N高的薪水 AC: create function getnthhighestsalary(n int) returns int begindeclare m int; set m n - 1; return (select distinct salaryfrom employeeorder by salary desclimit m, 1); end 2.平均播放进度大于60%的视频类别 AC: select tb_video_info…

【NLP】使用 SpaCy、ollama 创建用于命名实体识别的合成数据集

命名实体识别 (NER) 是自然语言处理 (NLP) 中的一项重要任务,用于自动识别和分类文本中的实体,例如人物、位置、组织等。尽管它很重要,但手动注释大型数据集以进行 NER 既耗时又费钱。受本文 ( https://huggingface.co/blog/synthetic-data-s…

2024年10月个人工作生活总结

本文为 2024年10月工作生活总结。 研发编码 一个证书过期问题记录 某天,现场反馈某服务无法使用问题,经同事排查,是因为服务证书过期导致的。原来,证书的有效期设置为5年,这个月刚好到期。 虽然这个问题与自己无直接…

AIGC:人工智能生成内容的未来

文章目录 一、AIGC的定义与背景1.1 AIGC的起源与发展1.2 AIGC的核心技术 二、AIGC的核心技术解析2.1 生成对抗网络(GANs)2.2 变分自编码器(VAEs)2.3 自然语言处理(NLP)与文本生成 三、AIGC的应用场景四、AI…

【51单片机】串口通信原理 + 使用

学习使用的开发板:STC89C52RC/LE52RC 编程软件:Keil5 烧录软件:stc-isp 开发板实图: 文章目录 串口硬件电路UART串口相关寄存器 编码单片机通过串口发送数据电脑通过串口发送数据控制LED灯 串口 串口是一种应用十分广泛的通讯接…