WebRTC音视频-环境搭建

news2024/11/23 8:28:51

目录

期望效果

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/plain
    response.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.coloradmin.cn/o/1936889.html

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

相关文章

构建高效Node.js中间层:探索请求合并转发的艺术

🎉 博客主页:【剑九 六千里-CSDN博客】 🎨 上一篇文章:【CSS盒模型:掌握网页布局的核心】 🎠 系列专栏:【面试题-八股系列】 💖 感谢大家点赞👍收藏⭐评论✍ 引言&#x…

阿里云 https证书部署

一.申请证书 二.查看状态 查看状态,已签发是完成了申请证书 三.部署 我在nginx服务器上部署 具体操作链接:阿里云文档 修改前 修改后 四.重启ngnix 五.验证是否成功 在浏览器输入域名查看

maven 私服搭建(tar+docker)

maven私服搭建 一、linux安装nexus1、工具下载 二、 docker 搭建nexus1、镜像下载创建目录2、运行nexus3、访问确认,修改默认密码,禁用匿名用户登录4、创建仓库5、创建hostd仓库6、创建Blob Stores7、创建docker私服1、创建proxy仓库2、创建hotsed本地仓…

Qt自定义下拉列表-可为选项设置标题、可禁用选项

在Qt中,ComboBox(组合框)是一种常用的用户界面控件,它提供了一个下拉列表,允许用户从预定义的选项中选择一个。在项目开发中,如果简单的QComboBox无法满足需求,可以通过自定义QComboBox来实现更复杂的功能。本文介绍一个自定义的下…

144. 字典序最小的 01 字符串(卡码网周赛第二十六期(23年阿里淘天笔试真题))

题目链接 144. 字典序最小的 01 字符串(卡码网周赛第二十六期(23年阿里淘天笔试真题)) 题目描述 小红有一个 01 字符串,她可以进行最多 k 次提作,每次操作可以交换相邻的两个字符,问可以得到的…

C++的STL简介

0.STL简介 C的STL(Standard Template Library,标准模板库)是C标准库的一部分,它提供了一套通用的类和函数模板,用于处理数据结构和算法。STL的主要组件包括: 容器分配器算法迭代器适配器仿函数 容器 容…

制造运营管理系统(MOM系统),企业实现先进制造的关键一步

随着全球制造业的快速发展,企业对于生产效率和成本控制的要求日益增高。在这个背景下,制造运营管理系统(MOM系统)成为了企业提升竞争力的关键工具。盘古信息作为业内领先的智能制造解决方案提供商,其MOM系统更是以其卓…

作为爬虫工程师,在封装API时如何做得更好

在数据驱动的时代,爬虫工程师的角色日益重要。他们不仅是数据的收集者,更是数据的桥梁构建者,通过编写高效、稳定的爬虫程序,将互联网上的海量信息转化为有价值的数据集。而在这一过程中,API(应用程序接口&…

最小二乘求待定位点的位置(三维环境)|MATLAB

前言 之前发过三点法求待测点位置的程序讲解,哪个是二维的,见:基于伪逆的三点法距离求位置,MATLAB源代码(MATLAB函数) 这里给出三维情况下的函数和测试代码。对于函数,输入已知锚点的位置、待…

唐山养老院哪家好---守护晚年幸福,用服务引领老年人高品质养老生活

随着社会的快速发展和人口老龄化趋势的加剧,老年人对养老机构的需求日益增长,选择养老机构作为养老方式已成为许多老年人的必然选择。随着年龄的增长,生理功能的退化和疾病风险的增加,使得老年人更加需要专业的医疗照护和日常生活…

无人机的发展前景大吗?

随着科技的飞速发展,无人机(Unmanned Aerial Vehicle, UAV)作为一种新兴的航空器,已逐渐从军事领域渗透到民用领域。无人机的应用广泛,包括但不限于航拍、物流配送、环境监测、农业植保、应急救援等多个领域。本文旨在…

神经网络之卷积神经网络

目录 一、卷积神经网络概述:1.卷积层:1.1卷积核与神经元:1.2卷积层作用:1.3多通道概念: 2.池化层:2.1池化层作用: 3.隐藏层与卷积层、池化层关系: 一、卷积神经网络概述:…

Nginx部署前端项目尝试 - windows版

前端还是要学一点服务器端的东西,才能更好的理解一些知识 1、项目打包 生成dist 2、下载nginx解压,start nginx 启动 浏览器输入 localhost 显示如下页面表示启动成功 3、配置nginx server {listen 8080;# ip 不要加http 前后不要加 /server_name…

LeetCode做题记录(第二天)169. 多数元素

题目:169. 多数元素 标签:数组 哈希表 分治 计数 排序 题目信息: 思路一: 在题目中出现了计数,那我们就可以直接考虑考虑使用哈希表 unordered_map 即遍历的时候记录每个数的出现次数,当出现次数大于n/…

无法启动此程序,因为计算机丢失api-ms-win-core-path-l1-1-0.dll的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Qt实现仿微信在线聊天工具(服务器、客户端)V1_ 04

上一篇实现了客户端与服务器的通信,这一篇继续实现相关功能 本章内容 服务器与数据库的连接通信格式的规范登录信息的验证 1.数据库的建立 这里连接的是Mysql8.0数据库,如果想要简单点可以直接用sqlite3数据库,调用逻辑基本差不多,数据库语法也基本一致。 在服务器工程里…

puzzle(0611)《组合+图论》追捕问题

目录 一,追及问题 1,警察和小偷 2,旋转的4个硬币 3,抓狐狸 二,围堵问题 三,追及围堵 一,追及问题 1,警察和小偷 如下图,警察先走,警察和小偷轮流一人…

ubuntu 更新源

前言 实现一键替换在线源 一键更新源 ubuntu 全球镜像站以下支持现有ubuntu 20&#xff0c;22&#xff0c;24 echo "Delete the default source" rm -rf /etc/apt/sources.listecho "Build a new source" cat <<EOF>>/etc/apt/sources.li…

MQTT学习笔记-概念

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;消息队列遥测传输 MQTT特点 MQTT协议是为大量计算能力有限&#xff0c;且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议&#xff0c;它具有以下主要的几项特性&#xff1a; 1、使用发布…

Nginx优化、防盗链

目录 Nginx优化 隐藏版本信息 网站缓存 日志切割 超时时间 更改进程数 网页压缩 防盗链 在使用源码软件包安装过Nginx服务&#xff0c;具体步骤看上一篇文章 功能模块位置 在Nginx的解压目录下的auto目录内的options文件可以查看Nginx可以安装的功能模块 [rootlocal…