当前位置: 首页 > news >正文

webRtc概念

webRtc概念

以下的文档整理来自此链接

文档整理了一系列实现web通用接口的ECMAScript APIs ,这些接口是为了支持浏览器或者一些其他实现了实时交换协议的设备进行媒体信息和程序数据交换。

1、实现点对点通信的规范:

  • NAT穿透实现与远端节点链接比如: ICE, STUN, and TURN

  • 发送本地的tracks数据并接受来自远程节点的tracks数据

  • 可以向远程节点发送任何数据

ue4像素流建立的点对点链接是基于浏览器实现的ICE代理服务

2、点对点链接

1、概述

一个单点rtc链接实例允许应用程序与另外的一个单点rtcrtc实例建立点对点的通信,这个链接实例可以是浏览器或者其他实现了相关协议的设备,其中通信依赖于可控制的信息交换(信令通道),但是信令通道的上层实现是多样的,在浏览器中,比如说使用websocket或者 XMLHttpRequest。

ue4像素流使用websocket作为信令通道

2、配置

WebIDL中已经实现了RTCConfiguration接口,看下面的代码:

dictionary RTCConfiguration {sequence<RTCIceServer> iceServers = [];RTCIceTransportPolicy iceTransportPolicy = "all";RTCBundlePolicy bundlePolicy = "balanced";RTCRtcpMuxPolicy rtcpMuxPolicy = "require";sequence<RTCCertificate> certificates = [];[EnforceRange] octet iceCandidatePoolSize = 0;
};

上面是RTCConfiguration的接口对象,里面规定了一些值,这些值需要具体的浏览器厂商或者其他设备厂商来实现,下面跳过乏味的底层术语,开始介绍浏览器端的rtc用法。如果有兴趣可访问这里查看WebIDL接口规范

3、用法

介绍浏览器实现webrtc的接口

3.1 new RTCPeerConnection

Calling new RTCPeerConnection(configuration) creates an RTCPeerConnection object.

当调起 new RTCPeerConnection 时,会创建 RTCPeerConnection 对象。
下面是在Google控制台的打印值
在这里插入图片描述
引用一下原文:

An RTCPeerConnection object has a signaling state, a connection state,an ICE gathering state, and an ICE connection state. These are initialized when the object is created.

可以看到谷歌的实现是符合 RTCPeerConnection 规范的,在这个对象的原型上有以下方法和ICE服务交互, addIceCandidate, setConfiguration, setLocalDescription, setRemoteDescription ,close
文章最后会贴出UE4像素流是如何在谷歌浏览器中利用该对象进行与web端数据交互。

3.1.1 addIceCandidate方法

The addIceCandidate method provides a remote candidate to the ICE Agent

addIceCandidate提供了链接ICE代理的方法,当被调用时,会触发以下流程:

  1. candidate将被视为该方法的参数
  2. RTCPeerConnection 会被视为链接对象
  3. 如果candidate.candidate不是空字符串并且candidate.sdpMidcandidate.sdpMLineIndex是null,则promise会结束操作(reject)并抛出创建失败信息
  4. 返回 chaining 操作
  5. 返回 promise

可以看出addIceCandidate方法是异步操作(promise)

3.1.2 setConfiguration方法

The setConfiguration method updates the configuration of this RTCPeerConnection object

setConfiguration提供了更新 RTCPeerConnection 对象的方法,当被调用时,会触发以下流程:

  1. RTCPeerConnection如果被关闭,抛出无效设置错误
  2. 更新配置信息

该方法需要确保链接没有断开

3.1.3 setLocalDescription方法

The setLocalDescription method instructs the RTCPeerConnection to apply the supplied RTCLocalSessionDescriptionInit as the local description.

该方法会改变本地的媒体信息状态,换言之就是可能会替换正在通信的信息比如改变媒体的格式从mp4到txt,这个改变会同时在进行中的媒体信息和当前的媒体信息发生,如果有一端不支持该媒体类型就会拒绝(reject),可参考此处,setRemoteDescription用来改变远端的媒体信息状态

3.1.4 close方法

关闭链接

续更中。。。

相关文章:

webRtc概念

webRtc概念 以下的文档整理来自此链接 文档整理了一系列实现web通用接口的ECMAScript APIs &#xff0c;这些接口是为了支持浏览器或者一些其他实现了实时交换协议的设备进行媒体信息和程序数据交换。 1、实现点对点通信的规范&#xff1a; NAT穿透实现与远端节点链接比如&a…...

数据结构与算法基础(王卓)(16):KMP算法详解(代码实现)

实现代码的过程中 具体细节、问题&#xff1a; &#xff08;1&#xff09;&#xff1a;关于写Get_next函数的标题&#xff1a; 现象&#xff1a; PPT上写的是&#xff1a; void get_next(SString T, int &next[]) 然而并不能运行&#xff0c;而当我们去掉了引用符号&…...

九龙证券|盘前直接腰斩,银行巨头紧急“拔网线”!美股银行股又崩了?

见证历史了&#xff0c;又有一家银行巨子倒下&#xff1f; 美股银行股团体暴降 上一交易日暴降超60%的硅谷银行持续面对腥风血雨。盘前&#xff0c;硅谷银行跌幅超50%&#xff0c;随后&#xff0c;公司宣布盘前暂停交易&#xff0c;等待刊发消息。 而最新消息显现&#xff0c…...

接口优化常用思路

空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾&#xff0c;那么&#xff0c;从这个角度出发逆向思维来考虑程序的效率问题&#xff0c;我们就有了解决问题的第1招–以空间换时间 合理使用缓存就是一个很好的例子&#xff0c;针对一些频繁使用且不频繁变更的数据&#…...

【SpringCloud】SpringCloud面试题整理

文章目录1、什么是Spring Cloud&#xff1f;2、Spring Cloud和Dubbo的区别3、REST和RPC的区别4、SpringCloud如何实现服务的注册和发现5、什么是服务熔断和服务降级&#xff1f;6、项目中zuul常用的功能7、服务网关的作用8、ribbon和feign区别9、ribbon的负载均衡策略10、简述什…...

一些数据库知识点总结

DB2数据库&#xff1a;从数据库表中第I条记录开始检索J条记录SELECT * FROM (SELECT A.*, ROW_NUMBER() OVER() AS NFROM (SELECT * FROM table_name) AS A)WHERE N > I AND N < J;Oracle数据库&#xff1a;从数据库表中第M条记录开始检索N条记录SELECT * FROM (SELECT R…...

Python unittest 模块

一、Unittest 的几个基本概念 TestCase &#xff1a;要写的具体的测试用例TestSuite&#xff1a; 多个测试用例集合&#xff08;或测试套件/测试集&#xff09;TestLoader&#xff1a;用来加载 TestCase 到 TestSuite中的&#xff08;更通俗一点&#xff0c;就是用来把符合我们…...

Spring - Spring IoC 容器相关面试题总结

文章目录01. Spring IoC 和依赖注入是什么&#xff1f;02. Spring IoC 的优点和缺点分别是什么&#xff1f;03. Spring IoC 有什么作用和功能&#xff1f;04. Spring 依赖注入的方式&#xff1f;05. Spring 构造器注入和 setter 方法注入的区别&#xff1f;06. Spring 依赖注入…...

顺序表来喏!!!

前言&#xff1a;还记得前面的文章&#xff1a;《通讯录的实现》吗&#xff1f;通讯录的完成就借助了顺序表这种数据结构&#xff01;&#xff01;&#xff01;那么今天我们就来介绍我们的顺序表介绍顺序表前&#xff0c;我们来了解一下线性表的概念线性表&#xff1a;线性表&a…...

【H2实践】之 SpringBoot 与 H2 数据交互

一、目标 本文是【H2实践】之认识 H2&#xff0c;【H2实践】之 SpringBoot 整合的后续。前文分别介绍了 H2 及其简单使用&#xff0c;并完成了 H2 与 SpringBoot 的整合。本文将紧接 【H2实践】之 SpringBoot 整合 探索实用 SpringBoot 结合 JPA 通过 web 接口操作 H2 数据库的…...

LeetCode 424. Longest Repeating Character Replacement

LeetCode 424. Longest Repeating Character Replacement https://leetcode.com/problems/longest-repeating-character-replacement/ 题目描述 You are given a string s and an integer k. You can choose any character of the string and change it to any other upperc…...

建立自己的博客(记录-不推荐)

环境安装&#xff1a; w10系统安装 第一步&#xff1a;安装git Git 官网: https://git-scm.com/ 第二步&#xff1a;安装Node.js Node.js官网&#xff1a;https://nodejs.org/zh-cn/ 使用cmd检测&#xff1a; node -v 第三步&#xff1a;安装Hexo Hexo官网&#xff1a;htt…...

hashmap存储方式 hash碰撞及其解决方式

1.Map的存储特点 在Map这个结构中&#xff0c;数据是以键值对&#xff08;key-value&#xff09;的形式进行存储的&#xff0c;每一个存储进map的数据都是一一对应的。 创建一个Map结构可以使用new HashMap()以及new TreeMap()两种方式&#xff0c;两者之间的区别是&#xff1a…...

Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术&#xff0c;观点&#xff0c;和项目&#xff0c;并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏…...

YOLOv7 pytorch

yolov7主干部分结构图&#xff1a;yolov7主干 yolov7数据集处理代码&#xff1a;yolov7数据集处理代码 yolov7训练参数解释&#xff1a;yolov7训练参数【与本文代码有区别】 yolov7训练代码详解&#xff1a;yolov7训练代码详解 目录 训练自己的训练集 训练自己的训练集 此…...

JDK自带JVM分析工具

一、JDK自带工具盘点&#xff1a; jstat&#xff1a;性能分析-查看gc情况&#xff1b; jmap&#xff1a;内存分析-堆信息&#xff1b; jstack&#xff1a;线程分析-栈信息&#xff1b; jinfo&#xff1a;参数查看及配置&#xff1b; jstatd&#xff1a;启动jvm监控服务。它…...

IO多路复用--[select | poll | epoll | Reactor]

因为在简历上写了netty的项目&#xff0c;因此还是将网络底层的那点东西搞清楚。 首先希望明确的是&#xff0c;BIO、NIO、IO多路复用这是不同的东西&#xff0c; 我会在本文中详细讲出来。 本文参考资料&#xff1a; JAVA IO模型 IO多路复用 select poll epoll介绍 从BIO到epo…...

pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas

前言 环境&#xff1a;k8s-v1.22.17 docker-20.10.9 centos-7.9 目录前言什么是可计算资源CPU、Memory计量单位pod资源请求、限额方式pod定义requests、limits查看节点资源情况pod使用request、limits示例LimitRange限制命名空间下的pod的资源配额Qos服务质量等级资源配额管理…...

R语言基础(六):函数

R语言基础(一)&#xff1a;注释、变量 R语言基础(二)&#xff1a;常用函数 R语言基础(三)&#xff1a;运算 R语言基础(四)&#xff1a;数据类型 R语言基础(五)&#xff1a;流程控制语句 7. 函数 函数是一组完成特定功能的语句。 7.1 内置函数 R语言系统中提供许多内置函数&…...

[C++] 简单序列化

前言 序列化(Serialization) 是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间&#xff0c;对象将其当前状态写入到临时或持久性存储区。以后&#xff0c;可以通过从存储区中读取或反序列化对象的状态&#xff0c;重新创建该对象。 使用 序列化 std::array&…...

Autosar Configuration(十三)SomeIP之配置TCP/IP

本系列教程是根据实际项目开发中总结的经验所得,如发现有不对的地方,还请指正。 目录Autosar Configuration(一)Davinci Developer-工具介绍 Autosar Configuration(二)Davinci Developer-SWC配置 Autosar Configuration(三) Security之Crypto配置 Autosar Configurat…...

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其Python实现

文章目录简介UKF滤波1. 概述和流程2. Python代码第一个版本a. KF滤波b. UKF滤波第二个版本简介 上一篇文章&#xff0c;我们介绍了UKF滤波公式及其MATLAB代码。在做视觉测量的过程中&#xff0c;基于OpenCV的开发包比较多&#xff0c;因此我们将UKF的MATLAB代码转到python中&a…...

IMU 积分的误差状态空间方程推导

文章目录0. 前言1. 离散时间的IMU运动学方程2. 状态变量定义3. 补充公式4. IMU误差状态空间方程推导4.1. 旋转误差 δr^i1\delta\hat{\mathbf{r}}_{i1}δr^i1​4.2. 速度误差 δv^i1\delta\hat{\mathbf{v}}_{i1}δv^i1​4.3. 平移误差 δpi1\delta \mathbf{p}_{i1}δpi1​4.4. …...

VirtualBox的克隆与复制

快照太多&#xff0c;想整合成1个文件怎么办&#xff1f; 最近&#xff0c;我就遇到一个问题。快照太多了。比较占用空间怎么办&#xff1f; 错误做法 一开始&#xff0c;我是这么操作的&#xff0c;选中某个快照&#xff0c;然后选择删除…然后我登录虚拟机后&#xff0c;发…...

每天5分钟玩转机器学习算法:逆向概率的问题是什么?贝叶斯公式是如何解决的?

本文重点 前面我们已经知道了贝叶斯公式,以及贝叶斯公式在机器学习中的应用,那么贝叶斯公式究竟解决了一个什么样的问题呢?贝叶斯是为了解决逆向概率的问题。 正向的概率和逆向的概率 正向概率:假设袋子里面有N个白球,有M个黑球,你伸手一摸,那么问题就是你摸出黑球的概…...

游戏闲聊之游戏是怎么赚钱的

其实一般情况下不太爱写这种文章&#xff0c;简单说就一点&#xff0c;这个行业的人我惹不起。 1、外挂 所谓外挂&#xff0c;是指通过技术手段&#xff0c;提供辅助游戏的工具&#xff0c;方便玩家获得一些额外的能力&#xff1b; 这事我特意咨询过律师&#xff0c;外挂分两…...

Redis高频面试题汇总(下)

目录 1.Redis中什么是Big Key(大key) 2.Big Key会导致什么问题 3.如何发现 bigkey&#xff1f; 4.为什么redis生产环境慎用keys *命令 5.如何处理大量 key 集中过期问题 6.使用批量操作减少网络传输 7.缓存穿透 8.缓存击穿 9.缓存雪崩 10.缓存污染&#xff08;或满了…...

Windows修改Docker安装目录修改Docker镜像目录,镜像默认存储位置存放到其它盘

Windows安装Docker&#xff0c;默认是安装在C盘&#xff0c;下载镜像后会占用大量空间&#xff0c;这时需要调整镜像目录&#xff1b;场景&#xff1a;不想连服务器或者没有服务器&#xff0c;想在本地调试服务&#xff0c;该需求就非常重要。基于WSL2安装docker后&#xff0c;…...

376. 摆动序列——【Leetcode每日刷题】

376. 摆动序列 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 摆动序列 。第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如&#xff0c; [1, 7, 4, 9, 2, 5] 是一个…...

mgre实验

实验思路 1、首先根据拓扑结构合理分配IP地址&#xff0c;并对各个路由器的IP地址和R5环回接口的IP地址进行配置。 2、让私网中的边界路由器对ISP路由器做缺省路由。 3、根据实验要求&#xff0c;对需要配置不同类型认证的路由器进行认证配置&#xff0c;和需要不同封装的协议…...

企业门户网站费用/武汉seo公司排名

Mojo C 绑定 API 官方文档:https://chromium.googlesource.com/chromium/src.git//refs/heads/main/mojo/README.md 本文档是Mojo 文档的子集。 概述 Mojo C 绑定 API 利用C 系统 API提供一组更自然的原语&#xff0c;用于通过 Mojo 消息管道进行通信。结合从Mojom IDL 和绑…...

如何在服务器上关闭网站/android优化大师

错误 原因 cookie中不能使用中文名。 错误代码 // 新建名为identity的Cookie Cookie identityCookienew Cookie("identity",identity); 解决 设置编码为UTF-8 正确代码 // 新建名为identity的Cookie Cookie identityCookienew Cookie("identity",UR…...

如何登录我的wordpress/新手怎么做seo优化

开箱揭秘显示器戴尔UP3221Q到底怎么样&#xff1f;真的好吗&#xff1f;使用八个月反馈感受&#xff1f;这个戴尔UP3221Q可以的哈&#xff0c;才购的&#xff0c;显示器非常满意&#xff0c;支架做工精良&#xff0c;包装的泡沫非常厚&#xff0c;1500R的曲率沉浸感十足&#x…...

怎么做中英文网站/seo案例分析

struts2.0 hibernate oracle 分页问题 最近弄了下 struts2.0 hibernate oracle 分页问题的 从网上搜了些资料。总觉得不是很合心意。自己做了例子。 ueser.sql Sql代码 DROP TABLE "SCOTT"."T_USER" cascade constraints; DROP SEQUENCE "…...

渭南最新防疫信息/seo教程搜索引擎优化入门与进阶

什么是nosql &#xff08;Not Only Sql&#xff09; 非关系型数据库。是不同于传统的关系型数据库的 数据库管理系统的统称。 用于超大规模的数据的存储。 数据存储不需要固定模式&#xff0c;无需多余操作就可以横向扩展。 为什么用Nosql CAP定理 对于一个分布式计算系统来说&…...

科技 杭州 网站建设/色盲测试图看图技巧

作为seo新手&#xff0c;要想学好seo网站优化&#xff0c;必须要做好每个页面的关键词优化&#xff0c;如何做好页面关键词优化&#xff0c;就得必需要了解“四处一词”&#xff0c;今天搜客大伟就带大家认识下&#xff1a;seo网站优化中“四处一词”重要细节&#xff01; 首先…...