mozilla网络音频处理在流上失败

时间:2014-10-15 18:53:36

标签: web-audio

我的目标是使用<audio>元素中的压缩和eq处理通话无线电音频流。

在FF 32.0.03中,流下载但没有声音。 萤火虫没有显示错误。

我尝试了file:///localhost(wamp)的代码。

我评论了网络音频<script>,来自file:///localhost的FF在预期中播放的流。 我删除了评论,将其恢复为原始代码。

接下来,我在谷歌浏览器38.0.2125.101米(相同的代码,相同的url src)中运行它,它按预期运行,工作正常,压缩器有效。

和以前一样,我在Chrome上运行了来自file:///localhost的脚本,两者都顺利运行。

我怀疑三件事之一:

  • 这可能是担保(也许是SOP)决定的附带损害。
  • 这是一个Mozilla网络音频错误。
  • 可能需要用户互动(但点击播放箭头应满足此要求)。

我尝试了moz-ask一个问题帮助区域,但没有听到任何消息。 我上了Mozilla dev-webdev列表,认为我可以得到答案,但没有得到太多回复。

我希望SOF上对跨浏览器网络音频更有了解的人可能会对此有所了解,如果由于安全决策而限制FF处理流式音频,那将是一个遗憾,我是希望这是一个错误。

Mozilla的原始代码示例: http://mdn.github.io/compressor-example/

我将<audio> src从示例的mp3文件更改为流。 这是我在上述测试中运行的脚本:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width">

    <title>Compressor example</title>
  </head>

  <body>
    <h1>Compressor example</h1>
    <audio controls>  
      <!-- the following line is my only change -->
      <source src="http://74.202.111.236:2512/;" type="audio/mp3">   
    </audio>
    <button data-active="false">Add compression</button>
  </body>

<script>
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

var myAudio = document.querySelector('audio');
var pre = document.querySelector('pre');
var myScript = document.querySelector('script');
var button = document.querySelector('button');

// Create a MediaElementAudioSourceNode
// Feed the HTMLMediaElement into it
var source = audioCtx.createMediaElementSource(myAudio);

// Create a compressor node
var compressor = audioCtx.createDynamicsCompressor();
compressor.threshold.value = -50;
compressor.knee.value = 40;
compressor.ratio.value = 12;
compressor.reduction.value = -20;
compressor.attack.value = 0;
compressor.release.value = 0.25;

// connect the AudioBufferSourceNode to the destination
source.connect(audioCtx.destination);

button.onclick = function() {
  var active = button.getAttribute('data-active');
  if(active == 'false') {
    button.setAttribute('data-active', 'true');
    button.innerHTML = 'Remove compression';

    source.disconnect(audioCtx.destination);
    source.connect(compressor);
    compressor.connect(audioCtx.destination);
  } else if(active == 'true') {
    button.setAttribute('data-active', 'false');
    button.innerHTML = 'Add compression';

    source.disconnect(compressor);
    compressor.disconnect(audioCtx.destination);
    source.connect(audioCtx.destination);
  }
}
</script>
</html> 

1 个答案:

答案 0 :(得分:0)

我发布此信息只是为了关闭。这不是我想要的答案,但这是Mozilla提供的答案。

正如我上面评论的那样,bugzilla.mozilla.org/show_bug.cgi?id=996685列出了其他三个错误报告,包括我的报告,因为他们已成为同源策略的牺牲品。

Mozilla代码库有一个04/15/2014补丁说明了这些更改,可作为996685的附件提供。

感谢所有看过的人。