为了便于理解,我们来看一个最基本的三角形WebRTC架构(图4)。在这个架构中,移动电话用“浏览器M”表示,笔记本电脑用“浏览器L”表示,通过Web服务器将它们连接起来。要建立一个实时媒体通讯,两台设备需要了解彼此的媒体功能,通过交换呼叫信令控制协议实现。诸如这样的信令协议在WebRTC标准中并非事先规定,而是由开发者自行制定。在浏览器RTC会话的步骤如下:

首先,两个浏览器都从Web服务器下载了WebRTC程序(HTML5/JavaScript);

其次,两个浏览器通过Web服务器交换控制信令信息(使用嵌入式信令服务器),建立媒体功能功能互通;

最后,两个浏览器直接建立RTC媒体的音频、视频和数据通道。

WebRTC使用P2P媒体流,音频、视频和数据的连接直接通过浏览器实现。但是,浏览器却隐藏在NAT(网络地址翻译)和防火墙的后面,这增加了建立P2P媒体会话的难度。这些流程和协议,如ICE或Trickle ICE,STUN和TURN,在建立P2P媒体流都是必不可少的。

如何使用STUN协议建立一个P2P RTC媒体(如图5所示),简化版的ICE流程如下:

1.两个浏览器通过自己的公网IP地址,使用STUN协议信息和STUN服务器建立联系;

2.两个浏览器通过SDP提供/应答机制,使用呼叫控制信令消息交换它们已发现的公共IP地址(ICE候选);

3.两个浏览器执行连接检查(ICE冲孔),确保P2P可以连接;

4.建立连接后,RTC媒体会话和媒体交换就可以实现了。

但是,假如在一个高度限制的NAT或防火墙,这种直接的路径将无法建立,只能到达TURN服务器。结果是媒体通过TURN服务器分程传递(如图6所示)。

由互联网工程任务组(IETF)基于标准的可互操作的通信模型和协议栈详细地定义了WebRTC技术(参见图7),如下:

›如前所述的信令栈,并非由WebRTC实现规定,而是由开发者自行决定。在这个例子中,我们将使用SIP-over-WebSocket(SIPoWS)作为信令栈。HTTP协议用于浏览器下载HTML5/JavaScript程序内容;

NAT栈解决P2P连接问题;

媒体栈用于发送和接收RTC的音频和视频。LETF标准规定G.711和Opus作为音频/视频解码器。视频解码器尚未授权,但是H.248和VP8已经获得授权。媒体栈也用于交换RTC数据。本例中,实时信息采用消息会话中继协议(MSRP),实时会议采用二层控制协议(BFCP),实时文本服务采用T.140。

转载于:https://www.cnblogs.com/tan2016/p/5750538.html

WebRTC架构和协议栈-zz相关推荐

  1. WebRTC实时音视频技术基础:基本架构和协议栈

    概述 本文主要介绍WebRTC的架构和协议栈. 最基本的三角形WebRTC架构 为了便于理解,我们来看一个最基本的三角形WebRTC架构(见下图): 在这个架构中,移动电话用"浏览器M&qu ...

  2. WebRTC源码研究(1)WebRTC架构

    文章目录 WebRTC源码研究(1)WebRTC架构 1. WebRTC简介 2. WebRTC的能力 2.1 抓住属于WebRTC的5G时代风口 2.1.1 浏览器的支持情况 2.1.2 大厂的加入 ...

  3. 即时通讯开发之实时音视频中的基本架构和协议栈

    为了便于理解,我们来看一个最基本的三角形WebRTC架构(见下图): 在这个架构中,移动电话用"浏览器M"表示,笔记本电脑用"浏览器L"表示,通过Web服务器将 ...

  4. 七牛云徐晶:基于 WebRTC 架构的直播课堂实践

    8 月 18 日下午,在七牛云架构师实践日第三十期,七牛云教育行业产品研发总监徐晶进行了<基于 WebRTC 架构的直播课堂实践>为题的实战分享. 本文是对演讲内容的实录整理. 作者简介: ...

  5. LTE架构和协议栈概述

    文章目录 1 LTE网络架构和接口 1.1 终端 1.2 无线网络(E-UTRAN) 1.2.1 无线网络的结构 1.2.2 无线网络的功能 1.3 核心网(EPC) 1.3.1 MME 1.3.2 ...

  6. 谈谈对于企业级系统架构的理解(zz)

    在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什么是三层架构呢?它包括表现层,业务层,数据访问层:而对于一个新手来说,从抽象意义上的三层架构,逻辑上就划分为三个 ...

  7. webrtc 渲染_[WebRTC架构分析]采样率转换

    本文使用 Zhihu On VSCode 创作并发布 前言 观察 WebRTC 的源码,关于采用率转换的实现有很多,在 m68 版本中用的是基于 sinc 函数的实现.要想理解音频重采样,需要掌握一定 ...

  8. WebRTC详解-zz

    1.WebRTC目的 WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox\...) 轻易快捷开发出丰富 ...

  9. WebRTC入门与实战 --- WebRTC原理与架构

    上一篇我们对WebRTC进行了整体的介绍和学习,作为技术人员,我们学习过程中是要了解一个技术的原理的,接下来我们就来学习一下WebRTC的原理与架构,下边是官网的架构图: 架构图颜色标识说明: (1) ...

最新文章

  1. 为.Net程序集添加资源
  2. wcf http 返回图片
  3. R语言seqm_R语言seq()函数用法
  4. iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
  5. Linux mint 17中文输入法安装,改动linux mint与windows7双系统启动顺序
  6. Intellij_idea-15 常用快捷键
  7. (17/24) webpack实战技巧:生产环境和开发环境并行设置,实现来回切换
  8. git push命令入门
  9. 一文学会用 Tensorflow 搭建神经网络
  10. 联想笔记本键盘排线,联想笔记本原装键盘价格表 联想笔记本键盘如何更换
  11. 浑水摸「YY」、「侠盗」苹果和辛巴的「麦乳精」|极客一周
  12. 2022最详细最快微信聊天记录备份&导出方案
  13. 红孩儿编辑器的详细设计
  14. html调用摄像头直播,html5调用摄像头功能的实现代码
  15. AcWing 478. 侦探推理 枚举+模拟
  16. USB设备运行不正常,windows无法识别的问题
  17. abp集成abp.Dapper
  18. Java中Type接口与Class类的区别联系
  19. 【混淆系列】三问:npx、npm、cnpm、pnpm确定搞明白了?
  20. 一个大公司程序员的牢骚

热门文章

  1. java装箱与拆箱_【转】java 自动装箱与拆箱
  2. 仅需8道题轻松掌握Python Web应用开发 | Python技能树征题
  3. StackedGAN详解与实现(采用tensorflow2.x实现)
  4. wpf 执行mysql命令_WPF(.net 3.5)使用MySql.Data.dll进行mysql数据库操作
  5. Python字符串格式()
  6. python locals_Python locals()
  7. 一个有助于理解事件冒泡和事件捕获的例子
  8. 人工智能时代,技术人员应该掌握的技能
  9. 什么是接口?如何定义接口?如何实现接口?
  10. ML————朴素贝叶斯原理和SKlearn相关库