WebRTC音视频-前言介绍

news2024/9/22 19:38:35

目录

效果预期

1:WebRTC相关简介

1.1:WebRTC和RTC

1.2:WebRTC前景和应用

2:WebRTC通话原理

2.1:媒体协商

2.2:网络协商

2.3:信令服务器


效果预期

1:WebRTC相关简介

1.1:WebRTC和RTC

        WebRTC(Web Real-Time Communication)是一项开放标准的实时通讯技术,旨在通过浏览器和移动应用程序直接进行音频、视频和数据传输,而无需借助插件或其他第三方软件。

        RTC是一个更广泛的概念,涵盖了各种实时通信技术和协议,RTC是Real-Time Communication(实时通信)的缩写。它是一种技术和协议集合,用于在用户之间传输数据和媒体,实现实时的音频、视频和数据通信。

        WebRTC 则是 Google 基于 RTC 协议实现的一个开源项目,WebRTC是一个免费的开放项目,它通过简单的API为浏览器和移动应用程序提供实 时通信(RTC)功能。

RTC 有一个非常重要的特性,它是一个支持点对点直接传输的 P2P 协议;P2P在下面会介绍

webrtc官网   https://webrtc.org

1.2:WebRTC前景和应用

WebRTC(Web Real-Time Communication)的确以“web”命名,但其设计并不受限于传统的互联网浏览器环境。实际上,无论终端运行环境是浏览器、桌面应用、移动设备(如Android或iOS)还是IoT设备,只要满足IP连接可达和符合WebRTC规范的条件,这些设备都可以进行互通。

这一特性极大地扩展了WebRTC的应用范围,释放了大量智能终端以及运行在这些终端上的应用程序的实时通信能力。以下是WebRTC适用的主要应用领域:

  1. 在线教育: 教育机构可以利用WebRTC实现远程教学和学习,包括实时的视频和音频教学内容传输,互动问答和屏幕共享等功能。

  2. 视频会议: 企业和团队可以通过WebRTC搭建高效的视频会议系统,实现多方实时视频通话、协作编辑和虚拟会议室等功能,提升远程工作的效率。

  3. 视频社交: 社交平台和应用可以利用WebRTC提供实时视频聊天和直播功能,增强用户之间的互动和社交体验。

  4. 远程协助和支持: 客户服务和技术支持可以通过WebRTC提供远程协助和问题解决,包括远程控制、共享文档和实时注释等。

  5. 远程操控: IoT设备和工业控制系统可以通过WebRTC实现远程监控和操控,包括设备状态的实时显示和远程操作指令的传输。

综上,WebRTC的跨平台和广泛适用性使其在实时交互性要求较高的各种应用场景中都有广泛的应用前景。通过其开放的标准和协议,WebRTC不仅促进了多种设备和应用之间的互通,还为创新的实时通信应用提供了丰富的技术支持

2:WebRTC通话原理

        假如在保证两个可以正常联网 且(具备摄像头/麦克风多媒体设备的)正常的两个浏览器,如何实现互通呢?

主要分为两个部分,第一个部分 是媒体协商 ,另一个是网络协商 

2.1:媒体协商

        例如:当两个对象 A和B存在多种编码格式,例如上面图示,当A邀请B时,A会将自己的能力传递给B,然后B得到A的能力后,选择与A共有的能力,比如H264视频编码能力,然后传递给A,表示你的能力中,我符合H264,然后A得到信息后,便会也采用H264这个能力与B进行交互,这个过程就是媒体协商,这个只是一个示例,当然不止这个视频编码能力的协商交互,还包括音频能力、自己的媒体信息等其他信息交互。

        这个过程则是使用专门的协议,称为Session Description Protocol (SDP),在WebRTC中,参 与视频通讯的双方必须先交换SDP信息,这样双方才能知道对方的能力是什么,而交换SDP的过程,也称为"媒体协商"

WebRtC中媒体协商,主要是指SDP交换。又比如WebRTC建立中的信令媒体协商逻辑大概如下:

  • 发起端创建 Offer

    • Amy(发起端)通过创建一个 SDP(Session Description Protocol)Offer 来描述她的本地媒体能力和网络信息。
    • Amy 调用 setLocalDescription 方法将这个 Offer 设置为本地描述,并将其保存起来。
  • Offer 通过信令服务器传送给接收端

    • Amy 将她的 Offer 信息通过信令服务器发送给接收端 Bob。
  • 接收端处理 Offer

    • Bob(接收端)收到来自 Amy 的 Offer 信息后,通过调用 setRemoteDescription 方法将这个 Offer 设置为远端描述,保存起来。
  • 接收端创建 Answer

    • Bob 基于收到的 Offer 信息,创建一个 SDP Answer 来描述他的本地媒体能力和网络信息。
    • Bob 调用 setLocalDescription 方法将这个 Answer 设置为本地描述,并将其保存起来。
  • Answer 通过信令服务器传送给呼叫端

    • Bob 将他的 Answer 信息通过信令服务器发送回给呼叫端 Amy。
  • 呼叫端处理 Answer

    • Amy 收到来自 Bob 的 Answer 信息后,通过调用 setRemoteDescription 方法将这个 Answer 设置为远端描述,保存起来。

其中:setLocalDescription、setRemoteDescription 都是WebRTC都是接口API.

而什么又是Offer、Answer呢?

在双方要建立点对点通信时,发起端发送的 SDP 消息称为 Offer,接收端发送的 SDP 消息称为 Answer

所以,offer 和 answer 本质就是存有 SDP 信息的对象,所以也会叫做 SDP Offer 和 SDP Answer。

简单的理解:WebRTC 的信令协商过程就像人们在交换名片一样。每个人都准备了自己的名片(Offer 或 Answer),并将它们递交给对方。同时,每个人也接收并保存了对方的名片,这样双方就可以在需要联系时,通过这些名片上的信息找到彼此,并建立起通信。这种理解就概括了 WebRTC 中信令协商的基本原理和过程

2.2:网络协商

     当媒体协商完成后,WebRTC 就开始建立网络连接,其过程称为 ICE(Interactive Connectivity Establishment)交互式连接建立。ICE 不是一种协议,整合了 STUNTURN 两种协议(用于 NAT 穿透)的框架。

注意:ICE 是在各端调用 setLocalDescription() 后就自动开始了,并且是多次尝试去网络连接。也就是收集 Candidate的过程。

   WebRtc中很重要的一个环节,便是网络协商(网络协商 包括了“打洞”,但不仅仅只是打洞),也就是打通两个浏览器端之间的网络。两者不是都可以访问网络吗?为什么还要 再次打通网络呢?

那是 因为理想的网络情况:是每个浏览器的电脑都是私有公网IP,可以直接进行点对点连接。

例如下图:

        但是实际上,随着入网的设备越来越多,IPV4的地址池慢慢见底,新接入互联网的设备很难再分配到单独公网的 IPv4 地址,为了解决这个问题,引入了一个叫 NAT(Network address translation)的协议;新接入的设备不再直接分配公网的 IPv4 地址,而是躲在 NAT 设备(路由器等)之后,NAT 会给后面的每一个设备都分配一个单独的内网地址,就像家庭 或者 公司网络中一般都是一个公网IP出口,然后其他设备都是躲在这个公网地址后的内网地址。

     

简单解释下:

 NATNAT(Network Address Translation,网络地址转换)是一种网络技术,用于解决专用网络内部设备与公共网络之间的连接问题。其主要功能是将内部网络(私有网络)中的IP地址转换为外部网络(公共网络)的IP地址,以便内部设备能够访问互联网或与外部设备进行通信,同时保护内部网络不被直接访问。

NAT墙的进一步了解 和P2P协议,参考连接:

深入浅出WebRTC传输协议icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/661166646

Candidate(候选者)Candidate(候选者)是WebRTC中用于描述设备可以使用的网络地址和传输协议的概念。在WebRTC建立对等连接的过程中,每个设备会收集自己的候选者信息,并交换给对方,以便在复杂的网络环境中找到可用的通信路径。简单的说 就是服务器的 IP 地址、端口号以及使用的传输协议。知道了这些信息,才能建立连接。而 Candidate 正是 WebRTC 用来描述它可以连接的远端的基本信息,因此 Candidate 是至少包括 IP 地址、端口号、协议的一个信息集合。

STUN:(Session Traversal Utilities for NAT,NAT会话穿越实用程序)是一种网络协议,旨在帮助设备位于NAT后面的客户端发现其真实的公网IP地址和端口号。它允许位于NAT(或多重 NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的 Internet端端口。说白了就是 帮打洞的机制叫 ICE,帮忙打洞的服务器叫 STUN 服务。STUN 服务器用于获取计算机的公网 IP 地址。

TURN(Traversal Using Relays around NAT)是一种网络协议和服务,是STUN的扩展,用于解决无法通过STUN直接建立连接的情况,也就是当STURN搞不定网络的时候,就摆烂了,开始换个思路走了,也就是搞不定我就直接使用 TURN服务直接代理转发了

TURN 服务器会作为中转,转发多媒体数据就意味着会消耗大量的带宽。

但是,ICE打洞连同网络时,我们只需要配置好 STURN和TURN对应的地址,然后调用函数就行了,WebRTC已经帮我们完成了工作。

2.3:信令服务器

现在客户端都有媒体信息和网络信息 ,但是要去转发交换,现在则需要一个信令服务器(Signal server)转发对端的媒体信息和网络信息。

信令服务器在WebRTC中充当中介和调度者的角色,它不传输实际的媒体数据(音视频流),而是传递连接所需的控制信息和元数据。

作为中间人帮助建立连接,主要负责:

1:信令的处理,如媒体协商消息的相互转发传递

2:管理房间信息。比如房间进出、人员信息变化、状态连接变化等。所以也叫信令服务器也叫房间服务器。

下一篇继续,下一篇介绍环境搭建

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

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

相关文章

电子设计-入门教程-基础1

电子设计-入门教程-基础1 基础电路知识1.1 电平的概念——高电平是1,低电平是01.2 “电平”的 应用场景 – 高电平使能/低电平使能/失能 会看电路图—网络标签是什么PWM是什么产生PWM的方法: 直流电和交流电恒定直流电的纹波 辑电路(控制电路…

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁(Mutex)8.2 条件变量(Condition Variable)8.3 信号量(Semaph…

Pytest+selenium UI自动化测试实战实例

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 今天来说说pytest吧,经过几周的时间学习,有收获也有疑惑,总之…

【CMU博士论文】结构化推理增强大语言模型(Part 0)

问题 :语言生成和推理领域的快速发展得益于围绕大型语言模型的用户友好库的普及。这些解决方案通常依赖于Seq2Seq范式,将所有问题视为文本到文本的转换。尽管这种方法方便,但在实际部署中存在局限性:处理复杂问题时的脆弱性、缺乏…

界面控件DevExpress Blazor UI v24.1 - 发布全新TreeList组件

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生Blazor UI组件(包括Pivot Grid、调度程序、图表、数据编辑器和报表等)。 DevExpress Blazor控件目前已经升级…

钡铼分布式 IO 系统 OPC UA边缘计算耦合器BL205

深圳钡铼技术推出的BL205耦合器支持OPC UA Server功能,以服务器形式对外提供数据。符合IEC 62541工业自动化统一架构通讯标准,数据可以选择加密(X.509证书)、身份验证方式传送。 安全策略支持basic128rsa15、basic256、basic256s…

谷粒商城-全文检索-ElasticSearch

1.简介 一个分布式的开源搜索和分析引擎,可以 秒 级的从海量数据中检索 主要功能:做数据的检索和分析(MySQL专攻于数据的持久化存储与管理CRUD达到百万以上的数据MSQL就会很慢,海量数据的检索和分析还是要用ElasticSearch) 用途:我们电商项目里的所有的检索功能都是由Elasti…

【BUG】已解决: KeyboardInterrupt

已解决: KeyboardInterrupt 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人 擅长.net、C…

Web开发:ASP.NET CORE的后端小结(基础)

1.后端重定向到指定路由 public IActionResult Index(){return RedirectToAction("Index", "Main");//重定向>Main/Index} 【备注】如果在MainController的Index方法中return View();本质是 return View("Index"),返回和方法同名的…

PlantUML-UML 绘图工具安装、Graphviz安装、本地使用/在线使用、语法、图示案例

文章目录 前言本地安装vscode安装插件下载安装Graphviz配置Graphviz环境变量测试 在线使用演示PlantUML语法总结活动图(新语法)时序图类图用例图其他图 更多相关内容可查看 前言 本篇提供两种使用方式分别为 在线使用地址1:https://www.pla…

基于FPGA的多路选择器

目录 一、组合逻辑 二、多路选择器简介: 三、实战演练 摘要:本实验设计并实现了一个简单的多路选择器,文章后附工程代码 一、组合逻辑 组合逻辑是VerilogHDL设计中的一个重要组成部分。从电路本质上讲,组合逻辑电路的特点是输…

全国产服务器主板:搭载飞腾FT2000+/64处理器的高性能加固服务器

近期很多朋友咨询全国产化的服务器主板。搭载的是飞腾FT-2000/64的全国产化服务器主板。他的主要特点是:①丰富的PCIe、千兆以太网、SATA接口,可用作数据处理、存储、通信服务器;②​​​​​​​板载独立显示芯片,对外HDMI/VGA/L…

使用 spring MVC 简单的案例 (1)计算器

一、计算器 1.1前端代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> …

仅两家!云原生向量数据库 PieCloudVector 全项通过信通院「可信数据库」评测

7月16日&#xff0c;2024 可信数据库发展大会在北京隆重举行。大会以“自主、创新、引领”为主题&#xff0c;近百位数据库领域的专家、学者齐聚一堂&#xff0c;带来高质量的数据库技术洞察与实战经验。 本次可信数据库发展大会中&#xff0c;中国信通院正式公布 2024 年上半年…

液氮罐搬运过程中的安全注意事项有哪些

在液氮罐搬运过程中&#xff0c;安全性是至关重要的考虑因素。液氮是一种极低温的液体&#xff0c;其温度可达零下196摄氏度&#xff0c;在接触到人体或物体时会迅速引发严重的冷冻伤害。因此&#xff0c;正确的搬运和使用液氮罐是保障操作安全的关键。 液氮是一种无色、无味的…

用EXCEL和python 计算马尔可夫链转移矩阵

目录 目标&#xff1a;用EXCEL和python 计算马尔可夫链转移矩阵 1 用EXCEL计算 1.1 马尔可夫链的基本应用 1.2 具体计算 2 用python计算马尔可夫转移矩阵 2.1 py代码 2.2 运行结果 3 上面2者计算结果相同 目标&#xff1a;用EXCEL和python 计算马尔可夫链转移矩阵 1 用…

水利行业的智慧转型之路:分析智慧水利的核心要素与优势,展望其在提升水资源利用效率、保障水安全方面的广阔前景

目录 引言 一、智慧水利的核心要素 1. 物联网技术 2. 大数据与云计算 3. 人工智能与机器学习 4. 移动互联网与GIS技术 5. 标准化与信息安全 二、智慧水利的优势 1. 提高水资源利用效率 2. 增强水灾害防御能力 3. 提升水环境治理水平 4. 促进水利服务智能化 三、展望…

彻底解决idea的编解码问题

一、打开idea&#xff0c;找到Setting,点击File Encoding编解码设置&#xff0c;将以下标红的三个部分全部设置为UTF-8.同理如果你的项目使用的是GBK或者其他编码格式&#xff0c;那么也设置为统一。 二、点击Java Compiler设置补齐-encoding utf-8参数 三、如果你的项目使用到…

昇思25天学习打卡营第18天|RNN实现情感分类

相关知识 情感分类 指输入一段话或句子&#xff0c;返回该段话的正向或复兴的情感分类。 text embedding 指将文本转化成向量的方法。这里的文本指词、句子、文档等文本序列。 词向量化后会将词转为二进制(独热编码)或高维实数向量&#xff0c;句子和文档向量化则将句子或文…

专题四:设计模式总览

前面三篇我们通过从一些零散的例子&#xff0c;和简单应用来模糊的感受了下设计模式在编程中的智慧&#xff0c;从现在开始正式进入设计模式介绍&#xff0c;本篇将从设计模式的7大原则、设计模式的三大类型、与23种设计模式的进行总结&#xff0c;和描述具体意义。 设计模式体…