网站首页 > 精选文章 正文
其实WebRTC并不是为直播场景而设计的,但它是基于UDP的,建立通信后,会不断以流式发送数据,所以延迟会比RTMP还要低。因此人们利用这个特性,将它用在了一些交互性较高的直播场景,如直播带货、实时语音交互等场景。
WebRTC定义
WebRTC (Web Real-Time Communications) 是 RTC 的一部分,是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流/音频流或者其他任意数据的传输。WebRTC的安全特性是其可靠性的重要组成部分,它使用SRTP安全实时传输协议(Secure Real-time Transport Protocol)对RTP数据进行加密,消息认证和完整性以及重播攻击保护。它是一个安全框架,通过加密RTP负载和支持原始认证来提供机密性。详细定义可以参考官方文档:WebRTC API - Web API | MDN。
WebRTC于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。Google于2011年6月3日宣布向开发人员开放WebRTC架构的源代码。这个源代码将根据没有专利费的BSD(伯克利软件发布)式的许可证向用户提供。WebRTC作为一个开源框架,用于在浏览器中实现实时通信。它允许在浏览器和移动应用之间直接进行音频、视频和数据共享,无需插件或额外软件。
WebRTC特点
每种技术都有它的优缺点,WebRTC也不例外。
优点
- 跨平台(Web、Windows、MacOS、Linux、iOS、Android)。
- 免费、免插件、免安装,得到主流浏览器支持。
- 强大的打洞能力,包含 STUN、ICE、TURN 的关键 NAT 和防火墙穿透技术。
缺点
- 缺乏服务器方案的设计和部署
- 音频的设备适配问题
WebRTC 的关键步骤:
- 媒体捕获:WebRTC 允许浏览器和移动应用访问用户的媒体设备(如摄像头和麦克风),以捕获音频和视频流。
- 信令:在两个对等节点(peers)能够通信之前,它们需要建立连接。信令过程涉及交换元数据和控制消息,以协商会话设置和处理网络细节。
- 对等连接:完成信令过程后,两个设备之间建立直接的对等连接。WebRTC 使用安全高效的对等连接协议在它们之间传输音频、视频和数据流。
- 编解码器和加密:WebRTC 支持多种音频和视频编解码器,以高效编码和传输媒体流。此外,它还使用加密技术来保护对等节点之间的通信,确保隐私和数据完整性。
- NAT 和防火墙穿越:WebRTC 设计用于跨越不同网络并处理网络地址转换器(NAT)和防火墙。它使用交互式连接建立技术来发现和建立直接通信路径。
- 数据通道:除了音频和视频流,WebRTC 还包括一个数据通道,允许对等节点直接交换非媒体数据,实现实时数据共享。
与其它协议比较
特性 | WebRTC | SRT | RTMP | RTSP |
主要用途 | 实时通信 | 可靠、低延迟流媒体 | 媒体流媒体(直播) | IP 摄像头流媒体 |
传输协议 | UDP(主要) | UDP(主要) | TCP | TCP(主要),UDP 用于控制 |
延迟 | 非常低(为实时通信设计) | 低(可配置) | 中等 | 中等 |
复杂性 | 高(信令,NAT 穿越) | 中(专注于可靠性) | 比WebRTC 简单 | 比 WebRTC 简单 |
浏览器支持 | 原生支持 | 需要插件或应用 | 无直接浏览器支持 | 需要媒体播放器/插件 |
防火墙穿越 | 需要 STUN/TURN 服务器 | 比 WebRTC 容易(基于 UDP) | 需要防火墙修改 | 需要防火墙修改 |
安全性 | 内置 DTLS 加密 | 可以被加密 | 有限 | 有限 |
自适应比特率 | 是 | 有限 | 有限 | 有限 |
可扩展性 | 有挑战 | 容易扩展 | 中 | 中 |
P2P通信 | 是 | 否 | 否 | 否 |
总结
WebRTC实现了基于网页的视频会议,实现标准是Web Hypertext Application Technology Working Group (WHATWG) 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。它的最终目的主要是让Web开发者能够基于浏览器轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,也无需关注多媒体的数字信号处理过程。WebRTC还希望能够建立一个多互联网浏览器间健壮的实时通信的平台,形成开发者与浏览器厂商良好的生态环境。同时,Google也希望和致力于让WebRTC的技术成为HTML5标准之一,可见Google布局之深远。
- 上一篇: 云服务器搭建coturn不能正常使用的问题
- 下一篇: NAT穿透的工作原理
猜你喜欢
- 2025-05-28 OvenMediaEngine部署全攻略:打造你的实时媒体服务器
- 2025-05-28 为何强烈推荐用 FilePizza 做 P2P 文件传输?
- 2025-05-28 关于UEPlus for HTML5、UEPlus for Pixel Streaming的问题解答
- 2025-05-28 NAT穿透的工作原理
- 2025-05-28 云服务器搭建coturn不能正常使用的问题
- 2025-05-28 计划将自己写的视频会议系统架构写一下
- 2025-05-28 WebRTC 入门教程:WebRTC信令控制与STUN/TURN服务器搭建
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)