[每日十点零一分] 聊聊远程办公中的实时音视频通信
发布于 4 年前 作者 Rajanchen 4651 次浏览 来自 分享

首先声明,本篇文章来自某公众号,内容含有图片和视频,视频无法播放,所以推荐点击这里阅读原文。 每周一话题,文章天天更,与你约定每个早晨的10点零一分

正文开始。

“ 远程办公火了,本文我们一起来聊聊其中的一个核心技术问题——音视频通信 ” 远程办公并非一个新奇的概念,在过去很长的一段时间里,对大部分的公司来讲“远程办公”就是一个和互联网沾边的概念。当然其中可能受诸多原因的影响,如技术因素(如带宽、通信、软件等)、人为因素(观念、接受程度等)。人们还是习惯面对面的交流。然而,2020年初,远程办公就随着疫情一起“爆发”了。

01 特殊时期的办公形式

疫情期间,传统的的办公形式受到了挑战。在国内以教育、房地产、文化传媒为首的八大行业“复工复产”活动中,超过90%的企业都实施了全员在线办公;而其他行业实施部分在家办公。报告数据如下。 image.png 在国外,Apple、Google、 Facebook、Uber等科技巨头均连续出台了相应的远程办公政策。如Apple公司CEO蒂姆.库克上周提出“在业务允许的范围内可进行远程办公”建议; 同时,Google也发布了类似的远程办公的通知;“更狠”的是Twitter,要求全球4900名员工必须居家办公。

这段日子里,线上可谓是热闹非凡。不知你是否有所体会呢?

不论是国内还是国外,突如其来的大规模的远程办公也将鼓励各个公司重新审视和思考办公形式。

02 我的“CodeEveryWhere”梦想实现了吗

我进入IT行业并非专业使然,可以说编程仅是我的“课外拓展”,在大学里就喜欢写点网页特效,搞点前端的小应用,写完还不忘给同班女生“秀一把”。

毕业那会找工作,投了多份简历,其中有一个岗位就是编程相关的——(前端工程师)。

我比较幸运,收到多份面试邀请,其中就包括编程工程师。

经历了几个面试之后,还是编程的这个岗位吸引我,因为当时的面试官跟我说了这么一段话:

我们对IT工程师工作的定义是CodeEveryWhere,我们认为,写代码是一件很有艺术性、创造性的工作,每一个Coder都是艺术家,你们在用艺术和智慧创造这个世界;艺术家应该不拘泥于何时何地创作, 咖啡厅你们可以创作,茶吧也可以创作、或者说可以是你喜欢的任何地方都可以创作。

很美好,很文艺,有没有。

大家可能对这个公司的管理方式比较好奇,说真的,这是我接触到的第一家针对IT岗位管理比较“松散”的。

当时别提我有多激动了,这不就是我梦寐以求的生活方式吗,于是我正式走上编程之路。 image.png (图片来自《爱情公寓》)

加入新公司后,我接触到了最早的远程办公。具体体现为:①、git托管代码;②、工作内容统一使用项目管理软件安排。开会这种活动还是面对面。 额,其他,好像没有了,(⊙o⊙)…

当现实照进了梦想,“我信你个鬼”,CodeEveryWhere 就是传说中的“996”?

是呀,我确实他么的CodeEveryWhere,上班code,加班code,连在咖啡厅喝杯奶茶都要code,更可气的是,你们竟然把节假日的福利改成了发放格子衫。 image.png

在朋友聚会的时候,大家热衷讨论的一个话题就是:你在哪里高就呀。每每我提到我是搞IT的,大家无不表现出赞叹的表情。可,现实你知道吧,就那种触及灵魂的抓狂。

也不能怪他们,毕竟人家不在这个行业,何况在各种电影中懂电脑技术的人都是很酷的。 image.png (视频来源网络,如有侵权,请联系作者删除)

之后的很长时间里 ,我对远程办公的认识就是如此。几年的时间,我跳了很多次槽,也经历了很多事情。

2019年底,突如其来的疫情, 刷新了我对远程办公的认识,也改变了我对CodeEveryWhere 的态度。 在疫情之下,无数企业企业加入线上办公,依赖线上办公,线上的力量保证了我们的生产力,我也认识自己所在的行业,所做的事情看似简单但并非容易,code我快乐和充实。

作为线上办公的核心功能——实时音视频通信技术,变成为大家讨论的话题。

03 实时音视频通信

接下来,我们来聊聊音视频通信。实现一个音视频通信应用要解决什么问题呢? 如下图所示。 image.png 总结起来就是:采集、处理、传输、播放 四个环节。 下面分别来说明:

采集。 解决如何读取媒体设备的数据,如摄像头的视频流,麦克风的音频流。

处理。解决媒体流数据的优化,如音频的降噪、回音消除、编解码;视频的图像增强、编解码等。

传输。解决媒体数据数据的传输问题、 如P2P穿透、丢包处理、链路优先等

播放。这部分相对较简单,在web中可以直接基于H5的规范就可以播放,比如视频可以通过video标签播放、音频可以通过audio标签播放。

是不是意味着我们开发实时音视频通信应用需要全部解决这些技术问题呢?

在前几年是必须的,要么就花钱使用成熟的解决方案(如GIPS),早期的通信软件如QQ、Skype 等都是这么干的。

但是自从Google开源WebRTC项目之后,上述提到的技术问题已经得到了很好的解决。

我们作为一个优秀的“吃瓜”,学会用就可以。

WebRTC的前身是GIPS(Global IP Solutions),GIPS是当年世界顶级的实时音视频通信解决方案。

2010年,Google花了几千万美元收购GIPS,融入自家的技术后成立了开源项目WebRTC。

该项目集成了GIPS等优秀音视频解决方案,底层代码基于C++编写。但是你放心,C++代码更多是给浏览器厂商看的。

各个浏览器厂商在WebRTC的支持下,把相应的API集成到自家的浏览器中,使得开发者通过“简单”的JS编程就能实现在浏览器中进行高质量实时音视频通信。

谷歌非常看好应用软件的Web化,WebRTC项目的开源直接推动了web应用的发展,截止目前,主流浏览器均已支持webrtc 规范,且该规范已经被纳入W3C大家族。

WebRTC的实时音视频通信技术对前端开发者无疑是最友好的,会使用JS语言,会写Node.js程序,就可以搞定大部分的技术问题。 当然如果要往深入的研究,还是要学习c++。我后续的书籍或者专栏会专门的讲解。

04 WebRTC市场反应如何

目前知名的音视频产品服务商,如声网、融云、即构科技等核心技术还是基于WebRTC。可以说市面上凡是涉及实时音视频通信的、90%以上基于WebRTC,这个比例非常有说服力。

今年的形式,WebRTC变成热门技术。但目前,大家伙学习该技术的途径还是比较窄,要大价钱买一个课程;要么自己查阅零散的文档(英文为主)、博客;最致命的是博客上的很多内容并不完整。

为此,我斗胆整理了一些资料开发给大家,希望能给想要学习音视频技术的小伙伴一些参考。

好了,这就是今天的“十点零一分”。需要学习资料的同学可在微信公众号“晨叔周刊”中回复“webrtc资料”。

最后祝各位小伙伴学习愉快,欢迎分享本篇文章。

回到顶部