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

embedded/2024/12/21 9:36:35/

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之旅。


http://www.ppmy.cn/embedded/147500.html

相关文章

XML Schema 复合类型 - 混合内容

XML Schema 复合类型 - 混合内容 XML Schema 是一种用于定义 XML 文档结构和内容的语言。在 XML Schema 中,复合类型是一种包含其他元素和/或属性的复杂类型。混合内容(Mixed Content)是复合类型的一种特殊形式,它允许元素包含其…

MCP技术与Cline集成指南:打造智能AI助手的数据连接解决方案

引言 Model Context Protocol(MCP)是由Anthropic推出的一种全新开放标准,旨在为AI助手提供与数据源之间的安全连接能力。通过MCP技术,开发者可以实现AI助手与内容存储库、业务工具和开发环境的无缝集成,从而帮助前沿模…

零基础学安全--wireshark简介

目录 主要功能 捕获网络数据包 协议解析 数据包分析 数据包重组 过滤功能 统计与图表功能 官网 Wireshark是一个开源的网络协议分析工具 主要功能 捕获网络数据包 能够实时捕获网络中传输的数据包,用户选择要监听的网络接口(如以太网、WiFi等…

【ppt技巧】如何设置PPT带有密码的只读模式?

有没有同学,想要给PPT文件设置修改权限,却没有找到功能,给PPT文件设置只读模式,没有密码设置的?今天给大家分享给PPT文件设置带有密码的只读模式(修改权限)。 打开PPT文件之后,将PP…

用bootstrap搭建侧边栏

要注意&#xff1a; 标签的id"v-pills-dataset1-tab"要和跳转内容的aria-labelledby"v-pills-dataset1-tab"一致 标签的aria-controls"v-pills-dataset1"要和跳转内容的id"v-pills-dataset1"一致 <!-- 左边的列&#xff08;侧边栏…

python飞机大战游戏.py

python飞机大战游戏.py import pygame import random# 游戏窗口大小 WINDOW_WIDTH 600 WINDOW_HEIGHT 800# 颜色定义 BLACK (0, 0, 0) WHITE (255, 255, 255)# 初始化Pygame pygame.init()# 创建游戏窗口 window pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))…

深度学习0-前置知识

一、背景 AI最大&#xff0c;它的目的是通过让机器模仿人类进而超越人类&#xff1b; ML次之&#xff0c;它是AI的一个分支&#xff0c;是让机器模仿人类的一种方法。开发人员用大量数据和算法“训练”机器&#xff0c;让机器自行学会如何执行任务&#xff0c;它的成功取决于…

Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定

本文仅作学习交流&#xff0c;不做任何商业用途 郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴 版本&#xff1a;Unity6 模板&#xff1a;3D 核心 渲染管线&#xff1a;URP ------------------------------…