webRTC学习-基础知识

news2024/11/22 18:59:37

webRTC学习

  • 1、webRTC简介
    • 1.1什么是webRTC?
    • 1.2、作用
  • 2、webRTC通信原理
    • 2.1、媒体协商(SDP)
    • 2.2、网络协商(candidate)
      • 2.2.1、STUN
      • 2.2.2、TURN
    • 2.3、媒体协商+网络协商数据的交换通道

webRTC官网

1、webRTC简介

1.1什么是webRTC?

(Web实时通信)是一种技术,使Web应用程序和站点能够捕获和选择性地流式传输音频和/或视频媒体,以及在浏览器之间交换任意数据而无需中介。构成WebRTC的一套标准使得共享数据和执行电话会议成为可能,而无需用户安装插件或任何其他第三方软件。
webRTC是双向通信

1.2、作用

与媒体捕获和流 API 一起,它们为 Web 提供强大的多媒体功能。

  1. 支持音频和视频会议
  2. 文件交换
  3. 屏幕共享
  4. 身份管理
  5. 与旧电话系统的接口
  6. 支持发送 DTMF(按键拨号)信号

对等方之间的连接可以在不需要任何特殊驱动程序或插件的情况下建立,并且通常可以在没有任何中间服务器的情况下建立。

2、webRTC通信原理

2.1、媒体协商(SDP)

在这里插入图片描述
问题:

  1. A端视频采用VP8编码,然后发送给B端,B端怎么去解码?
  2. B端视频采用VP9编码,然后发送给A端,A端怎么去解码?
    所以要协商具体要用什么编码器(使用双方共有的编码器(H264))

Peer-A端可支持VP8、H264多种编码格式,而Pee-B端支持VP9、H264, 要保证二端部正确的编解码,最简单的办法就是取它们的交集H264
注:有一个专门的协议,称为Session Description Protocol (SDP),可用于描述上述这类信息,在WebRTC中, 参与视频通讯的双方必须先交换SDP信息,这样双方才能知根知底,而交换SDP的过程,也称为"媒体协商"。

2.2、网络协商(candidate)

彼此要了解对方的网络情况,这样才有可能找到一条相互通讯的链路。

结论:
(1)获取外网IP地址映射;
(2)通过信令服务器(signal server)交换"网络信息'

理想的网络情况是每个浏览器的电脑都是私有公网IP,可以直接进行点对点连接。
在这里插入图片描述
实际情况,我们的电脑或大或小都是在某个局域网中,需要NAT(网络地址转换)
在这里插入图片描述
在这里插入图片描述
在解决WebRTC使用过程中的上述问题的时候,我们需要用到STUN和TURN。

2.2.1、STUN

STUN (Session Traversal Utilities for NAT, NAT会话穿越应用程序)是一种网络协议,它允许位于NAT (或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一个本地端口所绑定的Internet端端口。 这些信息被用来在两个同时处于NAT路由器之后的主机之间创建UDP通信。该协议由RFC 5389定义。
这样两台电脑就可以在公网IP中进行通话。
在这里插入图片描述
使用一句话说明STUN做的事情就是:告诉我你的公网IP地址是什么。搭建STUN服务器很简单,媒体流传输是按照P2P的方式。
那么问题来了,STUN并不是每次都能成功的为需要NAT的通话设备分配IP地址的,P2P在传输媒体流时,使用的本地带宽,在多人视频通话的过程中,通话质量的好坏往往需要根据使用者本地的带宽确定。那么怎么办? TURN可以很好的解决这个问题。

2.2.2、TURN

TURN的全称为Traversal Using Relays around NAT,是STUN/RFC5389的一 个拓展,主要添加了Relay功能。如果终端在NAT之后,那么在特定的情景下,有可能使得终端无法和其对等端(peer) 进行直接的通信,这时就高要公网的服务器作为一个中继,对来往的数据进行转发。 这个转发的协议就被定义为TURN。
在这里插入图片描述
在STUN分配公网IP失败后,可以通过TURN服务器请求公网IP地址作为中继地址。这种方式的带宽由服务器端承担,在多人视频聊天的时候,本地带宽压力较小,并且,根据Google的说明,TURN协议可以使用在所有的环境中。

2.3、媒体协商+网络协商数据的交换通道

当知道两个客户端协商信息和网络信息后,怎么交换呢?是不是需要个中间商去做交换?所以我们需要一个信令服务器(Signal server)转发彼此的媒体信息和网络信息
在这里插入图片描述
如上图,我们在基于WebRTC API开发应用(APP) 时,可以将彼此的APP连接到信令服务器(Signal Server, 一般搭建在公网,或者两端都可以访问到的局域网) , 借助信令服务器,就可以实现上面提到的SDP媒体信息及Candidate网络信息交换。
信令服务器不只是交换 媒体信息sdp和网络信息candidate,比如:房间管理、人员进去房间
在这里插入图片描述

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

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

相关文章

wiblogic托管服务器 节点管理 日志文件

创建和配置托管服务器 配置托管服务器 启动托管服务器 startManagedWebLogic.cmd server1 http://localhost:7001 startManagedWebLogic.cmd server3 http://localhost:7001 配置和使用节点管理器 创建 计算机 配置机器 启动节点管理器 startNodeManager.cmd 验…

百度财报解读:营收持平净利增,“文心一言”站C位

ChatGPT之火,点燃了投资者对AI赛道的热情。 而自百度宣布生成式AI产品“文心一言”(ERNIE Bot)将于3月推出以来,这家公司一直处于市场关注的焦点。 2月22日,百度发布了2022年第四季度及全年财报。财报显示&#xff0c…

力扣79.单词搜索

文章目录力扣79.单词搜索题目描述方法一:回溯深搜力扣79.单词搜索 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序&#x…

STM32f103 CubeMX封装 led程序

本文代码使用 HAL 库。 文章目录前言一、LED 原理图二、CubeMX创建工程三、LED 相关函数1. 输出电平函数:2. 延时函数:3. 翻转电平函数:四、详细代码实验现象 :总结代码 源码:前言 从这篇文章开始,我们讲解…

6 Namespace,分组和DataID三者之间的关系

命名空间(Namespace) 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务…

python 利用装饰器实现类似于flask路由

例子1: def f1():print(1111)def f2():print(2222)if __name__ __main__:print(33)打印结果: 33 在例子1中,f1() 与f2() 都没有被调用,只执行了print(33) f1与f2,是没有被调用的,但是如果f1 和 f2 上面…

R统计绘图 | 物种组成堆叠面积图(绝对/相对丰度,ggalluvial)

一、数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据。此数据为虚构,可用于练习,请不要作他用。 # 1.1 设置工作路径 #knitr::opts_knit$set(root.dir"D:\\EnvStat\\PCA")…

pyhon笔记——Anaconda安装

一、简介 Anaconda包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas等 Miniconda包括Conda、Python conda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之…

教你如何搭建培训机构-学员管理系统,demo可分享

1、简介1.1、案例简介本文将介绍,如何搭建培训机构-学员管理。1.2、应用场景学员信息报表展示所有正式学员信息,可对学员进行分配班级、转课、续课、扩科、退课、阶段测评等操作。2、设置方法2.1、表单搭建1)新建表单【学员】,字段…

扬帆优配|翻倍牛股“高台跳水”,一度跌停,啥情况

2月23日上午,A股商场窄幅震荡,上证指数上午收盘涨0.07%,煤炭、电力设备等板块领涨。 总的来看,A股商场上午整体体现安静,不过仍有个股大幅动摇,比如前期翻倍热门股汉王科技盘中“高台跳水”,一…

mysql间隙锁

首先我们这里有一个表t,其中的数据如下图所示 注意哈 update由于操作的最新的值,所以是当前读! 另外一个事务插入 8的时候发生锁 而我对id为10的数据进行更新,却不会被锁住 分析:在执行当前读时,由于id7不存…

从0开始写Vue项目-Vue实现数据渲染和数据的增删改查

从0开始写Vue项目-环境和项目搭建_慕言要努力的博客-CSDN博客从0开始写Vue项目-Vue2集成Element-ui和后台主体框架搭建_慕言要努力的博客-CSDN博客从0开始写Vue项目-Vue页面主体布局和登录、注册页面_慕言要努力的博客-CSDN博客从0开始写Vue项目-SpringBoot整合Mybatis-plus实现…

element 下拉框支持搜索并输入

前言 下拉框对于开发来说再常见不过了,也是界面设计中的常用组件,在部分使用场景下,我们需要做到下拉框可以选择的同时,支持搜素和输入,以 element 的下拉框组件为例,当我们同时设置属性让其支持搜素和输入…

ssh的使用

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…

蓝桥杯:统计子矩阵(十三届省赛C++组)

前言: 这道题目是矩阵类型题目经典题型,解题大体思路是前缀和双指针扫描,在我这篇博客中 第十三届蓝桥杯省赛CB组题解_第十三届蓝桥杯b组c答案_正在黑化的KS的博客-CSDN博客 简单提了一下大致解法,今天刷题时又遇到了一个极其相似…

利用Qgis进行WRF中土地利用数据的替换

一、地形数据来源:MCD12Q1_V006 1.1数据介绍: MODIS三级数据土地覆盖类型产品(Land Cover data)是根据一年的Terra和Aqua观测所得的数据经过处理,描述土地覆盖的类型,分辨率为500m。该土地覆盖数据集中包…

jdk、jre、jvm、javase、javaee

JDK Java开发工具包(Java Development Kit)。 开发者使用,里面除了JRE之外还包含java工具。 javac Java源程序编译器,将Java源代码转换成字节码。java Java解释器,直接从字节码文件,又称为类文件。执行Java应用程序的字节代码。…

运维必看|跨国公司几千员工稳定访问Office365,怎么实现?

【客户背景】本次分享的客户是全球传感器领域的领导者,其核心产品为电流和电压传感器,被广泛应用于驱动和焊接、可再利用能源以及电源、牵引、高精度、传统和新能源汽车等领域。 作为一家中等规模的全球化公司,该公司在北京、日本、西欧、东欧…

Spring事务管理(@Transactional使用)-官方原版

全面的事务支持是使用Spring的最令人信服的理由之一。 框架。Spring 框架为事务提供了一致的抽象 具有以下优势的管理:跨不同事务 API(如 Java)的一致编程模型 事务 API (JTA)、JDBC、Hibernate 和 Java Persistence A…

[docker]笔记-网络管理

1、docker网络原理 docker安装完成后,会在宿主机中创建一个虚拟网桥,用于容器之间和容器与外部网络的连接。虚拟网桥通常名称为docker0.可以使用ip link show命令进行查看: 在docker中,各个容器是通过这个docker0的虚拟网桥实现互…