专访赵加雨:WebRTC在网易云信的落地

去年的这个时候,在市面上公开表示使用WebRTC的公司还没几家,但2018年以来,宣布采用或支持WebRTC的公司已经越来越多。实时音视频提供商网易云信也在自研的NRTC中集成了WebRTC。在他们眼里,2017年是WebRTC的转折之年,而2018年将是WebRTC的爆发之年。InfoQ记者对网易云信CTO赵加雨进行了采访,了解了他们对WebRTC的看法。

\\

前段时间,全球领先的技术研究和咨询公司Technavio发布了题为“全球网络实时通讯(WebRTC)市场,2017-2021”的报告。报告显示,2017-2021年期间,全球网络实时通信(WebRTC)市场将以34.37%的年均复合增长率增长,增长十分迅速。增长主要来自北美、欧洲及亚太地区。

\\

这个市场增速如此快,其主要驱动因素之一就是对支持WebRTC的设备的需求不断增长。全球WebRTC市场正在快速增长,主要因为对实时通信的需求越来越高以及WebRTC设备数量的增加。通过互联网视频和语音通话功能的高需求,而不需要下载插件,这推动了市场的增长。

\\

一些网络浏览器(如Chrome、Opera和Firefox)在已在手机,电脑,智能电视和平板电脑等设备中支持WebRTC。2014年,超过10亿台设备支持WebRTC。到2016年底,数量增加到40亿。并且,截至2016年底,已有超过15亿活跃的WebRTC用户。WebRTC支持设备数量的上升是WebRTC市场日益增长的明显指标。

\\

2017年11月,WebRTC 1.0标准草案发布,同年至少有上千个WebRTC项目启动,国内国外很多大公司开始投入人力做这个方向。

\\

网易云信对WebRTC的支持

\\

网易云信是网易在云计算里面很重要的一块业务。赵加雨说,云计算发展到现在,基础的云服务已经不再是客户的刚需,或者说不再是客户的一个痛点了,云必须深入到场景中去提供更加定制化的服务。网易云信提供的是场景化的、PaaS层的云服务,包括通信能力和视频能力。其中最为代表性的技术就是他们自研的音视频框架NRTC。

\\

NRTC是在网易内部杭州研究院孵化的,本身是为整个网易集团提供音视频相关的基础技术能力,服务的产品包括网易新闻、网易云音乐以及网易游戏等。2016年9月,网易将其开放并作为标准能力向外提供服务。2017年,NRTC开始支持WebRTC。

\\

8c89c218269f6b854fd62ce6f7379c6b.png

\\

据赵加雨介绍,实时音视频研发涉及复杂、多样的技术栈,对资深的人才、网络服务资源的投入要求很高。而WebRTC为Web端的实时音视频研发提供了功能强大的技术支持,这也是他们选择支持WebRTC的原因。

\\
  • 首先,WebRTC技术内置于浏览器中,用户不需要任何插件或者软件就能直接通过浏览器来实现实时通信。对于开发者来说,在Google将WebRTC开源之前,开发浏览器之间实现通信技术是一个很困难的任务。现在,开发者使用简单的HTML标签和JavaScript API就能够实现Web端的音视频通信功能。\\t
  • 主流浏览器对WebRTC技术的支持,以及WebRTC1.0标准的技术落地让这项技术更加的成熟,WebRTC也集成了比较先进的音视频引擎和codec。由于是开源的技术,开发成本也相对较低。\\t
  • WebRTC具有强大的打洞能力。WebRTC技术包含了使用STUN、ICE、TURN、RTP-over-TCP的关键NAT和防火墙穿透技术,并支持代理。 但是,作为一项开源技术以及实验室级别的产品,WebRTC开发者依然需要基于实际应用场景和具体的业务需求,做技术难度较高的二次开发,以寻求更完善、灵活的实时通信功能的实现。所以,市场仍然需要基于WebRTC的功能更齐全、开发更便捷的工业级的实时音视频解决方案。\

接入WebRTC,对NRTC提供的帮助包括:

\\
  • 应用层面:WebRTC补充了NRTC在Web端的接入能力,NRTC可以通过WebRTC网关实现Web端实时音视频的功能。同时,WebRTC 还扩大了NRTC的使用场景,让NRTC在教育、医疗等领域得到了更加广泛的开发和应用。\\t
  • 技术层面:WebRTC是一个开源的音视频技术框架,使用了很多标准协议和方案,对于私有协议NRTC来说是一个互补。随着WebRTC的广泛应用,也促进了开发者对NRTC的关注和使用需求。\

网易云信对WebRTC的改进

\\

如果仅仅是基于现有的WebRTC,自己写一些JavaScript来实现简单的音视频会话,那么难度没有那么高,但是要想实现一个工业级的应用,其实难度是非常高的,因为它基于浏览器,而WebRTC本身只提供了一个Web端的接入能力,是没有服务端的。目前很多基于WebRTC提供能力的厂商,研发都集中在WebRTC网关及服务端能力的建设。

\\

另外WebRTC整个抗丢包都是基于Peer to Peer场景下的优化,它不一定适合企业的应用场景。

\\

第三个就是它只是一个很基本的Web端的音视频的通话,它没有其他的服务,包括像录制和其他云端的服务。

\\

NRTC的WebRTC里面支持了Web的接入同时做了很多优化,包括抗丢包、音频的优化,这样比纯粹的基于WebRTC构建一个简单的应用能够实现的效果要好很多。另外,NRTC通过提供云端的录制、云端的推流,来实现互动直播。

\\

改造的技术细节,网易云信资深架构师吴桐在前不久线下分享过《精析网易NRTC的WebRTC网关服务器技术架构》,可以进一步了解。关注“前端之巅”公众号,回复WebRTC获取PPT。

\\

WebRTC未来展望

\\

最后在谈到WebRTC的未来的时候,赵加雨表示,我们要看到,在现在的这个时间点,WebRTC仍然处于大规模应用的早期:

\\
  • 一方面,WebRTC的codec等正在演进,如AV1/VP9等,它们也在近一年来取得了极大的进展,但尚未投入到实际应用当中。\\t
  • 另一方面,部分浏览器对WebRTC的实现还非常粗糙,包括移动端的浏览器,需要持续的完善。\\t
  • 最后,网络要支持WebRTC的QUIC协议需要进化,部分新型的实时网络架构如SD-RTN等需要时间来完善和普及。\

因此WebRTC的未来是光明的,但当前仍然处于过渡阶段,这也是NRTC接入WebRTC的原因,通过弥补WebRTC的一些短板来提供服务,是当前阶段切实可行的做法。

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

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

相关文章

html/css杂题

1、css选择器:详细(http://www.ruanyifeng.com/blog/2009/03/css_selectors.html) 派生选择器:按标签 类别选择器:按class ID选择器:按ID 通用选择器:* 匹配所有 属性选择器:按属性&…

黑客马拉松 招募_我如何赢得第一次黑客马拉松-研究,设计和编码的2个狂野日子

黑客马拉松 招募I had no coding or engineering background. I studied biology in college, with no clue about what to do with my degree. 我没有编码或工程背景。 我在大学学习生物学,但不知道如何处理我的学位。 My first jobs were making cold calls in s…

1、Linux命令随笔

1 Linux命令总结2 3 man 命令帮助;4 help 命令的帮助(bash的内置命令);5 ls list,查看目录列表;6 -ld:查看目录权限;7 -l:(long)长格式显示属性;8 -F:给不同的文件类型结尾加标识9 -p:给目录加斜线10 …

1137. 第 N 个泰波那契数

泰波那契序列 Tn 定义如下: T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2 给你整数 n,请返回第 n 个泰波那契数 Tn 的值。 示例 1: 输入:n 4 输出:4 解释: T_3 0 1 1 2 T_4 1…

web图像_Web图像优化的基本介绍

web图像Images are an essential ingredient of most websites. The visual quality of pictures has a direct impact on the brand image and the message those images convey. And the weight of images usually accounts for a 40-60% of the data transferred on the web…

ElasticSearch客户端注解使用介绍

The best elasticsearch highlevel java rest api-----bboss 1.ElasticSearch客户端bboss提供了一系列注解 ESId 用于标识实体对象中作为docid的属性,该注解只有一个persistent 布尔值属性,用于控制被本注解标注的字段属性是否作为普通文档属性保存&am…

5827. 检查操作是否合法

给你一个下标从 0 开始的 8 x 8 网格 board ,其中 board[r][c] 表示游戏棋盘上的格子 (r, c) 。棋盘上空格用 ‘.’ 表示,白色格子用 ‘W’ 表示,黑色格子用 ‘B’ 表示。 游戏中每次操作步骤为:选择一个空格子,将它变…

团队的远程管理_远程团队指南:如何管理您的远程软件开发团队

团队的远程管理Guides to help you work remotely seem to have swept through the Internet these days. 这些天来,帮助您远程工作的指南似乎席卷了Internet。 Do this, avoid that, stay productive, and all those run-of-the-mill tips we’ve already tried o…

JS 正则 钱

function ValidateIsDecial(sValue) {return (!sValue && !!!sValue && /^[0-9]{1,10}(\.[0-9]{0,2})?$/.test(sValue)); };验证 decimal(12,2) 小数点前允许10位,小数点后允许2位 1234567890 true 12345678901 false 0123456789 true 01234567891 false 123.…

5193. 删除字符使字符串变好

5193. 删除字符使字符串变好 一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 。 给你一个字符串 s ,请你从 s 删除 最少 的字符,使它变成一个 好字符串 。 请你返回删除后的字符串。题目数据保证答案总是 唯一的 。 示例 …

2020计算机顶级大会_2020年顶级远程调试工具

2020计算机顶级大会When it comes to debugging, the tool you use is extremely important and can determine how easy is is to fix problems within your code. 在调试方面,您使用的工具非常重要,可以确定在代码中修复问题的难易程度。 In the earl…

BZOJ5292 洛谷4457 LOJ2513:[BJOI2018]治疗之雨——题解

https://www.lydsy.com/JudgeOnline/problem.php?id5292 https://www.luogu.org/problemnew/show/P4457 https://loj.ac/problem/2513 你现在有m1个数:第一个为p,最小值为0,最大值为n;剩下m个都是无穷,没有最小值或最…

PHP--------微信网页开发实现微信扫码功能

今天说说微商城项目中用到的扫一扫这个功能,分享一下,希望对各位有所帮助。 前提:要有公众号,和通过微信认证,绑定域名,得到相应信息,appid,appsecret等。 微信开发文档:…

313. 超级丑数

超级丑数 是一个正整数,并满足其所有质因数都出现在质数数组 primes 中。 给你一个整数 n 和一个整数数组 primes ,返回第 n 个 超级丑数 。 题目数据保证第 n 个 超级丑数 在 32-bit 带符号整数范围内。 示例 1: 输入:n 12,…

初创公司股本结构_我如何向初创公司的开发团队添加一些结构-以及从过程中学到的东西

初创公司股本结构Until recently, Id spent the last 4 years of my career at FinTech start-ups. Id always worked for smaller companies, and being at a start-up was the next logical step in looking for roles where I could make the biggest difference. 直到最近…

拿什么拯救你,我的面试之——从零打卡刷Leetcode(No.003)

写在前边:小詹一直觉得自己编程能力不强,想在网上刷题,又怕不能坚持。不知道有木有和小伙伴和小詹一样想找个人一起刷题呢?欢迎和小詹一起定期刷leetcode,每周一周五更新一题,每一题都吃透,欢迎…

146. LRU 缓存机制

146. LRU 缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回…

[SQL] 请教一下 count里面有case when 一般情况下啥时候用

http://www.itpub.net/forum.php?modviewthread&tid1810967 问题: 比如 count(case when pday_id${deal_date} then 1 end) 我有点想不明白具体什么情况下count() 这个小括号里面还要用case when 大家做BI统计的时候一般什么情况用啊 还有个…

路由器架设虚拟服务器让外网访问到本地网站

确定电脑与路由器正确连接,并且已连至互联网。在地址栏中输入192.168.0.1回车,输入用户名密码,进入路由器主界面。 然后点击左侧菜单中的“虚拟服务器”,——“端口段映射”打开“端口段映射”界面。 由于网站用的是80端口&#x…

vue项目示例代码git_您应该了解的5个Git命令以及代码示例

vue项目示例代码gitIve used Git for some years now, and I still find myself googling how to do some basic tasks. So this article is my attempt to learn how to do some of these things by writing about them. And even if I still forget, at least Ill have a ref…