1.1、webrtc的历史和现状
1.1、webrtc的历史和现状
本书目录
温馨提示:本书的内容,将按照顺序一一展开,上篇文章阐述本书的诞生的原因,推荐阅读方式等。 如果你还没有阅读上一篇文章(必读前言—— 作者的独白),我建议返回阅读。
webrtc的前世今生
在本书的的“必读前言”中,简单的阐述了webrtc是什么? 本篇内容,着重阐述的webrtc的历史背景和应用情况,希望给正在学习或者正考虑学习webrtc的小伙伴一些参考。有部分的读者可能和我一样,历过移动网络的时代变迁,1G/2G 时代,拨打电话,千里传音,天边之外皆可近在咫尺;3G时代,打开QQ,天涯若比邻,“我的世界需要你无时无刻的笑靥如花”不仅是是童话里的浪漫了;4G时代,抖音快手、贴吧饭否、百花齐放,思想与表达在互联网上“狂欢”;5G时代,仿佛时空穿越,万物互联。
在通信基础设施逐渐完备的时代,音视频通信的应用也是达到一个新的热度,截止到2017年,微信的月人均通话时长达到了139分钟, 月人均通话达到了19次;于此同时,各类实时通信类应用层出不穷,如互动直播类、狼人杀、线上答题。而反观三大运营商的运营统计数据,传统的通话量却出现了负增长,实时通信的需求越发的强烈。这些改变得益于更快速的通信网络、更快的智能手机,更加智能的操作系统。
说起实时通信技术,不得不谈谷歌的webrtc项目,在webrtc发布之前,开发实时音视频应用的成本是非常昂贵,需要考虑的技术问题很多,如音视频的编解码问题,数据传输问题,延时、丢包、抖动、回音的处理和消除等,如果要兼容浏览器端的实时音视频通信,还需要额外安装插件。当然,可以考虑使用成熟的第三方技术,比如当时世界顶级的互联网音视频方案提供商GIPS(Global IP Sound),支付相应的费用就行。很多知名的应用或者软件服务商也都在用GIPS,如Yahoo,AOL,IBM,SKYPE,QQ等,在这个年代能开发出较好兼容性的实时音视频应用,门槛较高。
2011年,谷歌以6820万美元收购GIPS。当然谷歌不光收购了GIPS,还收购了On2,得到了VPx系列视频编解码器。于是,webrtc项目诞生,融合了GIPS的音视频引擎、VPx视频编解码器,P2P穿洞技术等,随后将其开源。webrtc,全称Web Real Time Communication,从web一词可以看出,这一技术最初就是为了在浏览器端扩展实时音视频通信的能力而准备的。
经历了6年的时间,2017 年 11 月 2 日 ,W3C WebRTC 1.0 草案正式定稿,webrtc加入W3C大家族。随后,各大浏览器厂商跟紧支持。根据全球领先的技术研究和咨询公司——Technavio的关于“全球网络实时通信(webrtc)市场”的研究报显示,自2017-2021年期间,全球网络实时通信(webrtc)市场,将以34.37%的年均复合增长率增长,可谓十分的迅速。下图展示了各浏览器版本对webrtc相关技术的支持情况,如图1.1.1所示。

图 1.1.1 (各浏览器版本对webrtc相关技术的支持统计,截图来自https://caniuse.com/#search=webrtc)
webrtc项目的愿景:实时通信应用web化,让webrtc成为互联网音视频实时通信的规范,让开发者基于此规范快速开发出安全、可靠的应用。 谷歌的这项举动,加速了全世界实时通信技术的进程。
2019年是5G的元年,我写文章是在2020年初,我觉在这个时间点写这本书,非常适宜。5G网络,提高了通信的速率,也带来了各种机会。在实时音视频通信领域,5G就是一片沃土,滋养出大量的应用,webrtc技术将逐渐成为了行业的规范。
如今,webrtc,虽然还以以“web”冠名,但并不限于仅在浏览器中使用,还可以在桌面端、移动端(Android&IOS)、IoT(物联网设备)使用,可谓只要遵循webrtc规范即可。 我们来看看如今,国内基于此项技术研发的解决方案。
webrtc在国内应用
国内基于webrtc的实时音视频解决方案提供商也比较多,如腾讯云、声网、即构科技、融云......(这里仅列举部分)。 实时音视频的典型应用场景,如在线教育、视频客服、互动游艺、企业办公、在线招聘、在线医疗等。这里需要注意,webrtc的应用和传统的成千上万人的直播应用是不一样的,首先,万人直播,通常观看人数多(依赖CDN的分发能力),对实时性要求不高,单向推流(不考虑连麦的情况);实时音视频对实时性要求高,双向通信(一对一或者一对多互动),数据传输一般是p2p直连或者turn服务中转。在线教育、视频客服、视频会议等都要求有实时互动的需求,且人数不是很多,适合使用webrtc。
未来的展望
未来的音视频实时通信,肯定是现代化生产活动中极其重要的板块,从今年各大浏览器厂商对webrtc的支持情况来看,webrtc在实时音视频板块中不可或缺。随着 WebRTC 1.0 标准的定稿,各大浏览器的 WebRTC 接口已经基本得到统一。谷歌也推出一系列测试工具,帮助开发者测试 WebRTC 应用在 Web 端、Native 端的互通性。同时,各浏览器也在持续不断地修复问题,对不同硬件设备以及系统平台进行适配,保证 WebRTC 能稳定运行于除主流机型、系统版本以外,更多的设备上。
webrtc前途一片大好,和我一起开启你的webrtc之旅吧。
最后,附上本书指定交流微信公众号——“晨叔周刊”,回复:“webtrc”,即可进入本书讨论的圆桌。小伙伴有任何问题,进入圆桌讨论吧。
上一篇:必读前言—— 作者的独白
下一篇:1.2、初识webrtc
参考文档:https://baijiahao.baidu.com/s?id=1602315500666697354&wfr=spider&for=pc
1.1、webrtc的历史和现状的更多相关文章
- Linux入门(历史与现状)
Linux 入门之 历史与现状 Linux是一个计算机的操作系统,与windows类似,是一款系统软件.操作系统首先是一个计算机程序,使用计算机语言开发,比如C语言.VC语言.是计算机硬件和应用软 ...
- iPhone屏幕适配,历史及现状(http://hjcapple.github.io/2014/10/10/iphone-screen.html)
iPhone屏幕适配,历史及现状 初代iPhone 2007年,初代iPhone发布,屏幕的宽高是320×480像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone 3GS的也保持不变 ...
- arm处理器的历史及现状
1 arm处理器的发展历史 arm1 arm2 arm3 arm6 arm7 arm9 arm11 arm cortex 2 arm处理器现状 arm cortex A a即application,即 ...
- 【入门】广电行业DNS、DHCP解决方案详解(一)——历史及现状篇
广电发展历史 单项网络 双向网络 智能网络 广电网络现状 广电网络典型特征 接入技术混杂 承载业务多样化 业务终端错综复杂 其他 网络现状模型 总结 广电发展历史 广电就是广播电视,广电发展可以分为三 ...
- k8s极简史:K8s多集群技术发展的历史、现状与未来
引子 随着云原生技术的普及,越来越多的企业使用Kubernetes来管理应用,并且集群规模也呈爆发式增长,企业也亟需应对随集群规模增长而带来的各种挑战.同时,为了更好地提供高可用.弹性伸缩的应用,企业 ...
- TSN 时间敏感网络:缘起 (TSN历史与现状)
前言 随着工业物联网(IIoT)的兴起和工业4.0的提出,越来越多的设计师.工程师和最终用户关注时间敏感网络(Time-Sensitive Networking,下简称为TSN).TSN为以太网提供确 ...
- C++的历史与现状
在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后 ...
- 1.2、初识WebRTC
文章导读:本节内容,如标题所讲,“初识webrtc”.读完之后,我需要你能清楚三个问题:第一.真正的搞明白实时音视频在生产环境中的真实应用以及前景分析:第二.开发一个符合商业标准的实时音视频应用需要解 ...
- [转载]iOS 10 UserNotifications 框架解析
活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...
随机推荐
- 【网站】网站不能在QQ,微信中访问,申诉办法
使用这个网站申诉即可 https://appeal.anquan.org/
- K3修改字段名
在K3的BOS中,自定义字段之后我们往往会修改字段名,便于记忆和理解,但是修改字段名之后,只是数据库中的字段名被修改了,BOS中的字段标识并没有被修改,可以通过以下语句将标识和字段名改成一致. sel ...
- Form表单利用Jquery Validate验证以及ajax提交
#表单利用Jquery验证验证以及ajax提交 概述>详细讲解表单利用Jquery >验证验证以及ajax提交的过程,以及Validate的自定义提示语,非空判断,输入字段的远程ajax验 ...
- 13-Java-JSP知识梳理
一.JSP了解 JSP(java server pages,服务器页面),可理解为HTML+ Java = = JSP,它可生成动态的HTML(拼标签).是以.jsp为后缀的文件, 内容是以标签为主体 ...
- 208. 实现 Trie (前缀树)
主要是记录一下这个数据结构. 比如这个trie树,包含三个单词:sea,sells,she. 代码: class Trie { bool isWord; vector<Trie*> chi ...
- try/catch/finally 语句
定义和用法 try/catch/finally 语句用于处理代码中可能出现的错误信息. 错误可能是语法错误,通常是程序员造成的编码错误或错别字.也 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异 ...
- spring bean 的作用域
spring bean 的作用域: 1.单例(singleton):默认是单例模式,也就是说不管给定的bean被注入到其他bean多少次,注入的都是同一个实例. 2.原型(prototype):每次注 ...
- 微信h5游戏如何在微信中做好域名防封 防屏蔽的 工作
最近微信开始大封杀,不知道原因是什么,可能是因为违规网站太多了吧,很多网站都被错杀了,下面我们聊一下怎样才能避免域名被封杀呢. 在各种不同的域名当中,能够做出了更适合的选择,这些对于大家域名防封_域名 ...
- Flink架构(二)- Flink中的数据传输
2. Flink中的数据传输 在一个运行的application中,它的tasks在持续交换数据.TaskManager负责做数据传输.TaskManager的网络组件首先从缓冲buffer中收集re ...
- javaFx中Image的路径问题
网络图像文件前面加“http://”,而本地文件则要加“file:”.将源代码改为: Image image = new Image("file:image/qq.jpg"); I ...