Firefox 25和AudioContext createJavaScriptNote不是一个函数

时间:2013-10-31 13:58:31

标签: html5 firefox web web-audio

Firefox 25表示要使用Web Audio,但似乎缺少一些重要的功能 - createJavaScriptNode。

我正在尝试构建一个分析器但是我在控制台中遇到了createJavaScriptNode不是函数的错误。

演示 - http://jsbin.com/olugOri/3/edit

1 个答案:

答案 0 :(得分:9)

您可以尝试使用createScriptProcessor代替。 Firefox仍未获得正确的值,但至少该错误不再存在。

演示 - http://jsbin.com/olugOri/4/edit

修改(评论中重要讨论的更多可见性)


如果媒体遵守Same-Origin Policy,则Firefox 支持MediaElementSource,但在尝试使用来自远程来源的媒体时,Firefox不会产生错误。

规范并非特定关于它(双关语),但我被告知这是一个预期的行为,问题实际上是Chrome ...这是Blink实现(Chrome,Opera)need to be updated to require CORS

MediaElementSource Node and Cross-Origin Media Resources

  

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媒体元素可以播放来自任何来源的媒体资源。当一个   element从不同于页面的原点播放媒体资源   原点,我们必须防止页面脚本能够读取内容   媒体(例如,提取视频帧或音频样本)。特别是我们   应该阻止ScriptProcessorNodes访问媒体   音频样本。我们还应该提供有关其他样品泄漏的信息   方式(例如定时信道攻击)。目前Web Audio规范说   什么都没有。

     

我认为我们应该通过防止任何非同源数据来解决这个问题   进入网络音频。这将最小化攻击面和对其的影响   网络音频。

     

我的建议是让MediaElementAudioSourceNode转换来自的数据   一个不同的原始流来沉默。

如果此提案符合规范,开发人员几乎不可能意识到他的MediaElementSource无效的原因。就目前而言,在Firefox 26 actually stops the <audio> controls from working at all中的createMediaElementSource()元素上调用<audio>并且会抛出无错误

您可以对来自远程来源的音频/视频数据做些什么危险的事情?一般的想法是,如果不将同源策略应用于MediaElementSource节点,一些恶意javascript可以访问只有用户应该访问的媒体(会话,VPN,本地服务器,网络驱动器)并发送其内容 - 或者它的一些表示 - 给攻击者。

默认情况下,HTML5媒体元素没有这些限制。您可以使用<audio><img><video>元素在所有浏览器中添加远程媒体。只有当您想要从这些远程资源中操作或提取数据时,才会发起同源策略。

  

[这是]出于同样的原因,您无法通过<canvas>转储图像数据跨域:媒体可能包含敏感信息,因此允许恶意网站转储和重新路由内容是一个安全问题。 - @nmaier