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

webRTC学习-基础知识

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.lryc.cn/news/17073.html

相关文章:

  • MySQL数据库——JDBC编程
  • 【面向小白】你见过这样讲解队列的吗?(阅此文可学会用纯C手撕一个队列)
  • [element plus] 对话框组件再封装使用 - vue
  • Markdown基本语法简介
  • 分布式服务的接口幂等性如何设计
  • 视频流截取保存到本地路径(打包jar包CMD运行)
  • mysql索引失效的几种情况
  • Windows下载安装Redis的详细步骤
  • 【蓝桥杯每日一题】差分算法
  • MyBatis Plus 数据库字段加密处理
  • openpose在win下环境配置
  • 【剑指offer-C++】JZ16:数值的整数次方
  • 了解Axios及其运用方式
  • 【LeetCode】剑指 Offer(7)
  • Python:try except 异常处理整理
  • Redis Lua脚本的详细介绍以及使用入门
  • synchronized和ReentrantLock有什么区别呢?
  • SVHN数据集下载及使用方法
  • 产业安全公开课:2023年DDoS攻击趋势研判与企业防护新思路
  • Docker 容器命令 和安装各种镜像环境
  • 【数据结构】顺序表的深度剖析
  • 当面试官问“你的SQL能力怎么样”时,怎么回答才不会掉进应聘陷阱?
  • AI作画—中国画之山水画
  • Java:Java与Python — 编码大战
  • 山东专精特新各地市扶持政策
  • 持续事务管理过程中的事件驱动
  • 【手把手一起学习】(三) Altium Designer 20 原理图库添加元件
  • 设计模式-行为型模式:观察者模式
  • Springboot 为了偷懒,我封装了一个自适配的数据单位转换工具类
  • 正则表达式