阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

Slack 是如何使用 WebRTC 的?

  • 2017-09-18
  • 本文字数:1810 字

    阅读完需:约 6 分钟

Slack 是一家线上协作工具,提供聊天群组、工具集成、文件整合等功能,同时,它提供 Web 和桌面、移动客户端,覆盖了主流平台。2016 年,Slack 采用 WebRTC 技术实现了应用内的音视频通话功能。Slack 视频组高级主管工程师 Raj Kumar 将参加 9 月 21 日至 22 日在北京举行的 2017RTC 实时互联网大会,并将做主题演讲。InfoQ 对其进行了采访,了解 WebRTC 在 Slack 的使用。

WebRTC 本身是一组技术的集合,基本上考虑到了音视频通话的方方面面,但是要把它用起来也并不容易。要自建 WebRTC 服务,除了要考虑信令服务器和 NAT 防火墙穿透外,在多人通话中你还需要考虑用选择发送单元(SFU)或多点控制单元(MCU)来控制通话信息路由。Slack 在其工程博客介绍,它采用了 Janus 来作为自建的 SFU,同时进行了大量的性能优化。这只是 WebRTC 应用开发中的其中一例。

受访嘉宾介绍

Raj Kumar, Slack 视频组高级主管工程师。毕业于卡内基梅隆大学电子工程专业,WebRTC 视频编解码专家,全栈工程师,擅长多媒体领域数字信号处理。先后就职于 Apple, Internet Archive, Flurry Live。任职苹果公司工程师期间负责 QuickTime Video 编解码研发工作,获得十项研发专利。

InfoQ:Slack 为什么会选用 WebRTC 技术?

Raj: WebRTC 的一个很大优势是它内置在当今的 Web 浏览器中。在 WebRTC 之上构建您的产品,意味着用户可以在 Web 浏览器中启动应用程序,无需安装任何插件或下载任何其他软件。

内置在 Web 浏览器中的 WebRTC 技术不仅可以提供一流的用户体验,同时也使得不同产品之间的协同变得轻而易举。例如,Slack 用户可以使用 Slack Calls 进行视频通话,也可以使用与 Slack 集成的任何一款第三方的视频会议应用程序。这些应用程序能够与 Slack 无缝地链接在一起。

使用 WebRTC 的另一个优点是,当由 Google 主导的 WebRTC 团队对产品进行改进时,基于 WebRTC 而构建的所有应用程序都可以快速获得相应的改进。例如,当 WebRTC 团队优化回声消除或带宽估计算法时,所有的 WebRTC 应用程序也都可以立即使用这些成果。

实时通信是由采集、编码、前后处理、解码、缓冲、渲染等多种技术组成的集合体,WebRTC 提供了前端实现和编解码,如果开发者要商用,还需要做不少的开发部署工作,来提供可用性。

InfoQ:我们在网上看到了一些评论,说 WebRTC 会占用非常高的 CPU 计算资源,这是怎么回事呢?

Raj: WebRTC 中最消耗计算资源的组件是视频编码器。在大多数平台上,视频编码和解码都是在软件中执行,而不是使用专用的硬件编解码器。好消息是,这种情况正在缓慢地改善。

WebRTC 允许使用 VP8、VP9 或 H.264 视频编解码器。H.264 编解码器的硬件支持适用于大多数的移动平台,现在我们开始看到 WebRTC 应用程序已经在 iOS 和 Android 上通过使用 H.264 来获得更好的性能。在桌面系统支持方面,WebRTC 的 H.264 硬件编码目前还不能像在移动系统上那样获得广泛的支持,还不能在浏览器中启用。

此外,WebRTC 在使用 H.264 时还不支持诸如 Simulcast 或 Scalable Video Coding 之类的技术。需要这些功能的应用程序主要使用 VP8 或 VP9 编解码器,这些编解码器还没有在大多数平台上获得硬件支持。对 WebRTC 编解码器的硬件支持将有助于减少我们今天看到的高 CPU 使用率问题,不过这些问题正在解决之中,预计还需要时间。

InfoQ:当您在 Slack 部署 WebRTC 时,遇到的最大的技术问题是什么?

Raj: Slack 可以为 Mac、Windows 和 Linux 桌面,以及 iOS 和 Android 设备提供客户端。我们面临的一个挑战是使所有客户的 WebRTC 库保持同步,并为每个客户端团队提供本地平台的高级 WebRTC API。

为了应对这些挑战,我们打造了一个构建系统,该系统可以让我们的 Android 团队通过 Java 界面,让我们的 iPhone 团队通过 Objective-C 界面,让我们的桌面团队通过 C ++ 界面,对 WebRTC 进行协同编译。该系统让我们的团队可以专注于建立强大的客户端,而不必担心 WebRTC 代码的接口问题。

InfoQ:关于如何使用 WebRTC,您可以向我们的读者提供一些建议吗?

Raj:通过 WebRTC,任何人都可以轻松地访问强大的应用程序。您只需少量的 Javascript 操作即可将视频会议添加到您的应用程序中,并且由于 WebRTC 可以在浏览器之间进行点对点的连接,因此您无需托管视频服务器就可以部署出应用程序。

WebRTC 仍然是一种新兴的技术,与之相关的质量演进还需要比较长时间,应用场景都有很大空间可以挖掘,所以对开发者来说,现在是构建自己的应用的很好时机!

2017-09-18 04:072735
用户头像

发布了 164 篇内容, 共 103.4 次阅读, 收获喜欢 391 次。

关注

评论

发布
暂无评论
发现更多内容

你以为在做的是微服务?不!你只是做了个比单体还糟糕的分布式单体

Java 程序员 后端

你们初刷leetcode时会怀疑自己的智商吗?,java中级面试题下载

Java 程序员 后端

做个小项目那不是简简单单!Java实现航空航班管理系统。

Java 程序员 后端

先到先得!价值百万的的ELk+Lucene笔记,阿里P7架构师带你看透maven的来龙去脉

Java 程序员 后端

全网都在跪求的阿里Java修炼开发技术笔记,终于开放下载了(1)

Java 程序员 后端

优化技术专题-线程间的高性能消息框架-深入浅出Disruptor的使用和原理

Java 程序员 后端

使用IDEA的Docker插件部署SpringBoot项目,让我成功在寒冬中站稳脚步

Java 程序员 后端

保姆级教程!手把手带你用数据库中间件Mycat+SpringBoot完成分库分表

Java 程序员 后端

你知道 Java 类是如何被加载的吗?,mybatis从入门到精通pdf百度云

Java 程序员 后端

使用OPCAutomation实现对opc数据的访问,腾讯数据分析面试春招2021

Java 程序员 后端

入职字节跳动那一天,我哭了(蘑菇街被裁,java中异常处理机制的原理和应用

Java 程序员 后端

下班约会时来了新需求,咋办?

华为云开发者联盟

ide 开发 代码 华为云 华为云DevStar

以GraalVM原生镜像的方式运行Spring Boot应用程序,mybatisjoin原理

Java 程序员 后端

作为分布式服务框架,我用大白话给你解释Zookeeper的选举机制!

Java 程序员 后端

使用 nodejs 中的 http 模块实现几个超实用的工具,实战java虚拟机葛一鸣第二版pdf

Java 程序员 后端

使用Hystrix的插件机制,解决在使用线程隔离时,threadlocal的传递问题

Java 程序员 后端

使用Redis和Java进行数据库缓存 - DZone数据库,工作感悟

Java 程序员 后端

代码简洁之道--笔记,2021华为Java面试真题

Java 程序员 后端

作为java程序员,在金三银四季你遇到过哪些质量很高的java面试?

Java 程序员 后端

你不会仅仅把Redis作为缓存的工具吧?给你一亿个keys,如何高效统计

Java 程序员 后端

带你了解Node.js包管理工具:包与NPM

华为云开发者联盟

node.js 工具 npm 文件

全网最全Spring面试题之基础篇整理总结(共69题,附超详细解答

Java 程序员 后端

从腾讯T3-3大佬手上获得的Java架构进阶PDF文档,图文并茂,真香

Java 程序员 后端

优秀如我毅然和女票分手,面试字节跳动技术四面吊打面试官,终获取到Offer

Java 程序员 后端

你知道你和高薪的距离在哪里吗?这份“并发编程笔记,redis分布式锁原理java

Java 程序员 后端

优质高效!基于Spring-boot-admin的微服务监控系统实现

Java 程序员 后端

你技术这么好,总要改变点什么把!(1),2021我的Java大厂面试之旅

Java 程序员 后端

你遇到过哪些质量很高的 Java 面试?,nginx教程阮一峰

Java 程序员 后端

你技术这么好,总要改变点什么把!,java面试项目中你遇到的难题

Java 程序员 后端

你曾遇到过哪些大厂的-Java-面试?,mysql入门书籍哪本好

Java 程序员 后端

你确定你真的理解_双亲委派_了吗?!,阿里内部核心Java进阶手册

Java 程序员 后端

Slack是如何使用WebRTC的?_DevOps & 平台工程_徐川_InfoQ精选文章