完整的 WebRTC 支持即将登陆您附近的网页浏览器!

网络是我们生活中不可或缺的一部分,也是我们彼此沟通的方式。因此,当我们达到进化顶峰,在为用户和 Web 开发人员提供更好、更开放的、改变游戏规则的体验方面取得长足进步时,我们会感到非常兴奋!我们相信 WebRTC 就是其中一步。

什么是 WebRTC?

WebRTC 中的 RTC 代表实时通信,它直接在网络上提供,无需任何插件或第三方软件。其理念是在网页浏览器中以最强大的方式共享和流式传输视频、音频和数据,提供媒体丰富的交换。

来自 Mozilla、Google、Opera 等公司的代表一直在研究 WebRTC 超过一年,它正在成为 W3C 建议

WebRTC 的三个基石是

MediaStream
通过 getUserMedia API,授予 Web 应用/网站访问您计算机上的摄像头和麦克风的权限。
DataChannel
点对点通信数据。
PeerConnection API
启用两个 Web 浏览器之间用于音频和视频的直接点对点连接。

代码简洁性

如果您查看我们使用 WebAPI 的工作,您会看到许多简单直观的 API 的示例。我们认为 WebRTC 对所有 Web 开发人员都易于使用非常重要,而不仅仅是那些“火箭科学家”(当然,成为火箭科学家也没什么错——只是不是每个人都是。:-))

为了实现这一点,Web 浏览器会处理 Web 开发人员的实时媒体和网络,因此开发人员可以专注于编写将实时通信作为其中一项功能的应用。我们认为网络本身在某种程度上已成为如此多开发人员的极其流行的工具,因为它使创建精彩的事物与世界分享变得容易。

我们相信 WebRTC 将因同样的原因而获得成功。

例如——您可能已经在其他地方看到过——将计算机的网络摄像头直接流式传输到网页中非常简单(当然,需要用户授予访问权限)。

/*
	NOTE: This is meant to show a simplified version,
	without prefixes and such that are currently used
	for experimental implementations
*/

// Get a reference to an existing video element, set to autoplay
var liveVideo = document.querySelector("#live-video");

/*  Request access to the webcam
	Note: in current implementations, this has to
	be prefixed, and Google Chrome needs a Blob URL
	for the MediaStream
*/

navigator.getUserMedia(
	{video: true},
	function (stream) {
		liveVideo.src = stream;
	},
	function (error) {
		console.log("An error occurred: " + error);
	}

);

如果您现在想深入了解代码和 API,那么 无需插件的实时通信 是一个不错的阅读材料。

即将登陆您附近的网页浏览器!

需要注意的是,WebRTC 已经计划了很长时间,我们现在终于达到了一步,即 Firefox、Google Chrome 和 Opera 等尖端的 Web 浏览器实现了对 WebRTC 的支持,并将其引入网络。对于 Firefox,我们的计划是在明年 1 月初的 Firefox 18 中提供完整的 WebRTC 支持。

敬请期待,我们会随时向您通报进展情况!

关于 Robert Nyman [荣誉编辑]

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

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


25 条评论

  1. Thijs

    非常令人兴奋!是否有我可以测试的 Ubuntu 上的 Firefox 测试版或 Alpha 版?

    2012 年 9 月 11 日 04:35

    1. Robert Nyman

      谢谢,我们也这么认为!目前还没有可供测试的版本。但是,如 getUserMedia 已准备就绪! 中所述,该部分已准备好可在 Firefox 的 Nightly 版本 中进行测试。

      最终,所有新功能都将在 Nightly 中提供,然后作为下一步——可能以更稳定的形式——在 Firefox Aurora 中提供。

      如果您对 Firefox 发布渠道和同时运行多个版本感兴趣,我建议您阅读 Firefox 和发布渠道

      2012 年 9 月 11 日 04:48

  2. Daniel Filho

    太棒了,Robert。

    我期待为 B2G 创建一个视频聊天(不好意思,不能称之为 Firefox OS!哈哈)

    :)

    2012 年 9 月 11 日 05:37

    1. Robert Nyman

      是的,我真的很高兴这件事正在发生!
      并且期待看到视频聊天!

      2012 年 9 月 11 日 05:51

  3. Arno

    是否有公共测试站点,我可以在其中使用 Firefox Nightly 与其他人测试 WebRTC 对话?

    2012 年 9 月 11 日 07:27

    1. Robert Nyman

      目前状态还不太适合推荐。不过,我们会在这里随时向您通报最新情况,并在我们取得进展时发布更多有趣的帖子!

      2012 年 9 月 11 日 09:48

  4. Shmerl

    这是否意味着可以使用纯 JavaScript 实现 XMPP/Jingle 堆栈?

    2012 年 9 月 11 日 11:54

  5. Randell Jesup

    由于 JSEP 为 JS 应用提供了连接所需的 SDP,因此应用可以使用 JS 实现任何它喜欢的协议来将其发送到另一方。(请注意,安全问题限制 JS 通常只能访问其加载的服务器。)

    人们已经实现了 SIP-in-JS,因此您*可能*可以在 JS 中实现 XMPP/Jingle。不过我不会说这很容易,但使用 enscriptem 可以将 C++ 代码交叉编译为 JS,作为一种变通方法来实现它。

    2012 年 9 月 11 日 12:08

    1. Shmerl

      如果没有这种实现,WebRTC 的优势将仅限于某些自定义/非互操作的 Web 到 Web 使用案例。拥有完整的 XMPP/Jingle 实现将允许与任何兼容的客户端进行通信,因此我希望 Google 或其他公司会进行开发(因为 Google 是 XMPP/Jingle 的主要支持者之一)。

      2012 年 9 月 11 日 12:17

  6. rjesup

    我需要说明的是,XMPP/Jingle 无法解决您的问题,因为直接连接还需要其他一些内容(并提供适当的安全保证)。因此,您可以将信令转换为 XMPP/Jingle,但您可能仍然需要媒体网关。

    我还需要说明的是,Jingle 的主要用户/作者是 Google 的 WebRTC 负责人 Justin Uberti,他也是 WebRTC 使用的 JSEP 协议的主要设计者(与 Cullen Jennings 合作)。

    您可能需要在 discuss-webrtc 邮件列表中询问特定用例和处理它们的最佳方法。

    2012 年 9 月 11 日 13:05

    1. Shmerl

      我明白了,谢谢。XMPP 自然地通过 XMPP 服务器处理初始通信,但 Jingle 本身最终应该作为直接 P2P RTP 流工作(连接建立后)。因此,我自然是在谈论使用其 JID 进行通信并首先登录其 XMPP 帐户的用户。

      2012 年 9 月 11 日 13:28

    2. Shmerl

      安全应使用 OTR 和 ZRTP 等内容进行处理,但这本身就是一个完整的领域。

      2012 年 9 月 11 日 13:30

  7. Peter Moskovits

    现有的 WebSocket 解决方案开箱即用地支持 XMPP。例如,我工作的公司 Kaazing 提供其 WebSocket 网关的 XMPP 版本,提供 JavaScript(以及 Java 和 .NET 和 Flash)XMPP API:http://kaazing.com/products/xmpp-edition
    这是一个实时演示的屏幕截图:https://vimeo.com/49419793。演示托管在 http://demo.kaazing.com/livefeed/ 上。

    2012 年 9 月 13 日 16:09

  8. Randell Jesup

    “但 Jingle 本身最终应该作为直接 P2P RTP 流工作(连接建立后)”

    我需要说明的是,由于各种安全原因,WebRTC 不会使用纯 RTP 进行通信,因此要与任何旧版纯 RTP 设备进行通信,它需要通过网关。目前,Chrome 支持 SDES-SRTP(可能与 XMPP 兼容),但规范仅规定 DTLS-SRTP,而 Mozilla 预计仅支持此规范(同样,出于安全原因——SDES 会让您受所有有权访问您 SDP 的服务器的支配)。Chrome 将支持 DTLS-SRTP;他们可能会删除 SDES-SRTP——我不知道。

    此外,目标必须支持完整的 ICE(而不是 GTalk/等使用的 ICE 子集),这可能还需要网关。

    2012 年 9 月 14 日 02:44

    1. Shmerl

      因此,最终这意味着如果没有网关,将无法仅使用 JavaScript 构建 XMPP/Jingle 客户端(即用 JavaScript 代码替换 Google Talk 本机插件)?这是否违背了初衷?许多 XMPP 服务器已经存在,但并非所有服务器都有额外的网关。

      或者这意味着 XMPP 应该提出一些新内容而不是 Jingle,以便能够直接利用 WebRTC?

      2012 年 9 月 19 日 09:05

      1. Randell Jesup

        WebRTC 可能无法使用纯 JS 在服务器上实现——需要太多线路协议,例如 ICE(ICE 中有严格的定时要求)。

        此外,我认为您是想在*浏览器*中构建 XMPP/Jingle 客户端,对吗?WebRTC 不是为此而设计的;它不是通用的“访问网络流”协议——这样做会产生严重的安全隐患。

        服务器上的某些内容必须:执行 ICE、处理 DTLS-SRTP 流并处理我们要求的一些 RTP RFC。其他内容是可选的,但也很不错(捆绑、rtcp-mux 等)。JS 代码可以获取 SDP 并将其转换为 XMPP/jingle,并通过 https/websocket/等发送到服务器(它从那里加载了 JS 代码!),或者它可以将 JSEP 发送到服务器并让服务器处理(或将其转换为 XMPP 并转发)。

        2012 年 9 月 19 日 09:36

        1. Shmerl

          我明白了,因此为了让所有这些都能正常工作,XMPP 服务器需要专门扩展以专门满足 WebRTC 的需求(例如,ejabberd 已经具有 BOSH 和 Websockets 扩展以满足基于 Web 的 XMPP 客户端的需求)。我希望所有这些最终都能朝着这个方向发展。

          2012 年 9 月 20 日 15:44

  9. Saraj

    移动平台(Android 和 iOS)是否也支持?

    2012 年 9 月 14 日 16:14

    1. Robert Nyman

      我只能回答 Android 上的 Firefox,它计划在未来推出(不仅仅是在完全相同的时间)。

      对于 Android、iOS 和其他移动操作系统的其他 Web 浏览器,我希望它们也能尽快获得支持。

      2012 年 9 月 17 日 02:00

  10. Jim

    Mozilla 是否计划提供即时消息和 WebRTC 服务?我不认为所需的带宽会过高。由于 Mozilla Marketplace 仍需要用户帐户管理,因此为这些帐户提供 XMPP 即时消息和 WebRTC 将对 Thunderbird 和 Firefox 都很有用。

    2012 年 9 月 18 日 21:26

    1. Robert Nyman

      据我所知,目前还没有。总的来说,我们希望为人们提供实现和 API,让他们可以构建他们想要的任何东西,而不是服务。

      也就是说,可以通过 Mozilla Persona 实现用户帐户,并且我们提供的服务可能会随着时间的推移而发生变化。

      2012 年 9 月 19 日 03:50

  11. Hayk

    迫不及待地想在移动设备上看到 WebRTC

    2012 年 9 月 20 日 21:57

    1. Robert Nyman

      我也有同感!

      2012 年 9 月 21 日 01:13

  12. Anuj

    你好,Robert。这件事一直困扰着我。是否有任何方法可以通过 WebRTC 流式传输录制好的视频文件,例如 .ogg 或 .webm?我计划制作一个视频流式传输 Web 应用,但不知道从哪里开始。我希望 WebRTC 是答案。

    2012 年 10 月 28 日 21:54

    1. Robert Nyman

      好问题。我希望这将在以后可用。

      2012 年 10 月 30 日 04:49

本文评论已关闭。