我的目标是使用<audio>
元素中的压缩和eq处理通话无线电音频流。
在FF 32.0.03中,流下载但没有声音。 萤火虫没有显示错误。
我尝试了file:///
和localhost
(wamp)的代码。
我评论了网络音频<script>
,来自file:///
和localhost
的FF在预期中播放的流。
我删除了评论,将其恢复为原始代码。
接下来,我在谷歌浏览器38.0.2125.101米(相同的代码,相同的url src)中运行它,它按预期运行,工作正常,压缩器有效。
和以前一样,我在Chrome上运行了来自file:///
和localhost
的脚本,两者都顺利运行。
我怀疑三件事之一:
我尝试了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>
答案 0 :(得分:0)
我发布此信息只是为了关闭。这不是我想要的答案,但这是Mozilla提供的答案。
正如我上面评论的那样,bugzilla.mozilla.org/show_bug.cgi?id=996685列出了其他三个错误报告,包括我的报告,因为他们已成为同源策略的牺牲品。
Mozilla代码库有一个04/15/2014补丁说明了这些更改,可作为996685的附件提供。
感谢所有看过的人。