大多数人还记得 Mozilla Hacks 中的那篇名为 Hello Chrome, it’s Firefox calling! 的博客文章,该文章演示了 Firefox 和 Chrome 之间的 WebRTC 视频聊天。它引起了很多关注。从那时起,我们在 Fresh Tilled Soil 这里看到,大量初创公司和企业纷纷涌现,构建基于 WebRTC 视频聊天技术的各种产品。WebRTC 布道者 Tsashi Levent-Levi 一直在他的博客上采访这些公司中的大多数,这个列表 相当令人印象深刻!
WebRTC 聊天演示
与大多数早期采用者一样,我们已经尝试了很长一段时间的 WebRTC。我们当然创建了 我们自己的 WebRTC 视频聊天演示,并且最近还发布了 WebRTC 视频聊天小部件。
这些小部件的工作原理非常简单,任何人都可以获取以下 HTML 嵌入代码
并将此代码添加到任何网站或博客文章中。您将在他们的网站上看到以下小部件
从这里开始 WebRTC 视频聊天就非常简单了,只需为房间想一个名字,输入它并点击开始聊天。告诉对方也这样做,一切就准备好了。
与往常一样,请确保您在 Firefox Nightly 或 Google Chrome 的最新稳定版本中尝试一下。如果您使用的是平板电脑,请确保使用 Google Chrome beta 版(如果您使用的是 Google Chrome 浏览器)。
需要注意的是,在这个第一个版本中,我们的视频聊天仅限于每个房间两个参与者。如果一个房间名称被两个人占用,则尝试连接到此房间的第三个人将无法连接。
工作原理
不用深入研究 WebRTC 视频聊天实际工作原理背后的代码,让我们简要回顾一下当您点击开始聊天按钮时幕后实际发生的事情以及 WebRTC 视频聊天实际工作原理。以下是对实际发生情况的逐步时间线,以便您更好地理解
关于此步骤的说明:“一旦远程媒体开始流式传输,就停止添加 ICE 候选者” - 这是一个临时解决方案,可能会导致许多网络拓扑结构的媒体路由不理想。它应该只在 Chrome 的 ICE 支持修复之前使用。
一个快速且非常重要的提示,请记住,当您尝试使其工作时,我们使用了类似于“polyfill”的技术,如 Remy Sharp 在这篇文章中所述。正如 Remy 所描述的那样,我们编写了一段代码以适应 Firefox 语法以获得跨浏览器功能。
我们遇到的问题以及解决方法
正如您可能预料到的那样,我们在构建此过程中遇到了许多问题。WebRTC 正在快速发展,因此我们每天都在解决许多问题。以下只是我们遇到的问题以及解决方法。
Google Chrome 中的 PeerConnection 功能
在使用 Chrome 中的新 PeerConnection 功能时,我们发现它工作起来需要严格的操作顺序;更具体地说
- 在发送 SIP(提议/应答 SDP)之前,对等方必须具有本地流式视频
- 对于“应答者”;在对等方生成“应答 SDP”之前,不要添加 ICE 候选者
- 一旦远程媒体开始流式传输,就停止添加 ICE 候选者
- 在收到“提议 SDP”之前,切勿为应答者创建对等连接
我们通过处理这些问题并按上述顺序处理连接来解决此问题。这对使连接完美运行至关重要。在此之前,它只会偶尔工作。
由于延迟而增加的延迟
在流式传输到移动设备时,由于延迟和通过手机上网的限制,会增加延迟。
我们通过在 URL 末尾使用哈希标签来降低流式视频的分辨率来解决此问题。URL 可以选择包含 '#res=low'
以获得低分辨率流式视频和 '#res=hd'
以获得高清流式视频,作为可选的 URL 参数。这里需要快速说明的是,现在可以使用其他可配置属性,例如每秒帧数,您可以将它们用于相同的目的。
录制 WebRTC 演示
我们一直在尝试录制 WebRTC 视频演示。在录制视频时,我们使用新的 JavaScript 类型数组来保存流式数据。我们很快发现,只能单独录制视频和音频。
我们通过创建两个录音实例来解决此问题,一个用于音频,一个用于视频,它们利用了新的 JavaScript 数据类型并同时录制了两个流。
结论
涉足这些东西令人兴奋,我们非常喜欢 WebRTC,以至于我们创建了一个完整的 页面专门用于我们的实验,使用这项技术和其他我们认为将在 2013 年改变网络的技术。如果您有任何问题,请随时与我们联系。
关于 Dmitry Dragilev
Dmitry Dragilev 是 Fresh Tilled Soil 的技术布道者,这是一支由设计师、编码员和 UX 专家组成的团队,他们通过咨询、培训和活动帮助企业家和企业为 Web 和移动应用程序创造出色的用户体验。自 2005 年以来,他们已经帮助了 300 多家客户,包括通用电气、微软、麻省理工学院、哈佛大学、TEDx、时代华纳有线电视、沃博森、Hubspot 等众多公司。
关于 Paul Greenlea
Fresh Tilled Soil 的高级前端开发人员和策略师。Paul 是一位发明家。他从小就喜欢捣鼓电子产品和技术。他从 12 岁开始设计和编程,当时他开始创建自己的电脑游戏,多年来,他在 UI 设计师到首席工程师等职位上领导团队完成战略、概念和执行阶段。他目前密切关注快速发展的移动行业,并坚信它是未来。
关于 Robert Nyman [荣誉编辑]
Mozilla Hacks 的技术布道者和编辑。就 HTML5、JavaScript 和开放网络发表演讲和撰写博客。Robert 是 HTML5 和开放网络的坚定支持者,自 1999 年以来一直在为网络进行前端开发工作——在瑞典和纽约市。他还定期在 http://robertnyman.com 上发布博客,并且喜欢旅行和结识新朋友。
26 条评论