什么是WebRTC

简介: 什么是WebRTC

什么是WebRTC?

WebRTC最初是为了在网页浏览器中进行实时通信而建立的。你可以理解为,它是一个支持网页浏览器进行实时语音对话或视频对话的API。

发展由来

Google Chrome 发布后不久,其团队注意到,在进行实时通信时,网页基础设施不足。在当时,浏览器都没有默认提供人与人之间直接进行数据传输的功能,更不用说让所有浏览器都实现标准化操作。

因此 Google 开始着手创建 Web 实时通信的标准化规范,以便在通用平台上顺利进行数据传输,从而消除对第三方应用程序或插件的需求。在随后的几年里,Mozilla、Microsoft、Opera 和 Apple 都加入了该项目。

WebRTC 技术的诞生,有一个很重要的原因在于,在浏览器实现实时音视频通话,需要依赖相关插件或程序,而插件安全漏洞问题则更为关键。浏览器开发人员无法控制这些插件以及更新,因此插件带来的安全风险也相对较大。

例如,Adobe Flash 一直以来以安全性问题闹了不少负面新闻,以至于史蒂夫·乔布斯写了一封公开信,详细说明了为何 iOS 从2010年就禁止了该插件。所以,Adobe 于2015年停用了 Flash,并宣布2020年终止服务。

WebRTC的特点:

  1. 开源、免费,开发者不需要承担高昂的专利费用。
  2. 基于浏览器,不需要安装插件,只要调用就可以实现音视频互动。
  3. 被纳入了HTML5标准,主流浏览器全面支持 WebRTC。

应用场景

如今 WebRTC 已经不仅仅局限于 PC 端的网页浏览器,很多 Android、iOS 应用都已经采用了该技术。这也是为什么近几年课程直播、企业培训、社交娱乐等等领域,视频业务发展迅速。

AI、物联网已经是未来趋势,到2030年,全球预计将有5,000亿台移动互联网设备。我们需要一种快捷便利、低延迟的解决方案来实现实时音视频的传输和处理。

随着移动互联网的高速发展,AI、5G等等新兴技术的到来,结合WebRTC技术,也将衍生出更多的应用场景,改变人类的衣、食、住、行等生活方式。

了解API

我们说 WebRTC 的 RTCPeerConnection 是可以做到浏览器间(无服务)的通信。

但这里有个问题,当两个浏览器不通过服务器建立 RTCPeerConnection 时,它们怎么知道彼此的存在呢?进一步讲,它们该怎么知道对方的网络连接位置(IP/端口等)呢?支持何种编解码器?甚至于什么时候开始媒体流传输、又该什么时候结束呢?

因此在建立 WebRTC 的 RTCPeerConnection 前,必须建立️另一条通道来交这些协商信息,这些也被称为信令,这条通道成为信令通道(Signaling Channel)。

其中主要涉及 SDP(offer、answer) 会话描述协议,以及 ICE candidate 的交换。

一般会使用 websocket 通道来做信令通道,比如可以基于 socket.io 来搭建信令服务。当然业界也有很多开源且稳定成熟的信令服务方案可供选择。

在交换 SDP 后,webrtc 就开始真正的连接来传输音视频数据。这个建立连接的过程相当复杂,原因是 webrtc 既要保证高效的传输性,又要保证稳定的连通性。

相关文章
|
Java Apache
解决gradle下载慢的问题
解决gradle下载慢的问题
9431 0
解决使用-webkit-app-region后鼠标点击失败的问题
在开发中,如果我们想要实现窗口拖动的功能,可以通过给相应的元素设置 -webkit-app-region: drag 属性来实现。然而,这样做会引发一些问题,包括当前元素权级高于其他元素、无法触发鼠标相关事件以及双击全屏和还原窗口大小功能失效等。本文将介绍如何解决这些问题,实现既能拖动窗口又不影响窗口内部元素的需求。
2147 0
|
网络协议 安全 网络安全
【UDP】——为什么 UDP 数据包不能超过 512 个字节
一开始了解的是 DNS 服务使用的是 UDP 协议,后面看到 DNS 服务主要使用 UDP 协议,在少数情况(传输的数据超过 512 个字节)下也会使用 TCP 协议,因为 UDP 数据包不能超过 512 个字节。那问题来了,为什么 UDP 数据包不能超过 512 个字节呢?
4500 0
【UDP】——为什么 UDP 数据包不能超过 512 个字节
|
Web App开发 JavaScript 前端开发
WebRTC 和 RTC 有什么区别?
【10月更文挑战第25天】WebRTC是RTC的一种具体实现方式,侧重于网页端的实时通信,具有便捷性和跨平台性等特点;而RTC则是一个更广泛的概念,包括了各种不同平台和技术实现的实时通信方式,应用场景更加丰富多样。在实际应用中,需要根据具体的需求和场景选择合适的实时通信技术。
|
编解码 Dart 网络协议
Flutter如何玩转超低延迟RTSP/RTMP播放,跨平台视频流体验大升级,让你的应用秒变直播神器!
【9月更文挑战第3天】Flutter作为谷歌推出的跨平台移动UI框架,凭借高性能和丰富的生态系统广受好评。本文详细介绍如何在Flutter应用中实现低延迟的跨平台RTSP/RTMP播放,并提供具体示例代码。首先介绍了如何使用`flutter_vlc_player`播放RTSP流,然后讨论了优化视频播放以降低延迟的方法,包括调整播放器配置等。通过选用合适的播放器插件并进行优化,Flutter可在视频流播放领域提供卓越的用户体验。随着生态的发展,Flutter有望成为视频流媒体开发的首选框架。
1518 6
|
开发工具 图形学 Android开发
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
Unity与安卓丨unity报错:SDK Tools version 0.0 < 26.1.1
|
前端开发 安全 JavaScript
UniApp 中的路由守卫与拦截器:守护应用的每一步
UniApp 中的路由守卫与拦截器:守护应用的每一步
2098 4
|
存储 人工智能 开发框架
【AI大模型应用开发】【AutoGPT系列】0. AutoGPT概念及原理介绍 - Agent开发框架及ReAct方法
【AI大模型应用开发】【AutoGPT系列】0. AutoGPT概念及原理介绍 - Agent开发框架及ReAct方法
721 0
|
Web App开发 监控 网络协议
WebRTC 网络协议
WebRTC 网络技术理论与实战(二) - WebRTC 网络协议
482 0