0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Zoom的Web客户端和WebRTC有什么关系

LiveVideoStack 来源:工程师曾玲 2019-02-02 15:17 次阅读

Zoom是非常出色的视频会议平台,拿Zoom的web客户端和WebRTC对比似乎有失公允。重要的是,未来WebRTC还会不断做明智的改进。

Zoom有一个Web客户端,允许参与者在不下载他们的app的情况下参加会议。打开chrome://webrtc-internals显示只有getUserMedia用于访问相机和麦克风,但是没有像WebRTC那样调用RTCPeerConnection。这让我很感兴趣-他们没有使用WebRTC是如何打电话的?

为什么不使用WebRTC?

Zoom的Web客户端和WebRTC有什么关系

就像他们的网站上所说的那样,Zoom和WebRTC的关系比较复杂。

JitSi团队最近通过比较质量回应了这件事。Tsahi Levent Levi也对此发表了一些有用的评论。因此,让我们在Chrome中运行这种非常有趣的环境下快速查看这些“优秀特性”。

Zoom web客户端

Chrome网络开发者工具迅速显示了两件事:

WebSocket用于数据传输

这是一些工作人员加载的WebAssembly (wasm) 文件

Zoom的Web客户端和WebRTC有什么关系

基于WebSocket的媒体传输

基于WebSocket的媒体传输整体设计非常有趣。它使用WebSocket传输媒体,这当然不是最佳选择。类似于WebRTC中的Turn/TCP——它会影响传输质量,并且在很多情况下都不能很好地工作。使用TCP传输实时媒体的一般问题是丢包,这会导致重新发送和增加延迟。Tsahi前一段时间在TestRTC上描述了这一点,显示了使用这种方案对比特率和其他特性的影响。

基于WebSocket传输媒体最主要的优势在于,它可以在TURN/TCP和TURN/TLS被防火墙阻塞时,穿过防火墙。它避免了WebRTC TRUN连接不经过认证代理的问题。这是Chrome WebRTC实施中长期存在的问题,去年才得到解决。

Zoom的Web客户端和WebRTC有什么关系

在WebSocket上接收的数据进入基于WebAssembly (WASM)的解码器。浏览器中的AudioWrkLead获取到音频数据。从那里,解码的音频使用WebAudio“magic”目的节点播放。

Zoom的Web客户端和WebRTC有什么关系

视频被渲染出来,这个过程出乎意料的顺利,质量也非常高。

另一方面,WebAudio通过getUserMedia调用捕获媒体数据,发送给WebAssembly编码器编码,然后通过WebSocket传输。640*360分辨率的视频数据在发送给WebAssembly编码器之前从画布中获取到,这是非常常见的。

WASM文件似乎包含与Zooms本地客户端相同的编码器和解码器,这意味着网关不必进行转码。相反,它可能只是一个websocet-RTP中继,类似于转换服务器。编码的视频有时有些像素化。虽然编码器的CPU使用率相当高(在640×360分辨率),但这可能并不重要,因为用户可能将问题归咎于Chrome,并在下次使用客户端。

H.264

使用WebAssembly提供媒体引擎是非常有趣的,它允许支持Chrome/WebRTC不支持的编解码器。用emscripten编译的FFmpeg以前已经做了很多次了,这里似乎也使用了emscripten。通过WebSockets传输编码后的数据,可以使用Chrome优秀的调试工具检查RTP头和一些帧来显示H264荷载。

Zoom的Web客户端和WebRTC有什么关系

令我惊讶的是,网络抽象层单元(NALU)没有表示H264-SVC。

和WebRTC的比较:

总之,让我们比较一下Chrome在本例中使用的与WebRTC标准(W3C或者各种IETF草案)不同的地方:

特性 Zoom Web client WebRTC/RTCWeb Specifications
加密 基于安全Websocket的RTP DTLS-SRTP
数据通道 n/a? SCTP-based
ICE n/a for Websocket RFC 5245 (RFC 8445)
Audio codec 未知 Opus
多码流 未研究 Chrome实现
Simulcast 在web client上未研究 扩展特性

WebRTC下一版

尽管WebRTC 1.0还远远没有完成(而且大多数开发人员仍在使用被称为“遗留API”的东西),但是关于“下一个版本”的讨论仍然很多。

Zoom网络客户端的总体设计强烈地提醒了我,在今年早些时候在斯德哥尔摩召开的工作组面对面会议上,Google的Peter Thatcher为WebRTC NV提出的建议。请参阅幻灯片(https://www.w3.org/2011/04/webrtc/wiki/images/5/5c/WebRTCWG-2018-06-19.pdf)。

如果我们要在2018重建WebRTC,我们可能已经采取了类似的方法来分离组件。基本上采取以下步骤:

编译用于wasm的webrtc.org编码器/解码器。

将解码器与画布连接,WebAudio用于”布局”

将编码器和getUserMedia连接用于输入

将编码后的数据通过不可靠的信道发送

以某种方式连接RTCDataChannel反馈度量和音频/视频编码器

该方法是从工作组会议幻灯片中看到的:

Zoom的Web客户端和WebRTC有什么关系

与Zoom方法相比,该方案具有非常明显的技术优势。例如,使用RTCDataChannels传输数据,这比WebSocket具有更好的拥塞控制特性,特别是当存在分组丢失时。

该设计的最大优点是可以将编码器和解码器(以及相关的东西,如RTP打包)与浏览器分离,从而允许定制版本。主要问题是找到一种好的方法,以包括硬件加速的高性能方式使数据处理脱离主线程。这是Chrome早期面临的一大挑战,我记得很多关于沙箱让事情变得困难的抱怨。Zoom看起来很好,但是我们只尝试了1:1的聊天,而典型的WebRTC应用程序比这个要求更高一些。重用像MediaStreamTrack这样的构建块来进行从工人到工人的数据传输也比使用Canvas元素和WebAudio要好。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    45

    文章

    3643

    浏览量

    134549
  • Web
    Web
    +关注

    关注

    2

    文章

    1263

    浏览量

    69499

原文标题:Zoom的Web客户端与WebRTC有何不同?

文章出处:【微信号:livevideostack,微信公众号:LiveVideoStack】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview web service发布数据到客户端浏览器

    现在我想利用LV web service将采集到的数据发布到网络上去,实现基于 Web 的瘦客户端模式数据共享。目前的问题是数据是以xml格式发布到客户端网页,小弟不知道怎么对数据进行
    发表于 04-12 15:12

    求教:linux系统和WEB服务器什么关系?WEB服务器和网页又是什么关系?

    最近在学习arm上linux系统移植以及WEB服务器,几个问题非常非常困惑,希望大家能帮忙解答一下。1.linux操作系统和web服务器属于什么关系?2.配置好
    发表于 10-10 20:20

    webrtc p2p

    web前端等实现,支持app的移植,信令服务器是websocket实现1.设备上线,通知信令服务器;2.web客户端向信令服务器发起请求:    2.1设备发送数据到信令服务器,内容json格式
    发表于 08-10 21:58

    在esp8266中内置客户端WEB,请问固件版本的要求吗?

    各位大神好!我想在8266中内置客户端WEB,请问固件版本的要求吗?WEB内容是不是可以自己定制?有没有相关方面的资料吗?我在上看到《esp8266从零快速开发教程》,但是链接已经失
    发表于 11-08 08:07

    CoolpyCould客户端

    一款开源的物联网服务器平台,利用nodejs写成,此文件是CoolpyCould客户端
    发表于 11-06 17:00 18次下载

    CSDN博客客户端源码

    CSDN博客客户端源码CSDN博客客户端源码CSDN博客客户端源码
    发表于 11-18 10:22 1次下载

    一种基于多媒体的英语智能客户端设计

    文中提出一种基于计算机多媒体技术的英语智能客户端。通过采用B/S与C/S结合的方式,并通过web services 接口调用的方式,实现对系统的访问,同时采用多媒体技术的中的视频传输压缩技术,以此减少视频的大小,提高网络资源带宽,更好的促进英语智能
    发表于 12-24 16:05 5次下载

    Delphi教程之数据查询Web服务客户端开发数据查询Web服务

    Delphi教程之数据查询Web服务客户端开发数据查询Web服务客户端开发,很好的Delphi资料,快来下载学习吧。
    发表于 04-11 15:59 5次下载

    如何使用WebRTC/WebTorrent构建弹性Web

    WebTorrent是第一个在浏览器中工作的种子客户端。它完全由JavaScript编写,并使用WebRTC进行真正的点对点传输。无需浏览器插件,扩展或安装。
    的头像 发表于 08-29 16:18 3293次阅读

    iOS淘宝客户端应用名称发生变化 Android客户端应用名称尚未更改

    iOS淘宝客户端应用名称发生变化 Android客户端应用名称尚未更改
    发表于 04-18 15:37 937次阅读

    Zoom客户端爆出安全漏洞,泄露Windows的登陆凭据

    Windows 版 Zoom 客户端爆出了容易受到 NUC 路径注入攻击的安全漏洞。作为一款音视频会议应用,Zoom 还允许用户在聊天界面通过发送文本消息来互相交流。
    发表于 05-15 10:41 1423次阅读

    HTTP客户端快速入门指南

    HTTP客户端快速入门指南
    发表于 01-12 18:45 0次下载
    HTTP<b class='flag-5'>客户端</b>快速入门指南

    MQTT中服务客户端

    MQTT 是一种基于客户端-服务架构(C/S)的消息传输协议,所以在 MQTT 协议通信中,两个最为重要的角色,它们便是服务客户端
    的头像 发表于 07-30 14:55 2660次阅读

    ROS是如何设计的 ROS客户端

    为什么需要客户端。 原因是,节点与主节点master之间的关系是client/server,这时每个节点都是一个客户端(client),而master自然就是服务器(server)。
    的头像 发表于 09-14 17:29 870次阅读
    ROS是如何设计的 ROS<b class='flag-5'>客户端</b>库

    分享一款别样的ssh客户端-PortX

    目前支持ssh的客户端很多,比如putty、crt、xshell等,今天分享一款别样的ssh客户端-PortX,通过简单但全面的UI,PortX为您提供了纯粹的终端模拟体验。
    的头像 发表于 01-02 13:37 737次阅读
    分享一款别样的ssh<b class='flag-5'>客户端</b>-PortX