桌面版 WebRTC 现已在 Firefox Nightly 中,并且也已在 Firefox Aurora 中,不过 Nightly 拥有最热最新的修复。
我们支持 mozGetUserMedia
、mozRTCPeerConnection
和 DataChannels
。我们有一个针对 mozGetUserMedia
的基本 UI,我们预计会在
接下来的几周进行更新。
在 Firefox 中启用 WebRTC
该代码目前位于一个首选项后面,等待更多测试。要在 Firefox 的 Nightly 桌面版构建中启用我们的 WebRTC 代码,请浏览至 about:config
并将 media.peerconnection.enabled
首选项更改为 true
。
以下是与 getUserMedia()
和 mozRTCPeerConnection()
相关的 3 个首选项
media.navigator.enabled
仅启用对mozGetUserMedia()
的调用media.navigator.permission.disabled
自动授予访问摄像头/麦克风的权限,并绕过权限/选择对话框media.peerconnection.enabled
启用mozRTCPeerConnection()
的使用
注意:media.peerconnection.enabled
意味着 media.navigator.enabled
已被设置为 true
。
演示和即将推出的更改
即使在今天,你也可以用这些 API 做很多事情。例如,请查看我们在 GitHub 上的测试登陆页面。我们会尝试发布通知,如果你运行的是过时的浏览器 - 以及有关重要错误修复和 API 更改的新闻更新!
即将推出的更改包括
- 对约束的支持(用于 getUserMedia 和 createOffer/Answer)
- 对带宽、分辨率、回声消除等的控制
- 统计信息
- TURN 支持(允许在对称 NAT 后面的设备之间建立连接)
- 修复音频漂移(A/V 同步的渐进性损失)
- Trickle ICE、rtcp-mux 和 BUNDLE 支持
- getUserMedia() UI 更新
- 以及许多错误修复
为了让你了解这些 API 的强大功能,在几天内,我们的团队就制作了一个 社交 API 集成演示,它允许你进行视频 +
与你的朋友进行文字聊天,将文件拖放到彼此之间,放下链接、标签等,所有这些都简单地使用了 DataChannel API。
DataChannel API 在表面上非常简单,并且具有与 WebSockets 非常相似的 API。一个简单的例子
/**
* Assume we've connected a PeerConnection with a friend - usually with audio
* and/or video. For the time being, always at least include a 'fake' audio
* stream - this will be fixed soon.
*
* connectDataConnection is a temporary function that will soon disappear.
* The two sides need to use inverted copies of the two numbers (eg. 5000, 5001
* on one side, 5001, 5000 on the other)
*/
pc.connectDataConnection(5001, 5000);
function handle_new(channel) {
channel.binaryType = "blob";
channel.onmessage = function(evt) {
if (evt.data instanceof Blob) {
console.log("I received a blob");
// assign data to an image, save in a file, etc
} else {
console.log("I got a message: " + evt.data);
}
};
channel.onopen = function() {
// We can now send, like WebSockets
channel.send("The channel is open!");
};
channel.onclose = function() {
console.log("pc1 onclose fired");
};
};
/* For when the other side creates a channel */
pc.onDataChannel = handle_new;
channel = pc.createDataChannel("My Datastream",{});
if (channel) {
handle_new(channel);
}
提交错误和前进
WebRTC 的进展(以及错误修复)非常快,我们鼓励你试用并提交错误。(我们有很多错误!但我们正在尽力尽快解决它们,所以请确保你使用的是 Nightly 版本并定期更新。)
非常感谢错误报告。请在
Bugzilla 上提交错误,选择“产品:核心”、“组件:WebRTC”。
该团队对所有进展感到兴奋,也感到疲惫。到目前为止的工作代表了 Firefox 团队中许多人(太多人无法一一列举 - 特别是因为我们不想忘记)投入的无数时间
某个人 - 但你知道你是谁!感谢所有帮助我们把这架“747”降落在飞行甲板上的所有人。
随着我们努力将此打造成为 Firefox 和网络的出色产品功能,我们将继续定期发布博客文章介绍我们的进展。
关于 Anant Narayanan
@anantn 是 Mozilla Labs 的一名黑客,专门从事通用技术。他之前曾在 Weave、Jetpack、账户管理器 和 Rainbow 等项目中工作。他目前正在研究 开放式网络应用 和 网络实时通信。
关于 Robin Hawkes
Robin 热衷于通过代码解决问题。他是一位数字匠人,Pusher 的开发者关系主管,前 Mozilla 布道师,书籍作者,也是一位英国人。
40 条评论