【WebRTC技术专题】未来可期,WebRTC的诞生发展的概述介绍(1)

news2025/1/23 11:18:15

近几年实时音视频通信应用呈现出了大爆发的趋势。在这些实时通信技术的背后,有一项不得不提的技术 ——WebRTC

前言背景

2021年1月26日,W3C(万维网联盟)IETF (互联网工程任务组) 同时宣布 WebRTC(Web Real-Time Communications,Web 实时通信) 现发布为正式标准,将音视频通信带到Web上任何地方这代表着我们未来不会在依赖某些软件或者介质去访问和处理音视频了,映衬着5G的时代,这将会是如虎添翼。

  • WebRTC 成为 W3C 为应用程序开发定义开放 Web 平台的众多标准之一,具有前所未有的潜力

  • 其让开发人员能够构建丰富的交互体验,由巨大的数据存储提供动力,可用于任何设备以及环境

数据汇报

据调研机构GrandViewReseach 的报告显示,预计2025年全球 WebRTC 市场规模将达到 210.23 亿美元,相较 2019 年 23 亿美元的市场规模,5 年的复合年增长率为 43.6%。

本文目标

本系列内容将和大家一起来探讨和介绍的目的是:

  1. WebRTC的概念是什么?WebRTC的发展历程和涉足领域有哪些?

  2. WebRTC的目标和愿景?

  3. 为什么WebRTC受到开发者及企业的青睐 ?

  4. 未来 WebRTC 又将如何发展?

以及声网 Agora是怎样基于 WebRTC 进行二次开发,又将如何支持 WebRTC NV 版本的?

WebRTC发展历程

  • 2010年,实时通信只能使用专有软件、插件或Adobe Flash 进行实时通信;

  • 2013 年,Chrome和Firefox之间进行了首次跨浏览器视频通话;

  • 2014 年,第一次跨浏览器数据传输得以实现,通过客户端进行实时通信打开了一个新兴的趋势。

  • 2021年,WebRTC的诞生,我们每天都在 Chrome,Mozilla Firefox,Opera,Safari,Edge,iOS 和 Android 的实时互动场景中使用它。

WebRTC涉足领域

在线会议、在线教育、在线面试、在线社交、在线医疗、金融证券在线开户、智能家居等等已经成为了现代人们生活中非常熟悉的一部分,将常见的线下场景转至线上,人们足不出户便能体验上述场景。这些实时互动场景在很大程度上已经改变了我们原本的生活方式。

WebRTC概念定义

WebRTC是一个由 Google、Mozilla、Opera 等发起的开源项目,名称源自「网页即时通信」(Web Real-Time Communication)的缩写

此外,“WebRTC 在不同场景下包含不同的含义,它既可以代表 Google 开源的 WebRTC 项目,又可以代表 W3C(World Wide Web Consortium-万维网联盟) 工作组制定的 WebRTC 标准,也可以代表浏览器中的 WebRTC 接口,我们将他们统称为 WebRTC技术。”

WebRTC实现

WebRTC由Web实时通信的JavaScript API一组通信协议 构成,支持网络上的任何已连接设备成为Web上潜在的通信端点成为线上通信及协作服务的基石

  • 不难看出这项技术最开始的目标是希望为实现自由地在浏览器上进行实时音视频传输做准备的

  • 多数时候,对于开发者而言WebRTC是一套支持网页浏览器进行实时音视频对话的 W3C Javascript API,它包括了音视频的采集、编解码、网络传输、显示等功能

  • 几乎所有主流浏览器都支持 WebRTC 标准 API ,因此也让浏览器之间无插件化的音视频互通成为可能, 大大降低了音视频开发的门槛,开发者只需要调用 WebRTC API 即可快速构建出音视频应用

至此,WebRTC的使用已经超越了最初的核心设计,即在浏览器和其他生态(例如本地应用)中支持视频会议和协作系统。现在需要更多的特性和优化。

WebRTC解决的问题

在没有WebRTC前,对于开发者而言RTC通信的难点主要来自于互联网网络复杂、延时敏感、实时音视频流畅度及清晰度较低以及运营成本较高等。

WebRTC的使命是使丰富、高质量的RTC应用程序能够为浏览器、移动平台和 IoT设备开发,并允许所有人通过一组通用协议进行通信。

  • 但这些问题在 WebRTC 出现后都得到了较好的解决:

    1. 屏蔽了网络模型的差异性

      • 不同的NAT、防火墙对媒体 P2P 的建立带来了很大的挑战。而WebRTC 的出现为浏览器提供了端到端的直接通信,使开发者可以轻松地实现这种连接。同时,WebRTC 里面有 P2P 打洞的开源项目 libjingle ,支持 STUN,TURN 等协议
    2. 提高传输效率以及降低损耗

      • 在早期的RTC技术中,TCP(Transmission Control Protocol-传输控制协议)由于自身机制的缺陷,只能使用 UDP 传输,但这需要开发人员解决重传、乱序等问题。而WebRTC则提供了 NACK,FEC 技术,不再需要通过服务器进行路由,减少了延迟和带宽消耗。直接通信可提高数据传输和文件共享的速度
    3. 提高流畅性(优化算法)

      • 互联网网络不稳定,特别一些小运营商,在流量使用高峰期往往无法保证足够的带宽。需要一套自适应的算法来应对网络拥塞、平滑发送等问题。WebRTC 中提供了 TCC + SVC + PACER + JitterBuffer 技术支持。
    4. 语音清晰度优化

      • 由于终端设备和环境复杂,会有噪声、回声的干扰,这时候 WebRTC 提供了 3A 算法 + NetEQ,让实时环境中的声音处理及互动体验得到了大幅的提升
    5. 提高移植性(以及标准化)

      • 对于开发人员或企业而言,使用WebRTC的过程中只需要下载兼容 WebRTC的浏览器并使用,不需要额外的软件、插件或持续的服务器的参与就可以将音视频应用轻松嵌入到任何网站中,并通过 Internet 进行连接,大大节省了开发时间和成本
      • 目前主流的浏览器如 Microsoft Edge、Google Chrome、Mozilla Firefox、Safari、Safari、Opera、Vivaldi 等都已支持 WebRTC
    6. 安全性加密机制

      • WebRTC作为一项开源技术,可在任何Web浏览器上免费使用,并且不受插件限制。在安全方面,WebRTC 同样做了优化设计:所有 WebRTC 媒体数据都必须经过加密

由于WebRTC并非是一个插件,也不用安装别的插件,因此所有应用都可以在浏览器的沙箱中运行,并不用再额外创建新进程。

  • 也正因为如此, WebRTC 有效地阻止了恶意软件进入用户系统

  • 在任何实时通信应用程序中,数据传输的过程都有可能会增加安全风险,因此加密是WebRTC的强制性功能,并在所有媒体数据上强制执行

  • WebRTC使用两种标准化的加密协议:

    • 数据报传输层安全性(DTLS)

      1. 浏览器内置标准化协议。基于传输层协议(TLP)的数据流加密;
      2. 由于DTLS使用用户数据协议(UDP),因此保留了传输的语义;
      3. 它是安全套接字层(SSL)的扩展,任何 SSL 协议均可用于保护 WebRTC 数据,从而允许端到端加密
    • 安全实时传输协议(SRTP)

      • 用于媒体流加密;
        1. 它是对实时传输协议(RTP)的扩展,该协议没有任何内置的安全性机制;
        2. 实时传输协议(RTP)提供加密、完整性保证和消息身份验证。
        3. SRTP 协议也有它的一些缺点,比如虽然它为 RTP 数据包提供加密,但不对标头进行加密

WebRTC实践案例

  • 由于WebRTC的传输是基于公共互联网,而公共互联网并不是为了实时通信而设计的,因此在网络协议、跨区域带宽、跨运营商、用户设备、网络架构、文档支持等方面都会对WebRTC的开发有牵制,从而会导致实时音视频等传输质量没办法得到有效的保证。

  • 因此,可以说如果 WebRTC 直接拿过来商用的话,几乎是不太可能的,当下普遍的解决方案是自研,根据自身的业务场景进行二次定制开发,或者更简单一点使用第三方 SDK。


W3C WebRTC工作组已经开始研究 WebRTC Next Version Use Cases,规划 WebRTC 的未来,特别是:

  • 在服务器介导的视频会议中的端到端加密

  • 即时处理音视频材料,包括通过机器学习

  • 物联网(例如 IoT 传感器维持长期连接并寻求最小功耗)

  • WebRTC工作组正对现有及新的用例进行迭代,重点理解全部需求及其优先级

未来计划

  • W3C近期开始的 WebTransport 和 Web Codecs 工作预计将低延迟流媒体的优势引入更广大的媒体和娱乐生态系统。

  • IETF WebTransport (WEBTRANS)和WebRTC Ingest Signaling over HTTPS (WISH) 工作组已经在开展工作,在 IETF 其他工作组的基础上进一步协调、拓展相关工作

  • QUIC(定义支持 WebTransport API 开发的新协议)和 HTTPBIS(指定简单、可扩展的、基于 HTTPS 的信令协议),以在广播工具和实时媒体广播网之间建立基于WebRTC 的单向视听会话

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/413907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业办公WLAN覆盖方案的设计与实现_kaic

企业办公WLAN覆盖方案的设计与实现 摘要: 无线LAN技术的快速发展已经使它在当今的数字通讯行业中变得越来越重要。它的优点包括易于部署、灵活操作、价格实惠,使它能够在不同的场景中提供支持。无线LAN技术已经被许多不同类型的人所接受,并且…

linux下使用lftp的小结

lftp的功能比较强大,相比原来用ftp,方便了很多。 1、登陆: lftp ftp://yournamesite pwd:***** 或 open ftp://yournamesite 2、基本操作(转) lftp使用介绍 lftp 是一个功能强大的下载工具,它支持访问…

React-Native 创建App项目

# React-Native 创建App项目 环境搭建 概述 RN的官方网站百度谷歌 安装环境介绍 操作系统:win10系统手机:安卓手机真机一部或夜神模拟器必须安装的依赖有:Node,JDK,Yarn,Android SDK,Python2 Node的安装 先到官网去下载node版本&#…

Cypress触摸芯片自己做的demo 代码

1.前言 (1)cyprees芯片主要是可以做一些触摸的检测并实现一些IO输出,使用的工具psoc creater (2)psoc creater 可以i直接通过GUI的方式配置一些GPIO的状态以及集成的功能模块,编译后,我们可直接…

基于深度学习的花卉识别

1、数据集 春天来了,我在公园的小道漫步,看着公园遍野的花朵,看起来真让人心旷神怡,一周工作带来的疲惫感顿时一扫而光。难得一个糙汉子有闲情逸致俯身欣赏这些花朵儿,然而令人尴尬的是,我一朵都也不认识。…

2022蓝桥杯省赛——砍竹子

问题描述 这天, 小明在砍竹子, 他面前有 n 棵竹子排成一排,一开始第 i 棵竹子的 高度为 hi​。 他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为 H&#xff0…

UNIX环境高级编程——系统数据文件和信息

6.1 引言 UNIX系统的正常运行需要使用大量与系统有关的数据文件,这些文件都是ASCII文本文件,并且使用标准I/O库读这些文件。 6.2 口令文件 UNIX口令文件是/etc/passwd,每一行包含下图中的各字段,字段之间用冒号分隔&#xff0c…

除了Jira、禅道还有哪些更好的敏捷开发过程管理平台?

无论是从国内的敏捷调研开发调研报告还是从国外的敏捷状态调查,工具支持一直是决定敏捷成功的关键因素之一,它们可以帮助团队提高软件开发的效率、质量、协作和满意度。选择合适的敏捷开发管理工具,并正确地使用它们,是每个敏捷团…

JAVA SMART系统-系统框架设计与开发

SMART系统是一个新型智能在线考试信息管理系统,该系统主要实现了学生在线考试与评估以及教师对学生在线考试信息的管理和维护。本文按照SMART系统的非功能性需求,基于Struts、Spring、Hibernate三种开源技术,构建了一个具有良好的可扩展性、可…

英文译中文翻译-中文英文翻译在线翻译

如果您需要在线翻译英文文本为汉字,您可以使用各种在线翻译服务或应用程序。以下是一些您可以尝试的在线翻译服务: Google翻译: Google翻译是一款广受欢迎的在线翻译服务,可将英语文本翻译成汉字。只需将需要翻译的英文文本复制粘…

MFC动态库封装

1.MVC的设计模式的使用 经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就…

自动化面试题4

1、工业中常见的通信方式都有哪些,各自特点是什么? 2、对于一台新的伺服驱动器来说,需要设置哪几个方面的参数? (1)参数初始化 (2)点动测试电机旋转方向 (3)惯…

神经网络/深度学习(二)

Seq2Seq 模型 Encoder-Decoder Attention 机制 Self-Attention 自注意力机制 Transformer 摘文不一定和目录相关,但是取自该链接 1. Seq2Seq 模型详解 https://baijiahao.baidu.com/s?id1650496167914890612&wfrspider&forpc Seq2Seq 是一种循环神经网…

云原生——容器技术docker基础命令

前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏云原生专栏 📧如果文章知识点有错误的地方,请指正&…

d2l语言模型--生成小批量序列

对语言模型的数据集处理做以下汇总与总结 目录 1.k元语法 1.1一元 1.2 二元 1.3 三元 2.随机抽样 2.1各bs之间随机 2.2各bs之间连续 3.封装 1.k元语法 1.1一元 tokens d2l.tokenize(d2l.read_time_machine()) # 因为每个⽂本⾏不⼀定是⼀个句⼦或⼀个段落&#xff0…

认识C++指针

目录 前言: 1.指针未初始化的危险性 2.指针与十六进制数字 3.使用new分配内存空间 4.使用delete释放内存 5.使用new来创建动态数组 6.使用动态数组 7.指针运算 前言: 期待已久的指针篇来啦,这篇全都是有关指针的知识,喜欢…

【Matlab算法】粒子群算法求解二维线性优化问题(附MATLAB代码)

MATLAB求解二维线性优化问题前言正文函数实现可视化结果前言 二维线性优化问题指的是在二维空间中,对于一个由线性函数构成的目标函数,通过限制自变量的范围或满足特定的约束条件,寻找一个最优解(最小值或最大值)。这…

【精华】表格结构识别模型研究进展

表格结构识别模型研究进展 合合信息:表格识别与内容提炼技术理解及研发趋势 OCR之表格结构识别综述 表格识别技术综述 用于表检测和结构识别的深度学习:综述 (1)PP-Structure 速度提升11倍,一键PDF转Word PP-St…

MATLAB | 这些各种各样的花里胡哨的折线填充图咋画

这些各种各样的花里胡哨的折线填充图咋画? 折线下面填充纯色的话area函数很容易做到,但上面那些各种花里胡哨的填充图就没那么容易做到了,本期就来讲讲这些玩意都是咋画的: 事先说明,为了绘图好看本文绝大多数图像都使…

Vue3步骤条(Steps)

Vue2步骤条&#xff08;Steps&#xff09; 可自定义设置以下属性&#xff1a; 步骤数组&#xff08;steps&#xff09;&#xff0c;类型&#xff1a;Array<{title?: string, description?: string}>&#xff0c;默认 [] 当前选中的步骤&#xff0c;设置 v-model 后&a…