WebRTC是什么

作者:ancientcc
链接:https://www.zhihu.com/question/22301898/answer/145669695
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

首先补充你的一句话,WebRTC的Native Code部分早就可以用在iphone,而且支持得很好,像硬编码、硬解码H264都是运行得很好了。

webrtc是不是有前途,对所在行业来说肯定有前途。它成为标准不是新闻,不成为标准才是新闻。但如果你不是C/C++开发者,前途指的对个人职业规化啥的,对你来说现在是不是机会?或许真要考虑下。我从三个方面分析。

一、web浏览器
Webrtc使web浏览器通过简单的JavaScript api接口实现实时通信功能。在这方面基本已成事实上标准,正如上面写的,它成为标准不是新闻,不成为标准才是新闻。国内就有不少从事和webrtc相关的开发者,像有的公司就基于Webrtc包做些修改、然后给其它开发者用、号称是视频聊天SDK。这样公司好多,但真正做大却有点难。我想有两个原因:JavaScript的限制,浏览器的限制。

JavaScript的限制。JavaScript是脚本语言,能有什么功能取决于实现它的虚拟机,也就是浏览器这个应用程序。由于受限,问题来了,人民群众的需求总是琳琅满目,你都能提供吗?举个例子,要让对方的头上自动加顶红帽子,——当然,修改浏览器代码让加个帽子不是难事,可谁又知道接下会发生什么,难道要一个改一个?聊天往往是娱乐,娱乐经常是没啥规矩。由于这限制,开发者用它时会有这看法:东西是很好,但总是有那么点不足,而且即使是努力了也不可能解决(自个写浏览器除外)。

浏览器的限制。这就要涉及到聊天场景。很现实问题,如果我想和你聊天,身边有手机,你认为会用浏览器吗?对PC,网页比app方便,而移动设备却有点反着来,而且将来移动设备会越来越多。关于这个再深入个问题:如果PC用浏览器,手机用app,聊天是否可行?技术实现上没问题,可事实上基本不会做,代价太高划不来。浏览器时,信令走的是Websocket,app用Websocket纯粹是没事找抽,直接C Socket既简单又高效。浏览器时,两socket间没啥心跳包机制,app时心跳包机制可很大提升效率。浏览器时,由于用JavaScript开发,功能受限,app时用Native Code,自个想要什么就能实现什么。而且,Webrtc是跨平台包,基于C/C++的跨平台SDK也不是没有,何不在开发时顺便开发出个Windows平台app。以上导致了app不太可能和网页聊天,这又让浏览器少去很多应用场景。

综合来说,在浏览器不是webrtc不行,而是其它原因导致有那么点尴尬。想做一个“完美”用户体验的聊天工具,终归还得用app。这就是接下要说,webrtc中的Native Code部分。

二、webrtc中的Native Code部分
Webrtc分两层,底层是个用C++写的库(Native Code),然后上层写个Javascript封装,以便供HTML5调用。既然是写app,那完全不用管上层Js封装,而且Google在开发Webrtc时已考虑用在app,底层C++库的API已做得很完善了。也就是说,一旦直接用Native Code,完全和浏览器无关了,作为C/C++开发者,他就可以用webrtc去实现自个想实现的所有东西。

Native Code摆脱了哪些限制?可参考这个问题贴,可以用WebRTC来做视频直播吗? - HTML5 - 知乎。用浏览器,就是p2p聊天都功能受限,更别说去实现直播。而实际中基于浏览器的直播也不推荐用webrtc技术。这里重复抄下我在那问题回的一段话。

为什么强烈建议你基于webrtc?对直播系统,难的不是服务器,而是客户端。客户端难的地方则主要体现在两个方面,一是网络传输相关,像穿透,二是流数据相关,像编码、解码。而这些正是webrtc帮你解决了。也正因为如此,现在很多直播系统最早的客户端其实是以webrtc为根的,只是后面自个不断优化,慢慢地变成自个系统而已。——诚然,官方webrtc是有地方不尽如意,但它们不断更新,就像最近一段时间优化了回音消除。

如果你熟悉C/C++,又刚好从事和网络视频相关行业,强烈建议你学习Webrtc。如果你不从事网络视频相关行业,却是C/C++开发者,那还是强烈建议你学习Webrtc,原因是接下要说的Webrtc代码的C/C++价值。

三、Webrtc代码的C/C++价值
最近回答了这个问题,怎么样才算是精通 C++? - 编程 - 知乎。在那里建议学习C/C++是两个步骤,知道基本语法后就到网上找开源项目,多看看、多调试前辈们代码。我推荐的开源项目就是Google的Webrtc。

虽然Webrtc的代码量很大,但看的目的不是要全看懂,只是看你想看的部分。语法上,Webrtc用了最新C/C++语法,像std::unique_ptr,Webrtc是视频聊天基础库,众多知名浏览器都是基于它实现视频聊天。扩展专业知识上,Webrtc为完成聊天涉及到很多方面,像网络穿透,视、音频编码解码,采集摄像头、卖克风,截屏。C/C++编程技能积累上,Webrtc能让你直接基于它的一些模块写代码,像多线程同步模块(https://zhuanlan.zhihu.com/p/25147311?refer=c_75458601),网络收发模块。获取更多开源项目上,Webrtc像手心,基于它你会涉及到很多开源项目,像用于加密、解密、网络安全的boringssl,数字编解码的ffmpeg,libvpx,等等。活跃度上,Webrtc是Google底下团队维护的项目,基本做到一个月一小变,不仅能让你获得那些专业的最新技术,还能学习最新C/C++语法。还有很重要的是,Webrtc代码是跨平台的,完全支持当前主流操作系统,像Windows、iOS、Android、Mac OS X、Linux,到时你会发现,C/C++是种多么好的跨平台语言。

一句话,Webrtc非常值得深入,甚至认为可以进入大学课程。


作者:网易云信
链接:https://www.zhihu.com/question/22301898/answer/439523681
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

WebRTC是什么?

首先解释一下WebRTC并非是一个“拿来即用”的“端到端”开源解决方案,如果你以为只需要在web端写几行JavaScript就可以实现浏览器之间的音视频通信,那可能会失望。

但事实上WebRTC能给人更多惊喜,他既不是“解决方案”,也不是某种代码库。

WebRTC是终端的音视频媒体访问接口在类似于web环节下的标准化抽象。是对于实时音视频通话建立过程,编码格式,传输方式等等的规范。

所以不要被“Web”之名影响,无论具体如何实现,只要符合标准规范就可以获得实时的通信能力,这才是WebRTC的意义所在。

WebRTC的潜力在哪里?

聊聊这套标准的潜力,事实上WebRTC是不受限于Native App或者浏览器终端运行环境的。Browser、desktop App、Android、iOS、IoT都可以,你只要IP连接且符合规范就可以互通。

这意味着什么?这意味着无数智能终端产品或者运行在智能终端上的app的实时通信能力的大门彻底打开。举个例子,云信最近帮助步步高小天才手表做的手表实时通信,帮助家长和小朋友实现沟通,而且你不用买苹果表……

再扩大一下想象空间:在线课堂、视频会议、视频社交、远程协助都可以扩展更大的使用场景。

在WebRTC问世之前,并么有一个统一的标准来描述设备的实时通信能力与连接过程,大家都是各做各的,各用各的。但是音视频通信研发是即时通信领域里面的最hard模式,没有大量基建投入和研发资源投入,基本不能成行。WebRTC的最大优势就在于“标准”,通信终端只要符合标准就可以用同一种“语言”交谈。目前各大浏览器厂商都积极参与到WebRTC技术的生态中,从web应用开始,WebRTC将成为基于网页的音视频实时通信技术规范。之后,在Web应用于移动终端应用的交互需求驱动下,越来越多的移动应用的音视频服务也将采用WebRTC的技术规范。这套标准激活的是人与人,物与物之间信息互联,也就意味着这是全新应用场景的底层技术保障。

今年年初流行的直播竞答,抓娃娃机(远程信令控制),在线教育大力发展和实时音视频技术发展起了相辅相成的作用。

编辑于 2018-07-11

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值