作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263
邮箱 :[email protected]
本文地址:https://blog.csdn.net/qq_28550263/article/details/131300591
【介绍】:本系列笔记总结WebRTC用到的相关技术理论及其实践。
WebRTC(Web Real-Time Communication)是一项实时通讯技术,旨在通过简单的 JavaScript API 实现实时音视频通话和 P2P(Peer-to-Peer)文件分享等功能。WebRTC 的核心是使得浏览器能够在不需要任何插件或者第三方软件的情况下,直接进行实时通信。这使得 WebRTC 成为了一种轻量级、高性能、易于开发的实时通信解决方案。从网络技术角度上看,WebRTC 将用到多种用于 NAT 的网络协议,以此实现点对点的网络通信。
曾今实时通信领域主要依赖于专有技术和插件,这些技术在当时的网络环境下取得了一定的成功,但随着网络技术的发展和用户需求的变化,它们逐渐暴露出以下问题:
为了解决这些问题,谷歌、火狐和其他浏览器厂商开始共同推动 WebRTC 的发展。2011 年,谷歌将其收购的 Global IP Solutions(GIPS)公司的语音和视频引擎开源,并将其命名为 WebRTC。随后,W3C 和 IETF 开始分别制定 WebRTC 的 API 标准和协议标准。经过多年的发展,WebRTC 已经成为了实时通信领域的主流技术,并得到了各大浏览器厂商的广泛支持。
经过不断发展,目前 WebRTC 已经有了比较完善的技术规范(参考 1.4 WebRTC技术相关规范和文档),浏览器页普片直接支持 WebRTC 有关的API,可以在 MDN 上找到相关API 的介绍和表述:https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API。
WebRTC 的诞生和发展对于实时通信领域具有重要意义。首先,WebRTC 使得实时通信变得更加简单和易于开发。开发者只需要掌握简单的 JavaScript API,就可以实现高质量的实时音视频通话和 P2P 文件分享功能。其次,WebRTC 提高了实时通信的性能和稳定性。通过 P2P 技术,WebRTC 可以实现低延迟、高带宽的实时通信,满足各种应用场景的需求。最后,WebRTC 是一项开放的网络技术,得到了各大浏览器厂商的支持。这意味着 WebRTC 可以在各种设备和平台上运行,为实时通信的发展提供了广阔的市场空间。
总之,WebRTC 的定义和背景使其成为了一种理想的实时通信解决方案,广泛应用于在线教育、远程办公、直播互动、物联网等领域。
WebRTC 作为一种实时通信技术,具有以下显著优势:
凭借上述优势,WebRTC 已经广泛应用于各种场景,以下是一些常见的应用场景:
WebRTC 的优势使其成为实时通信领域的理想选择,广泛应用于各种场景。随着技术的不断发展,WebRTC 的应用范围将进一步扩大,为人们的生活和工作带来更多便利。
WebRTC 的基本架构包含三个主要部分:JavaScript API、浏览器内部实现和网络协议。这三个部分共同协作,使得 WebRTC 能够在浏览器中实现实时通信。下面分别介绍这三个部分的内容。
WebRTC 提供了一组 JavaScript API,使得开发者可以在网页中轻松地实现实时音视频通话和文件分享功能。这些 API 包括:
浏览器内部实现是 WebRTC 的核心部分,负责处理实时通信的底层细节。主要包括以下模块:
WebRTC 使用一系列网络协议来实现实时通信。这些协议包括:
通过这三个部分的协同工作,WebRTC 能够在浏览器中实现高效、安全的实时通信。开发者可以利用 WebRTC 提供的 JavaScript API,轻松地为网页添加实时音视频通话和文件分享功能。
博主已经为读者整理好了 WebRTC 技术相关规范文档的地址,包括之后将会使用到的网络技术的相关文档的地址,读者可以参考之
以下表格列出了与 WebRTC 技术相关的规范文档及其信息:
文档标题 | 中文标题 | 类型 | 时间 | 作者 | 地址 | 内容简介 |
---|---|---|---|---|---|---|
WebRTC 1.0: Real-time Communication Between Browsers | WebRTC 1.0: 浏览器间实时通信 | W3C Recommendation | 2021-01-26 | W3C WebRTC Working Group | 链接 | 定义了WebRTC的核心API,包括音视频通信、数据通道等 |
JSEP (JavaScript Session Establishment Protocol) | JSEP (JavaScript 会话建立协议) | IETF Draft | 2019-06-05 | J. Uberti, C. Jennings, E. Rescorla | 链接 | 描述了如何使用JavaScript协议建立WebRTC会话 |
WebRTC Data Channels | WebRTC 数据通道 | IETF Draft | 2015-01-15 | R. Jesup, S. Loreto, M. Tuexen | 链接 | 定义了WebRTC的数据通道,用于在浏览器之间传输任意数据 |
WebRTC Audio Codec and Processing Requirements | WebRTC 音频编解码器和处理要求 | IETF Draft | 2016-05-31 | C. Bran, J. Valin, A. Burman | 链接 | 列出了WebRTC音频编解码器的要求和音频处理方法 |
WebRTC Video Processing and Codec Requirements | WebRTC 视频处理和编解码器要求 | IETF Draft | 2016-11-16 | A. Burman, M. Westerlund, S. Wenger, C. Perkins | 链接 | 列出了WebRTC视频编解码器的要求和视频处理方法 |
SDP: Session Description Protocol | SDP: 会话描述协议 | IETF RFC | 2006-07-01 | M. Handley, V. Jacobson, C. Perkins | 链接 | 描述了会话描述协议的语法和语义,用于描述多媒体会话 |
RTP: A Transport Protocol for Real-Time Applications | RTP: 实时应用传输协议 | IETF RFC | 2003-07-01 | H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson | 链接 | 定义了实时传输协议,用于音视频通信的传输和同步 |
文档标题 | 中文标题 | 类型 | 时间 | 作者 | 地址 | 内容简介 |
---|---|---|---|---|---|---|
ICE: A Protocol for Network Address Translator (NAT) | Traversal ICE: 用于网络地址转换器 (NAT) 穿越的协议 | IETF RFC | 2010-04-01 | J. Rosenberg | 链接 | 定义了用于NAT穿越的交互式连接建立协议 |
STUN: Session Traversal Utilities for NAT | STUN: 用于 NAT 的会话穿越工具 | IETF RFC | 2008-10-01 | J. Rosenberg, R. Mahy, P. Matthews, D. Wing | 链接 | 定义了用于NAT穿越的会话穿越实用工具 |
TURN: Traversal Using Relays around NAT | TURN: 绕过 NAT 使用中继的穿越方法 | IETF RFC | 2010-12-01 | J. Rosenberg, R. Mahy, P. Matthews, D. Wing | 链接 | 定义了用于NAT穿越的中继协议 |