Firefox 25和AudioContext createJavaScriptNote不是一个函数

dig*_*dio 1 firefox html5 web web-audio-api

Firefox 25说要引入Web Audio,但似乎缺少一些重要的功能 - createJavaScriptNode.

我正在尝试构建一个分析器,但我在控制台中得到错误,createJavaScriptNode不是一个函数.

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

idb*_*old 9

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

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

编辑 :( 评论中重要讨论的更多可见性)


如果媒体遵守同源策略,Firefox 确实支持,但是当尝试使用来自远程源的媒体时,Firefox不会产生错误.MediaElementSource

规范是不是真的特定(双关语意),但我一直在告诉我,这是一个预期的行为,这个问题实际上是与Chrome浏览器...这是眨眼实现(铬,歌剧),其需要更新要求CORS.

MediaElementSource节点和跨源媒体资源:

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 Audio来解决这个问题.这将最小化攻击面和对Web Audio的影响.

我的建议是让MediaElementAudioSourceNode将来自非同一原始流的数据转换为静默.

如果这个提议符合规范,那么开发人员几乎不可能意识到他MediaElementSource的工作原理.由于它现在代表,呼吁createMediaElementSource()的对<audio>中元素的Firefox 26实际上停止<audio>从所有工作的控制,并引发错误.

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

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

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

  • @jsantell Firefox似乎支持`MediaElementSource`,但前提是音频资源来自同一个来源.如果托管音频的服务器设置正确的CORS标头,它也应该工作.我不确定我明白为什么他们决定这样做.使用来自远程原点的音频数据可以做些什么危险的事情?如果这是符合规格,为什么Chrome允许它? (3认同)
  • `createJavaScriptNode`是一个不推荐使用的方法(由`createScriptProcessor`取代),与`noteOn`的替换方式相同.由此产生的值应该与webkit实现相同,否则,请确保提交错误! (2认同)