WebRTC搭建与应用(一)-ICE服务搭建

WebRTC搭建与应用(一)

近期由于项目需要在研究前端WebGL渲染转为云渲染,借此机会对WebRTC、ICE信令协议等有了初步了解,在此记录一下,以防遗忘。

第一章 ICE服务搭建

文章目录
  • WebRTC搭建与应用(一)
  • 前言
  • 一、ICE是什么?
  • 二、什么是STUN、TURN
  • 三、Coturn开源框架
    • 环境准备
    • 部署过程
      • 1.Ubuntu开启图形桌面化
      • 2.Windows远程连接Ubuntu
      • 3 安装Coturn
  • 总结

前言

之前工作主要集中于桌面端和前端的轻量化图形渲染与数据组织,服务端相关技术主要是接口调用,没有什么技术积累,本次搭建工作属于摸着石头过河。
最开始在本地测试WebRTC点对点传输没有任何问题,但是跨电脑测试时会提示ICE失败,所以还是得研究一下什么是ICE。

一、ICE是什么?

ICE即交互式连通建立方式(Interactive Connectivity Establishment),ICE并非一种新的协议,而是通过综合运用某几种协议(STUN、TURN等),使之在最适合的情况下工作,以弥补单独使用其中任何一种所带来的固有缺陷。

基于IP的语音、数据、视频等业务在网络中所面临的一个实际困难就是如何有效地穿透各种NAT(Network Address Translator:网络地址转换)以及FW(Fire Wall:防火墙)的问题。对此,SIP(会话初始化协议)以往的解决方法由ALGs(Application Layer Gateway Service:应用层网关)、STUN、TURN等方式。

二、什么是STUN、TURN

STUN(Session Traversal Utilities for NAT)即网络地址转换会话穿越应用程序。STUN提供了一种方式使一个端点能够确定NAT分配的和本地私有IP地址和端口相对应的公网IP地址和端口以及NAT的类型信息。它也为端点提供了一种方式保持一个NAT绑定不过期。NAT绑定过期则表示为相同的内网地址重新分配外网地址也就是端口号。

TURN(Traversal Using Relay NAT)即网络地址转换中继穿越协议。

TURN与STUN的共同点都是通过修改应用层中的私网地址达到NAT穿透的效果,不同点是TURN是通过两方通讯的“中间人”方式实现穿透。

三、Coturn开源框架

Coturn 是一种开源服务器框架用于实现 TURN及STUN协议,用于解决 NAT 穿透问题。它帮助客户端在受限网络环境(例如防火墙或 NAT 后面)中实现双向通信。

环境准备

Coturn主要部署在Linux系统中,本次测试采用华为云服务器Ubuntu 24.04版本。

部署过程

1.Ubuntu开启图形桌面化

之前仅通过FinalShell远程连接过Ubuntu系统的命令行模式,此次是本人第一次操刀服务器使用,说来惭愧,各种坑各种不会,所以好好记录一下一路的曲折。
sudo startx 启动图形用户界面;
如果失败,查看是否安装了图形界面,如果没有,可按下述流程安装:
(1)确保apt源可用并更新源
sudo apt-get update
(2)安装桌面图形化显示
sudo apt-get install ubuntu-desktop
(3)设置默认开启方式为图形化界面显示
sudo systemctl set-default graphical.target
(4)重启
reboot

2.Windows远程连接Ubuntu

对于前端开发人员来说一般都是在Windows环境进行开发,如果想要连接到Ubuntu服务器进行操作和测试,需要进行一些配置。
Windows的远程桌面使用的协议为RDP,首先需要在Ubuntu的操作系统中安装xrdp。
sudo apt-get install tightvncserver xrdp
安装完成后,在Windows中通过远程桌面连接输入Ubuntu的ip以及用户名、密码即可实现远程连接。
在这里插入图片描述
在这里插入图片描述

3 安装Coturn

安装过程请参考:
https://blog.csdn.net/yushangyong/article/details/129973873

切记:listening-port设置的监听端口一定要将TCP和UDP都开放,min-port和max-port设置的端口一定要将UDP开放对外,否则会无法连接。

以下是中文版TURN服务测试地址
https://docs.wildfirechat.cn/webrtc/trickle-ice/

总结

以上步骤如果都正确完成以后,那恭喜你WebRTC的长征迈出了坚实的一步,下面就要开始研究点对点通信以及WebRTC推流了,后续有时间在尝试一下使用docker部署Coturn,我们下一章继续WebRTC之旅。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW伸缩臂参数监控系统

LabVIEW开发伸缩臂越野叉车参数监控系统主要应用于工程机械中的越野叉车,以提高车辆的作业效率和故障诊断能力。系统通过PEAK CAN硬件接口和LabVIEW软件平台实现对叉车作业参数的实时监控和故障分析,具有良好的实用性和推广价值。 系统组成 系统主要由P…

VR博物馆能模拟哪些历史场景?

VR博物馆以其卓越的模拟能力,能够带领观众穿越时空,体验从古罗马的斗兽场到中世纪的欧洲城堡,从文艺复兴的佛罗伦萨到工业革命的蒸汽机,再到二战的紧张战场,每一种历史场景都栩栩如生,让人仿佛亲历其境&…

网络安全防范

实践内容 学习总结 PDR,$$P^2$$DR安全模型。 防火墙(Firewall): 网络访问控制机制,布置在网际间通信的唯一通道上。 不足:无法防护内部威胁,无法阻止非网络传播形式的病毒,安全策略…

投标心态:如何在“标海战术”中保持清醒的头脑?

在竞争激烈的市场环境下,“标海战术”——即大规模参与投标——已经成为许多企业争取市场份额的重要策略。然而,盲目追求投标数量可能导致资源浪费、团队疲劳以及战略目标的模糊化。在这种高强度的竞争模式中,如何保持清醒的头脑,…

ICLR 2025 | 时间序列(Time Series)高分论文总结

ICLR2025已经结束了讨论阶段,进入了meta-review阶段,分数应该不会有太大的变化了,本文总结了其中时间序列(Time Series)高分的论文。如有疏漏,欢迎大家补充。 挑选原则:均分要大于等于6(≥6,即…

SpringBoot集成ENC对配置文件进行加密

在线MD5生成工具 配置文件加密&#xff0c;集成ENC 引入POM依赖 <!-- ENC配置文件加密 --><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.2</ver…

ASP.NET|日常开发中数据集合详解

ASP.NET&#xff5c;日常开发中数据集合详解 前言一、数组&#xff08;Array&#xff09;1.1 定义和基本概念1.2 数组的操作 二、列表&#xff08;List<T>&#xff09;2.1 特点和优势2.2 常用操作 三、字典&#xff08;Dictionary<K, V>&#xff09;3.1 概念和用途…

金融信息系统多活技术-应用策略

目录 概述 ​编辑 多活应用场景 流水型系统 账户型系统 流水型系统应用策略 业务模型说明 系统并行策略 接入和路由策略 系列阅读 概述 本文件提出了金融信息系统多活技术的应用指南&#xff0c;金融机构可根据自身业务需要&#xff0c;结合本文件进行 多活信息系统的…

大数据之Hbase环境安装

Hbase软件版本下载地址&#xff1a; http://mirror.bit.edu.cn/apache/hbase/ 1. 集群环境 Master 172.16.11.97 Slave1 172.16.11.98 Slave2 172.16.11.99 2. 下载软件包 #Master wget http://archive.apache.org/dist/hbase/0.98.24/hbase-0.98.24-hadoop1-bin.tar.gz…

人工智能ACA(四)--机器学习基础

零、参考资料 一篇文章完全搞懂正则化&#xff08;Regularization&#xff09;-CSDN博客 一、 机器学习概述 0. 机器学习的层次结构 学习范式&#xff08;最高层&#xff09; 怎么学 监督学习 无监督学习 半监督学习 强化学习 学习任务&#xff08;中间层&#xff0…

HTML语法规范

HTML语法规则 HTML 标签是由尖括号包围的关键词&#xff0c;标签通常是成对出现的&#xff0c;例如 <html> 和 </html>&#xff0c;称为双标签 。标签对中的第一个标签是开始标签&#xff0c;第二个标签是结束标签单标签比较少&#xff0c;例如<br />&#x…

四川托普信息技术职业学院教案1

四川托普信息技术职业学院教案 【计科系】 周次 第 1周&#xff0c;第1次课 备 注 章节名称 第1章 XML语言简介 引言 1.1 HTML与标记语言 1.2 XML的来源 1.3 XML的制定目标 1.4 XML概述 1.5 有了HTML了&#xff0c;为什么还要发展XML 1.5.1 HTML的缺点 1.5.2 XML的特点 1.6 X…

Win10将WindowsTerminal设置默认终端并添加到右键(无法使用微软商店)

由于公司内网限制&#xff0c;无法通过微软商店安装 Windows Terminal&#xff0c;本指南提供手动安装和配置新版 Windows Terminal 的步骤&#xff0c;并添加右键菜单快捷方式。 1. 下载新版终端安装包: 访问 Windows Terminal 的 GitHub 发布页面&#xff1a;https://githu…

OpenAI发布新一代推理模型O3和O3 Mini:能力与性能的双重突破

2024年12月21日&#xff0c;OpenAI通过一场特别活动正式宣布了其新一代推理模型O3及其轻量化版本O3 Mini。这标志着AI推理能力和效率的又一次飞跃。本文将围绕发布会中的关键内容&#xff0c;详细介绍O3和O3 Mini的核心能力、性能表现、以及面向公众安全测试的相关计划。 1. 背…

VScode插件之get、set函数自动生成

文章目录 VScode插件之get、set函数自动生成插件名称现有功能功能快捷键使用总结与部分插件的get、set生成对比部分实现效果展示部分实现思路 VScode插件之get、set函数自动生成 初次尝试插件的编写开发&#xff0c;这篇博客也是对自己成果的一个记录&#xff0c;如有不足请指…

【Lua热更新】上篇

Lua 热更新 - 上篇 下篇链接&#xff1a;【Lua热更新】下篇 文章目录 Lua 热更新 - 上篇一、AssetBundle1.理论2. AB包资源加载 二、Lua 语法1. 简单数据类型2.字符串操作3.运算符4.条件分支语句5.循环语句6.函数7. table数组8.迭代器遍历9.复杂数据类型 - 表9.1字典9.2类9.3…

完全二叉树的权值(蓝桥杯2019年试题G)

给定一棵包含N个节点的完全二叉树&#xff0c;树上的每个节点都有一个权值&#xff0c;按从上到小、从左到右的顺序依次是A1、A2……An,&#xff08;1&#xff0c;2&#xff0c;n为下标。&#xff09;如下图所示。 现在&#xff0c;小明要把相同深度的节点的权值加到一起&#…

时间管理系统|Java|SSM|JSP|

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

前端yarn工具打包时网络连接问题排查与解决

最近线上前端打包时提示 “There appears to be trouble with your network connection”&#xff0c;以此文档记录下排查过程。 前端打包方式 docker启动临时容器打包&#xff0c;命令如下 docker run --rm -w /app -v pwd:/app alpine-node-common:v16.20-pro sh -c "…

harmony UI组件学习(1)

Image 图片组件 string格式&#xff0c;通常用来加载网络图片&#xff0c;需要申请网络访问权限:ohos.permission.INTERNET Image(https://xxx.png) PixelMap格式&#xff0c;可以加载像素图&#xff0c;常用在图片编辑中 Image(pixelMapobject) Resource格式&#xff0c;加…