WebRTC 更新:我们的第一个实现即将发布。欢迎加入派对!但请当心头顶。

我想分享一些关于 Firefox WebRTC 实现的有用且令人兴奋的更新,并提供我们未来 WebRTC 计划的一些抢先体验。然后,我将请 Adam Roach 提供一些关于 WebRTC 功能本身的历史背景以及整体进展情况的信息。Adam Roach 在 VoIP/SIP 领域从事 IETF 标准工作已有十多年,并于 11 月加入了 Mozilla WebRTC 团队。

准备在桌面版上发布我们的第一个 WebRTC 实现

Firefox 在桌面版 WebRTC 的初始实现方面取得了重大进展,尤其是在安全性和稳定性方面。在过去的几周里,PeerConnection 和 DataChannels 在 Nightly 和 Aurora 中默认已启用,我们预计将在 Firefox 22 的所有发布阶段保持启用状态(这意味着我们预计 WebRTC 将进入 Aurora、Beta 和正式版)。

我们还有机会更新 Firefox 22 中的 DataChannels 实现,以匹配最近的规范更改(上个月在 IETF 上达成一致)。请注意:为了符合规范更改,我们需要进行的更改 与之前的 DataChannels 实现(在 Firefox 21 或更早版本中)不兼容。因此,请使用 Firefox 22 及更高版本测试您的 DataChannels 应用。

TURN 支持已上线

还有更多好消息。我们刚刚在 Firefox Nightly 中添加了 TURN 支持,并且正在对其进行测试。这是一件大事,因为无论端点位于哪种类型的 NAT 后面,TURN 都可以提高呼叫成功连接的可能性。

TURN(穿越 NAT 后面的中继) 是一种用于管理(分配、使用和销毁)远程外部服务器上的中继会话的标准。此中继会话使 WebRTC 能够在两端都存在 NAT 且会导致呼叫失败的情况下进行连接。由于 TURN 会引入延迟,尤其是在 TURN 服务器远离两个端点时,并且 TURN 服务器可能很昂贵(因为它必须处理呼叫期间的所有媒体流),因此 ICE 通常仅在其他方法(如 STUN)无法使呼叫期间的媒体流正常工作时才使用 TURN。

适用于 Android 的 Firefox 上的 WebRTC 已准备好进行实验和反馈

2 月份在世界移动通信大会上,我们展示了 Firefox for Android 上 WebRTC 呼叫的令人兴奋的新演示。我们刚刚在 Nightly 中完成了此代码的上线。getUserMedia (gUM) 和 PeerConnection 的代码位于首选项后面(桌面版最初也是如此),但您可以通过将 media.navigator.enabled 首选项和 media.peerconnection.enabled 首选项都设置为“true”来启用它(浏览到 about:config 并搜索首选项列表中的 media.navigator.enabledmedia.peerconnection.enabled)。

在同一列表的首选项中,您还可以将 media.navigator.permission.disabled 设置为“true”,以自动授予访问摄像头/麦克风的权限,并在测试 gUM 和 WebRTC 时绕过权限/选择对话框。

此代码仍处于测试的早期阶段,但我们鼓励您尝试一下,报告问题,并提出问题并提供反馈。如果您报告问题或提供反馈,请务必提及“Android”,因为我们现在正在跟踪 Android 和桌面版的问题。与桌面版一样,我们将在未来一年继续改进、稳定和扩展此代码。

Firefox OS 上的 WebRTC 即将推出

Mozilla 也正在努力让此代码在 Firefox OS 上运行。Firefox OS 上的 WebRTC 还没有 Firefox for Android 上的 WebRTC 那么成熟,但 Firefox OS 团队正在努力缩小差距。您可以关注 Bug 750011 以跟踪此工作。

未来的 WebRTC 功能

由于我们所有的产品都共享 Gecko 引擎,因此对核心“平台”或 Gecko 代码的改进和新功能通常会使我们所有的产品受益。在未来一年,我们计划进行以下改进

  • 完整的错误和状态报告(符合规范)
  • 录制 API 支持
  • Persona 集成
  • 每个 Peer Connection 的多个音频和视频流(超出 1 个视频流和 1 个音频流)
  • 持久权限支持(在 UX/UI 中)
  • AEC 改进
  • 改进呼叫质量(尤其是音频延迟)

我们希望做更多的事情,但这些是我们最优先考虑的。我们还有一个WebRTC 文档和帮助页面,我们将在未来几周内努力完善并保持更新。该页面将包含我们已实现和正在开展工作的链接,以及贡献者参与的方式。

展望未来

尽管我们迫不及待地想要发布我们在桌面版上的第一个 WebRTC 实现(这对 Mozilla 和 WebRTC 功能本身来说都是一个巨大的里程碑),但我仍然鼓励所有尝试使用 WebRTC 的开发人员在可预见的未来继续使用 Nightly,因为那里是最新的和最棒的功能从规范中落地和错误首先被修复的地方——并且您的反馈在那里将是最有帮助的。

更重要的是,WebRTC 规范本身仍在标准化。有关更多详细信息,以及 WebRTC 背后的历史,我将本文的其余部分交给 Adam。

-Maire Reavy,Mozilla 媒体平台团队产品经理

WebRTC 是通信的真正未来

我是 Adam。

大约三年前,我亲爱的朋友兼 VoIP 远见卓识者 Henry Sinnreich 在午餐时花了一些时间试图说服我,通信的真正未来在于能够直接从无处不在的 Web 浏览器进行语音和视频通话。我仍然可以想象他热情地挥舞着他的智能手机,强调 Web 浏览器已经变得多么普遍。我的回应是,他的提议需要 IETF 和 W3C 之间前所未有的合作才能实现,并且需要主要浏览器供应商付出巨大的努力和承诺。简而言之:这是一个美好的愿景,但规模庞大。

然后,一件了不起的事情发生了。

WebRTC 崭露头角

在 2011 年期间,为这种 IETF/W3C 合作奠定了基础,并设计了一个广泛的技术框架。在 2012 年,Google 和 Mozilla 开始认真地着手实施正在开发的标准。

去年 11 月,旧金山举办了首届 WebRTC 博览会。开幕主题演讲座无虚席,人满为患,人们溢出到走廊里。在接下来的两天里,我们看到了无数新兴 WebRTC 服务的演示,并看到了数十家公司致力于 WebRTC 生态系统的开发。David Jodoin 与我们分享了一个惊人的事实,即美国十大银行中有一半已经在计划他们的 WebRTC 战略。

在 2 月份,Mozilla 和 Google 通过演示 Firefox 和 Chrome 之间的实时视频通话,为 WebRTC 铁路铺设了最后一根道钉。

那么我们现在处于什么阶段?

有了这个里程碑,很容易将 WebRTC 视为“即将完成”,并且很容易想象我们现在只是在打磨一些粗糙的边缘。虽然我非常希望如此,但仍有大量工作要做。

去年 2 月在波士顿,我们为各个标准工作组举行了联合临时会议,这些工作组正在为 WebRTC 工作做出贡献。主题包括从 WebRTC javascript API 的调用约定到如何发出多个视频流的结构等各种问题——这些问题对于标准的广泛采用至关重要。我并不是说 WebRTC 标准化工作举步维艰。在过去 16 年里,我一直致力于标准化工作,我可以向您保证,对于一项如此雄心勃勃的技术而言,这种开发速度是完全正常且预期的。我想说的是,如此庞大、如此重要、且涉及如此多利益相关者的规范需要很长时间。

标准的现状

即使标准化工作今天就完成了,WebRTC 所做的事情的规模也需要很长时间才能实现、调试和完善。我们的黄金道钉互操作时刻需要双方付出大量工作,并且揭示了两个实现中的许多缺点。去年 2 月也标志着SIPit 30的诞生,其中包括首个实际的 WebRTC 互操作测试事件。可以预见,此测试除了我们已知的限制之外,还发现了几个新的错误(在我们自己的实现以及其他人的实现中)。

当您将我知道 Mozilla 和 Google 都尚未开始着手的所有功能,以及尚未指定的任何功能都考虑在内时,在我们开始为 WebRTC 添加修饰之前,很容易就有一年的工作要做。

我们正在努力构建互联网上通信的未来,并且很难不对这项技术带来的机遇感到兴奋。我对 WebRTC 获得的热烈反响感到非常高兴。但我们都需要记住,这仍然是一项正在进行的工作。

来玩吧!但请当心头顶。

所以,请进来,四处看看,并试玩我们正在做的事情。但不要期望一切都光鲜亮丽且完美无缺。虽然我们正在尽最大努力限制不断变化的标准对应用程序开发人员和用户的影响,但随着规范的演变以及我们对哪些方法最有效了解更多,不可避免地会出现变化。我们会在这里的 Hacks 博客上让您了解这些变化,并尽量减少它们的影响,但我完全预计应用程序开发人员将不得不随着平台的演变进行调整和修改。预计我们将需要几个版本才能将语音和视频质量提升到我们都满意的程度。最重要的是,请了解,在相当长的一段时间内,任何人的实现都无法完全匹配快速发展的 W3C 规范。

我相信我们都希望 2013 年成为“WebRTC 之年”,正如一些人已经将其冠名的那样。对于早期采用者来说,这绝对是尝试现有可能性、了解哪些方面无法按预期工作以及——最重要的是——向我们提供反馈的最佳时机,以便我们能够改进我们的实现并改进正在开发的标准。

只要您能够处理轻微的中断和变化;如果您能够处理某些事情无法按描述工作的情况;如果您准备好撸起袖子并影响 WebRTC 的发展方向,那么我们随时欢迎您。带上您的安全帽,并保持沟通渠道畅通。

对于那些希望部署付费服务、可靠的渠道来管理客户关系、关键任务应用程序的人来说:我们也希望收到您的反馈,但请谨慎制定您的发布计划。我预计我们将在明年某个时候拥有一个稳定且真正开放的商业平台。

鸣谢:原始安全帽图片来自openclipart.org;Anthony Wing Kosner 首次将“黄金道钉”类比应用于 WebRTC 互操作性。

关于 Adam Roach

Adam Roach 与 Mozilla 的 WebRTC 实现团队合作,将实时技术引入 Firefox 和 FirefoxOS 共享的核心库。自 1997 年以来,他一直致力于构建基于 IP 的实时通信世界,方法是进行协议标准化、架构、设计和实现。

更多 Adam Roach 的文章…

关于 Robert Nyman [荣誉编辑]

Mozilla Hacks 的技术布道师兼编辑。发表关于 HTML5、JavaScript 和开放网络的演讲和博客文章。Robert 是 HTML5 和开放网络的坚定支持者,自 1999 年以来一直从事 Web 前端开发工作 - 在瑞典和纽约市。他还会定期在 http://robertnyman.com 上发表博客文章,并且热爱旅行和结识新朋友。

更多来自 Robert Nyman [荣誉编辑] 的文章…


24 条评论

  1. Hervé Renault

    各位好,

    “在接下来的一年中,我们计划进行以下改进
    录制 API 支持”

    这是否意味着截至目前,Firefox OS 完全无法录制音频?

    2013 年 4 月 18 日 06:23

    1. Robert Nyman [编辑]

      录制 API 涉及规范中定义的 API 以及对所有平台的支持。
      具体到 Firefox OS 及其当前状态,我建议您阅读相关的 音频录制错误报告

      2013 年 4 月 18 日 11:52

    2. Doug Pelton

      感谢更新。WebRTC 能够在生产环境中实现如此多的创新,这将是非常棒的。

      2013 年 4 月 18 日 21:56

  2. Kim

    我知道有一个关于 多个挂件 的错误报告。是否也存在,或者是否应该创建一个关于挂件中多个分享按钮的错误报告?

    摄像头挂件有一个,所以这可能是由于前后摄像头,但两者都激活了同一个摄像头导致的

    http://i.imgur.com/xbXF0IV.png

    http://i.imgur.com/Q7dwF3C.png

    2013 年 4 月 18 日 08:17

    1. Robert Nyman [编辑]

      感谢告知。我认为,如果您能找到一个额外的错误报告,并且它源于相同的问题,我们将合并它们。谢谢!

      2013 年 4 月 18 日 11:54

  3. Gervase Markham

    Mozilla 是否计划运行一个 TURN 服务器,其地址内置于 Firefox 中?如果不是,Firefox 如何找到要使用的 TURN 服务器,谁来支付其带宽费用?:-)

    Gerv

    2013 年 4 月 19 日 09:11

    1. Adam Roach

      到目前为止,我们还没有计划为公众提供 TURN 服务器。正如您所暗示的,这些节点非常消耗带宽。我们预计希望启用 TURN 进行 NAT 穿越的服务将运行自己的 TURN 服务器。

      WebRTC API 旨在允许应用程序指定自己的 STUN 和 TURN 服务器,因此对于服务来说,利用这一点相对容易。如果未指定 STUN 或 TURN 服务器,我们确实会默认使用 Mozilla 运营的 STUN 服务器,这允许某些类型的 NAT 进行穿越。

      2013 年 4 月 19 日 09:55

    2. Maire Reavy

      目前,Firefox 并不计划运营开放的 TURN 服务。WebRTC 应用程序本身可以提供或将用户指向特定的 TURN 服务器。例如,来自 Hangouts 和 WebEx 等大型公司的应用程序将为其用户提供 TURN 服务。对于拥有对称企业防火墙的企业,企业可以设置自己的 TURN 服务器来代理进出其企业网络的媒体。我们支持通过 about:config 设置 TURN 服务器,但我们将在未来添加一个 UI 配置选项来执行此操作。

      2013 年 4 月 19 日 13:16

      1. Gervase Markham

        因此,您可以在页面 JS 中将 TURN 服务器设置为通道设置的一部分,但如果没有设置,它将使用 about:config 或 UI 选项中的服务器,或者如果这两个都没有,则根本不使用 TURN?

        2013 年 4 月 19 日 13:21

        1. Maire Reavy

          是的,没错。甚至还有一个首选项可以告诉 Firefox 始终使用 about:config 中指定的服务器,并忽略 JS 页面中指定的服务器。

          2013 年 4 月 19 日 13:32

  4. cameron

    您的 TURN 支持是否包括内部的 IPv6 TURN 服务器以连接到 IPv4 对等节点?

    2013 年 4 月 20 日 20:49

    1. Adam Roach

      目前,我们的 ICE 堆栈不包括 IPv6 支持。这是一个已知的不足之处,并且已列入路线图中。您可以通过关注错误报告 797262 来跟踪进度。

      2013 年 4 月 22 日 07:28

  5. Victor Wibisono

    Web RTC 是否会很快支持远程桌面控制?或者现在是否支持?谢谢! :)

    2013 年 4 月 23 日 21:12

    1. Robert Nyman [编辑]

      据我所知,目前至少还没有办法做到这一点。

      2013 年 4 月 24 日 04:07

    2. Gervase Markham

      支持远程桌面控制意味着浏览器具有控制您桌面的功能,就像它具有访问您的摄像头和麦克风的功能一样。我不认为有任何计划将此添加到 WebRTC 规范中。

      Gerv

      2013 年 4 月 24 日 06:25

    3. Fabian

      Chrome 团队一直在尝试“标签共享”,您可以看到
      http://updates.html5rocks.com/2012/12/Screensharing-with-WebRTC

      不过,我不确定此功能的状态。

      2013 年 4 月 26 日 00:57

    4. Lennie

      Mozilla 还有 TowTruck 项目

      https://blog.mozilla.org/labs/2013/04/introducing-towtruck/

      2013 年 5 月 4 日 01:50

  6. jamie McDonnell

    大家好,这个消息太棒了!“很快”是多久?在未来几天、几周还是几个月内?;)
    感谢你们的辛勤工作!
    Jamie

    2013 年 4 月 25 日 00:50

    1. Robert Nyman [编辑]

      如果一切按计划进行并在 Firefox 22 中发布,它将在 6 月中旬正式发布在 Firefox 中。

      2013 年 4 月 25 日 02:09

  7. Fabian

    您好,

    我只是想分享一些困惑 :)

    过去几天我一直在尝试使用 WebRTC P2P 视频,现在我有一个 WebSocket 服务。我让它工作了,这意味着我可以在 2 个 Chrome(v. 26)浏览器或 2 个 FF(v. 20)浏览器之间开始对话,但不能在 Chrome 和 Firefox 之间进行对话。我在 webrtc-demos.appspot.com 和 conversat.io 的演示中也注意到了同样的问题,所以我想知道你们是如何与 Chrome 进行通话的(可能是夜间构建版本)。

    我注意到 mozPeerconnection 构造函数不能将 ICE 服务器作为参数,而在 webkitPeerConnection 中,它是必需的。此外,从逻辑上讲,Chrome 会触发 icecandidate 事件,而 FF 不会。尽管如此,我仍然可以在同一路由器后面的两个对等节点之间使用 FF 进行连接。此外,我在这篇帖子中读到 TURN 会使速度变慢,所以它不是,或者不应该用作可选的回退选项(因为在我的情况下,即使是同一 NAT 后面的两台计算机也可以连接)。我希望 ICE 的必要性将在文档中得到解决。

    无论如何,WebRTC 太棒了!此致,Fabian

    2013 年 4 月 25 日 03:25

  8. Gene Vayngrib

    我们正在开发一系列使用视频录制、聊天和视频聊天的简单移动应用程序。我们必须了解,当首批手机在 7 月份发布时,Firefox OS 是否会包含 WebRTC。

    2013 年 5 月 11 日 00:17

    1. Robert Nyman [编辑]

      目前我无法确定,但我认为 WebRTC 支持不会包含在首个 Firefox OS 版本中。

      2013 年 5 月 12 日 07:22

  9. Gene Vayngrib

    Robert,谢谢。好的,除了视频聊天之外,对于视频录制,我们使用了一些技巧,因为 mediaStreamRecorder 既未在 Chrome 中实现,也未在 Firefox 中实现。

    我们使用 canvas 生成 webp 图像,并使用 whammy 将它们组合成 webm 视频(请参阅 http://ericbidelman.tumblr.com/post/31486670538/creating-webm-video-from-getusermedia)。我们分别录制音频并将两个 Blob 发送到服务器,服务器将它们合并成一个文件。

    这在 Chrome 中有效,但问题是 Firefox 本身不支持 webp,而使用 webpjs 将 png 转换为 webp 每个帧需要大约 2 秒,这在实践中不可行。

    您是否了解 Firefox 视频录制的任何其他解决方法,这些方法现在有效或至少在 7 月份的 Firefox OS 推出时可用?

    2013 年 5 月 14 日 10:29

    1. Robert Nyman [编辑]

      我还没有真正尝试过这种方法,但是您有没有理由不能从 canvas 生成 PNG 图像?

      除此之外,我不确定初始推出时哪种方法最好,但对于未来而言,WebRTC 绝对是最佳选择。

      2013 年 5 月 14 日 15:31

本文评论已关闭。