Firefox 25 说要带来 Web Audio,但似乎缺少一个重要功能 - createJavaScriptNode。
我正在尝试构建一个分析器,但我在控制台中收到 createJavaScriptNode 不是函数的错误。
Firefox 25 说要带来 Web Audio,但似乎缺少一个重要功能 - createJavaScriptNode。
我正在尝试构建一个分析器,但我在控制台中收到 createJavaScriptNode 不是函数的错误。
您可以尝试createScriptProcessor
改用。Firefox 仍然没有得到正确的值,但至少该错误不再存在。
演示 - http://jsbin.com/olugOri/4/edit
编辑:(评论中重要讨论的更多可见性)
MediaElementSource
规范并没有真正具体说明它(双关语),但有人告诉我这是一种预期的行为,问题实际上出在 Chrome 上……需要更新的 Blink 实现(Chrome、Opera)需要科尔斯。
From: Robert O'Callahan <robert@ocallahan.org>
Date: Tue, 23 Jul 2013 16:30:00 +1200
To: "public-audio@w3.org" <public-audio@w3.org>
HTML 媒体元素可以播放来自任何来源的媒体资源。当一个元素从与页面来源不同的来源播放媒体资源时,我们必须防止页面脚本能够读取媒体的内容(例如提取视频帧或音频样本)。特别是我们应该阻止 ScriptProcessorNodes 访问媒体的音频样本。我们还应该了解有关以其他方式泄漏的样本的信息(例如定时通道攻击)。目前,网络音频规范对此只字未提。
我认为我们应该通过防止任何非同源数据进入 Web Audio 来解决这个问题。这将最大限度地减少攻击面和对 Web 音频的影响。
我的建议是让 MediaElementAudioSourceNode 将来自不同源流的数据转换为静音。
如果这个提议成为规范,开发人员几乎不可能意识到他为什么MediaElementSource
不工作。就目前而言,在Firefox 26createMediaElementSource()
中调用一个<audio>
元素实际上完全停止了控件的工作并且没有抛出任何错误。<audio>
您可以对来自远程来源的音频/视频数据做哪些危险的事情?一般的想法是,如果不对节点应用同源策略MediaElementSource
,一些恶意 javascript 可以访问只有用户应该有权访问的媒体(会话、vpn、本地服务器、网络驱动器)并发送其内容或某些表示它——对攻击者。
默认情况下,HTML5 媒体元素没有这些限制。<audio>
您可以使用、<img>
或<video>
元素在所有浏览器中包含远程媒体。只有当您想从这些远程资源中操作或提取数据时,同源策略才会发挥作用。
[它] 出于同样的原因,您不能通过以下方式跨域转储图像数据
<canvas>
:媒体可能包含敏感信息,因此允许流氓网站转储和重新路由内容是一个安全问题。- @nmaier