这个答案几乎完全引用自我对相关问题的回答:Firefox 25 和 AudioContext createJavaScriptNote 不是函数 https://stackoverflow.com/questions/19708561/firefox-25-and-audiocontext-createjavascriptnote-not-a-function/19710142#19710142
Firefox does支持MediaElementSource
如果媒体遵守同源政策 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript,但是当尝试使用来自远程源的媒体时,Firefox 不会产生错误。
The specification is not really specific about it (pun intended), but I've been told that this is an intended behavior, and the issue is actually with Chrome… It's the Blink implementations (Chrome, Opera) that need to be updated to require CORS http://twitter.com/jsantell/status/396753990412562432.
MediaElementSource 节点和跨源媒体资源 http://lists.w3.org/Archives/Public/public-audio/2013JulSep/0219.html:
From: Robert O'Callahan <[email protected] /cdn-cgi/l/email-protection>
Date: Tue, 23 Jul 2013 16:30:00 +1200
To: "[email protected] /cdn-cgi/l/email-protection" <[email protected] /cdn-cgi/l/email-protection>
HTML 媒体元素可以播放任何来源的媒体资源。当
元素播放来自与页面不同的来源的媒体资源
origin,我们必须防止页面脚本能够读取
媒体(例如提取视频帧或音频样本)。特别是我们
应该阻止 ScriptProcessorNodes 访问媒体
音频样本。我们还应该了解其他地方泄漏的样本的信息
方式(例如定时通道攻击)。目前网络音频规范说
与此无关。
我认为我们应该通过防止任何非同源数据来解决这个问题
进入网络音频。这将最大限度地减少攻击面和影响
网络音频。
我的建议是让 MediaElementAudioSourceNode 转换来自以下位置的数据
一股非同源流寂静无声。
如果这个提案被纳入规范,那么开发人员几乎不可能意识到为什么他的MediaElementSource
不管用。就目前情况而言,调用createMediaElementSource()
on an <audio>
元素在火狐26实际上stops the <audio>完全控制工作 http://jsfiddle.net/9eGSp/1/ and 不抛出任何错误.
您可以使用来自远程源的音频/视频数据做哪些危险的事情?总体思路是,在不将同源策略应用于MediaElementSource
在 Node.js 中,某些恶意 JavaScript 可以访问只有用户有权访问的媒体(会话、VPN、本地服务器、网络驱动器),并将其内容(或其某些表示形式)发送给攻击者。
默认情况下,HTML5 媒体元素没有这些限制。您可以使用以下命令在所有浏览器中包含远程媒体<audio>
, <img>
, or <video>
元素。只有当您想要操作或从这些远程资源中提取数据时,同源策略才会发挥作用。
[它]出于同样的原因,您无法通过以下方式转储图像数据跨源<canvas>
:媒体可能包含敏感信息,因此允许流氓站点转储和重新路由内容是一个安全问题。 -@nmaier https://stackoverflow.com/users/484441/nmaier