《WebRTC权威指南》学习笔记

本篇是WebRTC的一篇学习笔记。

第1章 Web实时通信技术介绍

相关协议:SIP(RFC3261),Jabber(RFC6120),Jingle(XEP-0166),实时传输协议RTP,安全RTP(SRTP),多路复用RTP控制协议(RTCP)。

相关概念:可扩展消息现场协议(XMPP [RFC6120] 也就是Jabber)服务器,Jingle客户端,公告电话交换网PSTN。

注:这里就碰到第一个问题:如何掌握这些通信协议的问题了

下面是WebRTC的一个总览图
在这里插入图片描述
总之,WebRTC支持多中设备,多方会话。这个时候多方会话有两种方案:集中式和全网状对等连接。其中全网状的连接把混合数据的操作落在了端上,一旦与会端加多就会带来问题,不适合增加规模。集中式是把数据的混合放在服务端,这样缺点是延迟较大,但是服务器扩容比较容易,所以适合大规模人员参会。

第2章 如何使用WebRTC

建立WebRTC会话有四步:

  1. 获取本地媒体:getUserMedia
  2. 建立对等连接:RTCPeerConnection
  3. 交换媒体或数据:RTCSessionDescription
  4. 关闭连接

第3章 本地媒体

WebRTC中的媒体基本单元叫MediaStreamTrack(媒体流轨道,表示一种源返回的单一类型媒体,这个源可能是设备或者是录制内容),而一个MediaStream(媒体流)中可以有若干MediaStreamTrack。

一个媒体流轨道可以是单个立体声源,或者多声道环绕音频信号。

媒体流轨道 MediaStreamTrack的暂停有两种方式:静音(muted)和禁用(enabled)。在WebRTC中使用了不同的参数控制。

创建一个MediaStream有两种方式:请求和访问本地媒体getUserMedia();通过MediaStream构造函数将现有的对象复制过来,或者通过现有的流对象添加/删除轨道而来。

媒体的选择和控制是通过参数约束来实现的。 约束大体上分为强制约束和可选约束,而具体的约束属性值有两种,一种是枚举类型的,一类是范围的(就是有最小值和最大值限定)。

在源设备获取到媒体流之后通过处理,打包成不同的MediaStream,交给传输管道发往接收端。接收端通过解析不同的MediaStream,根据不同的ID解析到全部MediaStreamTrack,然后选择性地交由不同的播放/渲染设备。

第4章 信令

信令的标准没有确定下来,但是实践中有多个方案。

信令的作用?

  1. 在参与会话的两个端之间交换会话描述协议对象中的信息
  2. 标识和身份验证
  3. 媒体会话控制
  4. 双占用分解

信令为什么没有确立标准?

因为不同的浏览器是可以通过向同一个Web服务器请求下载同一份JS代码来使用相同的信令,这样客观上就让信令变成了一种Web服务器相关的标准,无关乎浏览器。既然没有必要,也就没有这样做的必然性了。

信令的传输方法

  1. HTTP传输
  2. WebSocket
  3. 数据通道

信令协议

标准的信令协议有SIP,Jingle等。

具体的方案:

  1. HTTP轮询
  2. WebSocket代理
  3. Google应用程序引擎通道API
  4. WebSocket SIP
  5. WebSocket Jingle,Jingle是对XMPP的扩展,又称为Jabber
  6. 数据通道专有信令
  7. 使用叠加网络

一个可运行的信令通道代码

第5章 对等媒体

WebRTC使用对等媒体流,语音、视频、数据的连接都在两个浏览器之间建立。但是由于NAT和防火墙的存在增加了这一方案的复杂性。
在这里插入图片描述

下面这种方案由于需要源浏览器发送信息到Web服务器,然后由服务器发往目标浏览器,所以对服务器压力较大。
在这里插入图片描述
采用WebRTC架构的媒体流,使用了RTCPeerConnection API,可以建立点对点的连接。这种架构对于浏览器和服务器之间的距离要求也较低。
在这里插入图片描述
WebRTC和网络地址转换(NAT)

NAT通常内置于Internet路由器或者集线器中。一个WebRTC要处理的情况如下图:

在这里插入图片描述
通过打洞技术可以有下面两种方式实现两个浏览器互联:

在这里插入图片描述
STUN服务器

这个是被称作NAT会话遍历使用工具的服务器(Session Traversal Utilities for NAT)。这种服务器有一个公网的IP地址,可以帮助遍历NAT。浏览器通过发送STUN数据包给STUN服务器获取待连接的浏览器的IP地址。

在这里插入图片描述

TURN服务器

这个是被称作中继型NAT遍历服务器(Traversal Using Relay around NAT)。这种服务器也有一个公网的IP地址,用来转发来自浏览器的数据包,或者向浏览器转发来自服务器的数据包。

在这里插入图片描述

第6章 对等连接和提议/应答协商

要建立连接的双方需要先通过协商沟通好支持哪些类型的媒体流,因为浏览器所在设备的支持能力不尽相同。具体过程如下描述:

首先,发起者针对要建立的媒体会话创建描述,以此来发起会话,此即“提议”;通过信令通道发往另一方。对方收到后予以回应,此即“应答”;应答中包含了提议的会话功能特性中,另一方能够和愿意支持的功能;并通过信令通道返回。

WebRTC使用RTCSessionDescription对象来表示提议和应答。

第7章 数据通道

WebRTC中的数据通道不是媒体交互通道,是用来绕过服务器直接交换数据的通道。相比WebSocket和HTTP传输来说,这两者只是传输一些少量的数据,数据通道可以传输流量大,时延低的数据。

创建了对等连接之后才会创建数据通道,而且只需要发起者创建一个数据通道,对端并不需要创建,这个时候就是要给单向通道,对端只是被动接收数据。

pc = new RTCPeerConnection();
dc = pc.createDataChannel("dcl");

数据通道建立之后,可以做一些配置。比如失败重传次数,重试操作最大时长,此二者互斥;还有数据送达之后顺序问题。当然也可以由原来的接收方创建第二个数据通道形成双向通道,但是有点浪费,WebRTC提供了一种方法可以将两个通道关联起来。

// 下面的代码通过设置两个id都为1,将二者绑定在一起

// 本地对等端:创建数据通道的前半部分
properties = {negotionation: true, id: 1, maxRetransmits: 3};
dc = pc.createDataChannel("", properties);

// 远程对等端:创建数据通道的后半部分	
properties = {negotionation: true, id: 1, maxRetransmits: 6};
dc = pc.createDataChannel("", properties);

第8章 W3C文档

主要介绍了一些标准API。

浏览器之间实时通信用到的API,比如核心RTCPeerConnection接口,数据API,DTMF API,统计数据API,身份API。具体可以参考 WebRTC 1.0: Real-time Communication Between Browsers

媒体捕获和流,比如getUserMedia方法,MediaStream接口,MediaStreamTrack接口。具体可以参考Media Capture and Streams

流的录制API,参考MediaStream Recording

图像捕获 MediaStream Capture Scenarios

第9章 NAT和防火墙穿透

交互式连接建立(Interactive Connectivity Establishment ICE)是一种标准穿透协议。它利用STUN和TURN服务器来帮助端点建立连接。

在这里插入图片描述
分述:
收集候选传输地址 一旦A用户要发起与B用户的连接请求,ICE代理A会收集候选地址。而ICE代理B在信令通道中,一旦收到来自A的对等连接请求的时候,也开始收集候选地址。这个候选地址有4种:

在这里插入图片描述
交换候选地址 通过信令通道进行,按照上表的顺序从上往下,优先级由高到低。

STUN连接检查 当代理A从代理B收到SDP应答的时候开始检查,代理B在向代理A发送了SDP应答的时候开始检查。检查会剔除一些不可能的连接对,比如IPv4和IPv6地址对。一个目的是减少执行的连接检查数量。同时,为了确保NAT映射和过滤规则不会在会话期间超时,ICE会每隔15秒通过使用中的候选项对发送连接检查。

ICE重新启动 当基地址发生变化的时候,会导致ICE重新开始第一步来收集候选项。这个技术点还在优化中……

相关协议:STUNTURNSIP

第10章 协议

与WebRTC相关的重要协议有:

在这里插入图片描述

这些协议内容都可以在IETF Document中搜索。

WebRTC协议

在这里插入图片描述

第11章 IETF文档

在这里插入图片描述

第12章 与IETF相关的RFC文档

实时传输协议:
在这里插入图片描述
会话描述协议
在这里插入图片描述
NAT遍历协议
在这里插入图片描述
编解码器
在这里插入图片描述

第13章 安全和隐私

【略】

第14章 实现和应用

目前主流的浏览器中只有Safari,Chrome,Opera支持。

另外,附加一条公司的招聘链接,考虑的小伙伴可以私信我:

请添加图片描述
请添加图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: WebRTC(Web实时通信)是一种开放的Web标准,它提供了浏览器之间实时音视频通信的能力。目前,有一本名为《WebRTC权威指南》的PDF书籍提供了详细的介绍和指导。 《WebRTC权威指南》这本书是一本权威指南,它涵盖了WebRTC技术的方方面面。首先,它解释了WebRTC在Web开发中的作用和优势。WebRTC不需要插件,可以直接在浏览器中进行音视频通信,这使得开发者能够轻松构建实时通信应用程序。该书还详细介绍了WebRTC的架构和工作原理,说明了如何建立点对点连接,传输媒体数据等。 此外,书中还着重介绍了WebRTC的安全性和隐私保护。由于WebRTC利用了浏览器的媒体功能,因此需要采取一系列安全措施确保用户的隐私和数据安全。这本书提供了一些最佳实践和技巧,帮助开发者构建安全可靠的WebRTC应用程序。 《WebRTC权威指南》也包含了大量的示例代码和案例研究,帮助读者理解如何在实际项目中应用WebRTC。对于初学者来说,这本书提供了逐步学习的路径和实践经验,可以帮助他们迅速入门。 总结来说,《WebRTC权威指南》是一本全面介绍WebRTC技术的权威指南。它提供了丰富的知识和实践经验,适用于所有对WebRTC感兴趣的读者,无论是初学者还是有经验的开发者。通过阅读这本书,读者可以快速了解WebRTC的基本概念和原理,并能够应用于实际项目中。 ### 回答2: WebRTC是一项开放源代码的实时通信技术,用于在浏览器之间,以及浏览器与移动应用程序之间传输音频、视频和数据。在WebRTC开发中,一本权威指南PDF是非常有价值的资源。 该指南涵盖了WebRTC的基本概念、原理和架构,为读者提供了全面的了解与学习这一技术所需的知识。它详细介绍了WebRTC的工作原理,包括信令、媒体传输和网络协议等方面的内容。 此外,该指南还提供了实际案例和示例代码,以帮助读者更好地理解和应用WebRTC。它解释了如何创建一个简单的WebRTC应用程序,并介绍了各种功能和API,如音视频捕获、传输、编解码和处理等。 权威指南PDF还包含了一些高级话题,如安全性、性能优化和扩展性等方面的内容。这些内容对于开发者来说是非常有用的,因为他们可以学习和了解如何在实际项目中应用WebRTC,提高应用程序的质量和性能。 总之,权威指南PDF是一本对于学习和应用WebRTC非常有帮助的资源。无论是初学者还是有经验的开发者,都可以从中获取所需的信息和指导,以构建出优质的实时通信应用程序。 ### 回答3: 关于"WebRTC权威指南 PDF",通常指的是一本介绍WebRTC(Web实时通信)技术的权威指南书籍的PDF版本。 WebRTC是一种开放标准的实时通信技术,它允许在Web浏览器中直接进行实时音频、视频和数据传输,无需任何插件或额外的软件。这种技术使得开发者能够构建出强大的、基于浏览器的实时通信应用程序,例如视频会议、远程协作和实时游戏等。 "WebRTC权威指南"是一本详尽介绍WebRTC技术的书籍,其中包含了关于WebRTC的基本概念、架构、实时通信协议、开发工具以及实现实时音视频传输的技术细节等内容。该书籍可以作为学习和理解WebRTC技术的权威参考资料。 "WebRTC权威指南 PDF"指的是该书籍的PDF电子版本,它可以在计算机、平板电脑和手机等设备上进行阅读和使用。通过PDF格式,读者可以更方便地阅读和检索书籍的内容,同时还可以进行书签、标注和搜索等功能,增强了阅读体验。 总之,"WebRTC权威指南 PDF"是一本介绍WebRTC技术的权威指南书籍的电子版本,它提供了全面的WebRTC技术信息,适用于对WebRTC感兴趣的开发者和研究者,以及希望利用WebRTC构建实时通信应用程序的人士。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值