WebRTC音视频-环境搭建

目录

期望效果

1:虚拟机和系统安装       

2:WebRTC客户端环境搭建

2.1:VScode安装

2.2:MobaXterm安装

3:WebRTC服务器环境搭建

3.1:安装openssh服务器 

3.2:安装Node.js

3.3:coturn穿透和转发服务器

3.3.1:libssl库安装

3.3.2:编译安装coturn

4:WebRTC服务器代码依赖项安装


期望效果

1:虚拟机和系统安装       

 我的环境是VMware+Ubuntu,如何安装我就不再说明了,但防止有人是第一次接触的情况,

我这里选了其他 博主非常详细的教程链接,给各位参考:

安装虚拟机(VMware)保姆级教程(附安装包)https://blog.csdn.net/weixin_74195551/article/details/127288338VMware虚拟机下安装Ubuntu20.04(保姆级教程)https://blog.csdn.net/qq_45657288/article/details/116084337

2:WebRTC客户端环境搭建

2.1:VScode安装

vscode官网:Visual Studio Code - Code Editing. Redefined

直接下载,直接安装就行了,然后安装vscode扩展插件,方便编程:

 Prettier Code Formatter

Prettier Code Formatter 是一个代码格式化工具,可以帮助开发者自动格式化代码,使其符合统一的代码风格和规范。它支持多种编程语言,包括 JavaScript、TypeScript、HTML、CSS、JSON 等等。

Live Server

用于在开发过程中提供实时的本地服务器功能。它能够在你编辑和保存代码的同时,自动刷新你的浏览器,以便实时查看代码变化后的效果

2.2:MobaXterm安装

MobaXterm 是一个功能强大的远程计算机管理工具,集成了多种网络工具和Unix命令行工具,主要用于简化远程计算机访问和管理的操作。它提供了一个整合的环境,使得用户可以方便地进行远程连接、文件传输、远程命令执行等操作。这里我们使用他直接链接 虚拟机 服务器,方便快捷。

MobaXterm(终端工具)下载&安装&使用教程https://blog.csdn.net/qq_44074697/article/details/118544904

3:WebRTC服务器环境搭建

3.1:安装openssh服务器 

这样可以使用MobaXterm或者其他ssh客户端,直接连接 虚拟机Ubuntu系统,操作方便。

3.2:安装Node.js

        Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,可以用来开发服务器端应用程序。它的主要特点包括非阻塞、事件驱动的特性,使得它特别适合处理高并发的实时应用程序,比如 WebRTC 服务端开发。

Nodejs的下载地址https://nodejs.org/dist/v20.10.0/

1:创建webrtc目录后,将压缩包 放置在该目录下,直接解压到当前目录

  tar ‐xvf node‐v10.16.0‐linux‐x64.tar.xz

2:创建软连接,方便使用

hs@hs:~/webrtc$ cd ./node-v20.10.0-linux-x64/

hs@hs:~/webrtc/node-v20.10.0-linux-x64$ pwd
/home/hs/webrtc/node-v20.10.0-linux-x64

hs@hs:~/webrtc/node-v20.10.0-linux-x64$ sudo ln -s /home/hs/webrtc/node-v20.10.0-linux-x64/bin/npm /usr/local/bin

hs@hs:~/webrtc/node-v20.10.0-linux-x64$ sudo ln -s /home/hs/webrtc/node-v20.10.0-linux-x64/bin/node /usr/local/bin

查看是否安装,安装正常则打印版本号

node ‐v

npm ‐v

3.3:coturn穿透和转发服务器

        Coturn(简称为 TURN Server)是一个开源的实现了 TURN(Traversal Using Relays around NAT)协议的服务器软件,主要用于解决网络中存在的NAT(Network Address Translation)问题,以及实现实时通信中的穿透和转发功能。

我们直接下载开源的,直接使用,保证我们的服务器端 可以打洞成功

Coturn(TURN Server)在安装过程中需要依赖 libssl 库,安装 libssl 是为了提供 TURN 服务器在网络中安全和可靠的数据传输能力,确保 TURN 协议在实际应用中能够满足安全性要求,同时保护用户数据不被窃听或篡改。

3.3.1:libssl库安装

Ubuntu系统

安装下面两个依赖

sudo apt‐get install libssl‐dev

sudo apt-get install libevent-dev

centos系统是下面两个

sudo yum install openssl‐devel

sudo yum install libevent‐devel

我这之前 在虚拟机里操作的,使用mobaxterm一样的

3.3.2:编译安装coturn

第一步:

cd webrtc/                 #进入webrtc目录

git clone https://github.com/coturn/coturn #下载、编译、安装coturn

cd coturn

./configure

make

sudo make install

可能的问题:

如果你的虚拟机环境中新装的,没有安装过编译器,在configure时后,会提示你没有安装必要的编译器,这是正常的,缺什么就安装什么就行了。

例如:

sudo apt-get update

sudo apt-get install build-essential     # 安装基本的编译工具

sudo apt-get install sqlite3 libsqlite3-dev   # 安装 SQLite3 和开发库

sudo apt-get update     #安装 pkg-config

sudo apt-get install pkg-config

这些仅供参考:

继续第二步:继续编译

第三步:安装成功后,验证是否安装成功 

#运行conturn服务器:

sudo turnserver -c turnserver.conf 

#验证是否成功

#然后查看相应的端口号3478是否存在进程。3478是默认端口

sudo lsof ‐i:3478

第四步:打洞 验证coturn服务器是否有效

测试地址,请分别测试stun和turn Coturn是集成了stun+turn协议。

测试网址:Trickle ICEWebRTC code samplesicon-default.png?t=N7T8https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

或者在WebRTC samples 这个网址里 很多webrtc官方团队 的公开测试

上图中会出现done的字样,需要等几秒,我截图早了

至此 WebRTC的环境的配置完成了,接下来进行 服务器代码依赖的环境搭建

4:WebRTC服务器代码依赖项安装

        WebRTC这里使用websocket作为信令传输,WebSocket 并不是替代 WebRTC 的信令传输协议,而是作为信令服务器与客户端之间的通信通道,帮助 WebRTC 在浏览器中建立对等连接。这种组合能够有效地支持实时通信应用的需求。

使用 WebSocket 作为 WebRTC 的信令传输的原因:

  • 全双工通信能力 WebSocket 提供了一个持久的双向通信通道,这使得它非常适合用作信令服务器。在 WebRTC 的建立过程中,客户端需要通过信令服务器交换网络信息、协商参数、建立和维护对等连接。WebSocket 提供了一种可靠的方式来进行这种信息交换,以确保双方都能够正确地建立连接。

  • 实时性和低延迟 WebSocket 与 HTTP 不同,不需要像 HTTP 那样频繁地建立和关闭连接,这减少了通信的延迟。对于 WebRTC 这种要求实时性高的应用场景,WebSocket 提供了更合适的基础设施。

所以这里安装nodejs‐websocket模块,在项目代码路径下设置:

cd webrtc/

mkdir mynode

cd mynode/

mkdir mypro

cd mypro/

mkdir server

mkdir client

cd server/

sudo npm init -y

sudo npm install nodejs-websocket

写一个server.js测试下,在vscode里写server.js 代码如下:

var http = require('http');
http.createServer(function (request, response) {// 发送 HTTP 头部// HTTP 状态值: 200 : OK// 内容类型: text/plainresponse.writeHead(200, {'Content-Type': 'text/plain'});// 发送响应数据 "Hello World"response.end('Hello im server\n');
}).listen(9999);// 终端打印如下信息
console.log('Server running at http://127.0.0.1:9999/');

运行结果:

到此:基本需要的环境,都搭建完了

下一篇可以 写client和 server了。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

FPGA-计数器

前言 之前一直说整理点FPGA控制器应用的内容,今天就从计数器这个在时序逻辑中比较重要的内容开始总结一下,主要通过还是通过让一个LED闪烁这个简单例子来理解。 寄存器 了解计数器之前先来认识一下寄存器。寄存器是时序逻辑设计的基础。时序逻辑能够避…

MVVM示例程序

目录 一 定义可通知属性 二 定义前端并绑定 三 运行效果 一 定义可通知属性 internal class MainViewModel : ObservableObject{/// <summary>/// 供前端的Command命令Binding调用/// </summary>public RelayCommand ShowCommand { get; set; }public MainViewM…

防火墙之内容安全过滤技术篇

深度行为检测技术&#xff1a;是一种基于应用层的流量检测和控制技术 DPI:针对完整的数据包&#xff0c;进行内容的识别和检测 基于应用网关的检测技术 --- 有些应用控制和数据是分离的&#xff0c;比如一些视频流。一开始会通过TCP协议链接之后&#xff0c;协商一些参数&#…

vue项目源码调试方法 ,chrome调试控制台工作区使用,利用chrome控制台调试vue项目源码的方法 图解

我们在开发vue项目的时候&#xff0c;项目开始后的第一件事情应该就是准备调试工作了&#xff0c;Chrome调试控制台就给我们提供了这样的一个方便的调试工作区。方法为&#xff0c;在Chrome浏览器里面打开你要调试的页面&#xff0c;然后打开调试控制台&#xff0c;如下&#x…

引领小模型潮流!OpenAI发布功能强大且成本低的GPT-4o mini

GPT-4o mini的成本比GPT-3.5 Turbo低了超过60%&#xff0c;其聊天表现优于Google的Gemini Flash和Anthropic的Claude Haiku。该模型从周四开始对ChatGPT的免费用户、ChatGPT Plus用户和团队订阅用户开放&#xff0c;并将在下周向企业用户开放。OpenAI计划未来将图像、视频和音频…

FairGuard游戏加固入选《嘶吼2024网络安全产业图谱》

2024年7月16日&#xff0c;国内网络安全专业媒体——嘶吼安全产业研究院正式发布《嘶吼2024网络安全产业图谱》(以下简称“产业图谱”)。 本次发布的产业图谱&#xff0c;共涉及七大类别&#xff0c;127个细分领域。全面展现了网络安全产业的构成和重要组成部分&#xff0c;探…

uniapp上传功能用uni-file-picker实现

文章目录 html代码功能实现css样式代码 html代码 <uni-file-pickerselect"onFileSelected"cancel"onFilePickerCancel"limit"1"class"weightPage-upload-but"file-mediatype"image"></uni-file-picker><imag…

Python+Flask+MySQL/Sqlite的个人博客系统(前台+后端管理)【附源码,运行简单】

PythonFlaskMySQL/Sqlite的个人博客系统&#xff08;前台后端管理&#xff09;【附源码&#xff0c;运行简单】 总览 1、《个人博客系统》1.1 方案设计说明书设计目标工具列表 2、详细设计2.1 管理员登录2.2 程序主页面2.3 笔记新增界面2.4 文章新增界面2.5 文章/笔记管理界面2…

jenkins+gitlab+harbor+maven自动化容器部署

一、gitlab安装配置 1.1、安装 由于比较懒啊&#xff01;这里就直接使用docker安装了啊&#xff01; 没事先更新一个yum源&#xff1a;yum update -y 整一个gitlab镜像&#xff1a;docker pull gitlab/gitlab-ce 运行一个gitlab容器&#xff1a;docker run -d -p 8443:443 -p…

《蔚蓝档案》电脑版PC端模拟器游玩教程

《蔚蓝档案》电脑版PC端模拟器游玩教程 《蔚蓝档案》是一款主打学园、青春、物语三大特色的二次元角色扮演类手游。作为一款重养成、剧情的手游&#xff0c;沉浸式体验尤为重要。不过很多小伙伴在用手机玩蔚蓝档案时可能经常遇到屏幕太小透明清新的色调不清晰、有时候还会出现…

《数据结构》预备

在学习数据结构之前&#xff0c;需要预先准备学习的C语言知识是&#xff1a;自定义类型--结构体类型。 本节主要讲的内容有&#xff1a; 1.结构体类型的声明 2.结构体变量的创建和初始化 3.结构成员的访问操作符 4.结构体传参 5.结构体内存对齐 6.结构体实现位段(位域) 正文开…

WORD中使用粘贴时发生“Microsoft Visual Basic 运行时错误‘53文件未找到:MathPage.WIL”

WORD中使用粘贴时发生“Microsoft Visual Basic 运行时错误’53文件未找到:MathPage.WIL” 解决方法 1.关闭word 2.找到并打开自己安装的MathType所在文件夹中MathPage.WIL 因为我安装64位&#xff0c;所以打开64位安装路径下的MathPage.WIL 3.把这个文件复制到该目录下&a…

ExcelVBA运用Excel的【条件格式】(四)

ExcelVBA运用Excel的【条件格式】&#xff08;四&#xff09;条件格式FormatConditions.AddTop10方法 【问题】 快速定位到数据的前10或后10 【效果图】 如图 【知识点】 在VBA中&#xff0c;FormatConditions.AddTop10方法用于向Range对象添加一个基于最高或最低数值的条件格式…

ubuntu源码安装Odoo

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 Odoo具有非常多的安装方式&#xff0c;除了我最爱用的 apt-get install&#xff0c;我们还可以使用git拉取Odoo源码进行安装。 本次示例于ubuntu20.04 Desktop上进行操作&#xff0c;理论上在ubuntu14.04之后都可以用此操作。 …

Atom - hackmyvm

简介 靶机名称&#xff1a;Atom 难度&#xff1a;简单 靶场地址&#xff1a;https://hackmyvm.eu/machines/machine.php?vmAtom 本地环境 虚拟机&#xff1a;vitual box 靶场IP&#xff08;Atom&#xff09;&#xff1a;192.168.56.101 跳板机IP(windows 11)&#xff1…

分享:一次性查找多个PDF文件,如何根据txt文本列出的文件名批量查找指定文件夹里的文件,并复制到新的文件夹,不需要写任何代码,点点鼠标批量处理一次性搞定

简介&#xff1a; 该文介绍了一个批量查找PDF文件&#xff08;不限于找PDF&#xff09;的工具&#xff0c;用于在多级文件夹中快速查找并复制特定文件。用户可以加载PDF库&#xff0c;输入文件名列表&#xff0c;设置操作参数&#xff08;如保存路径、复制或删除&#xff09;及…

一个自托管免费开源的人脸识别系统

大家好&#xff0c;今天给大家分享一个自托管免费开源的人脸识别系统CompreFace。 CompreFace 是一个开源的人脸识别系统&#xff0c;由 Exadel 公司开发并维护。它提供了一个基于深度学习的解决方案&#xff0c;用于人脸检测、识别和验证。 CompreFace 的设计旨在简化人脸识别…

RV1103使用rtsp和opencv推流视频到网页端

参考&#xff1a; Luckfox-Pico/Luckfox-Pico-RV1103/Luckfox-Pico-pinout/CSI-Camera Luckfox-Pico/RKMPI-example Luckfox-Pico/RKMPI-example 下载源码 其中源码位置&#xff1a;https://github.com/luckfox-eng29/luckfox_pico_rtsp_opencv 使用git clone由于项目比较大&am…

视频压缩文件太大了怎么缩小?怎么压缩视频大小?视频压缩方法:10个!(宝藏)

视频压缩文件太大了怎么缩小&#xff1f;让我看看是谁下班之后不是一手刷手机短视频&#xff0c;顺便葛优躺在沙发上的&#xff1f;互联网发展到现在&#xff0c;视频已成为我们生活中不可或缺的一部分。不管是视频录制还是视频缓存&#xff0c;视频文件体积越来越庞大&#xf…

hive3 hql脚本传递参数

在数仓的构建过程中&#xff0c;需要配置hive的调度任务&#xff0c;这时就需要对hive hql脚本进行封装&#xff0c;将参数提取出来&#xff0c;作为变量进行配置&#xff0c;比如日期、类型等。 hive3版本&#xff0c;hive -f 在执行sql脚本文件的时候是可以传递参数。 具体…