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 ...
随机推荐
- 题解 【Codeforces988E】Divisibility by 25
本题是数论好题! 首先我们需要了解一个关于数论的性质: 一个数只要后两位能被25(或4)整除,这个数就能被25(或4)整除. 同理,后三位:(或8).后四位:(或16)亦是如此. 所以,我们只需要判断 ...
- Jquery change方法
jQuery 事件 - change() 方法 当输入域发生变化时改变其颜色: $(".field").change(function(){ $(this).css("b ...
- 【Python】输出12个星座
原理:利用Unicode编码 for i in range(12): print(chr(9800+i),end="")
- 打表法fffff
打表法: 打表前先运行一下 看一看速度 优化: O3 #pragma GCC optimize(3,"Ofast","inline") O2 #pragma ...
- visual env VS conda environment of python
1. There's two types of python environment in pycharm: virtualenv Environment conda environment For ...
- 7.log4j
Log4j:日志工厂的一部分(使用起来比较麻烦) 1.要想使用外部类,得先导包 pom.xml <dependency> <groupId>log4j</groupId& ...
- 服务端捡起或丢弃指定物品ID触发详解
传奇服务端捡起或丢弃指定物品ID触发详解: @PickUpItemsX X是物品数据库中对应的IDX@DropItemsX X是物品数据库中对应的IDX@H.PickUpItemsX X是物品数据库中 ...
- CentOS根目录下各目录介绍
bin :存放普通用户可执行的指令,即使在单用户模式下也能够执行处理 boot :开机引导目录,包括Linux内核文件与开机所需要的文件 dev :设备目录,所有的硬件设备及周边均放置在这个设备目录中 ...
- instGroup/constraint/Gcell/busguide/netgroup/Bump
1. instGroup Instance group.中文名例化单元组.Instance group可以用来group一些instances, 在做placement时,如果你希望一些instanc ...
- 微信公众号获取access_token
一般我们在进行微信公众号开发的时候,都需要用到access_token,但是具体的获取及其使用方式如何呢?下面展示一种获取的方式(具体的微信公众号申请和配置,请参考开放文档,具体在这里就不详细说明了) ...