gpt4 book ai didi

javascript - Web Audio onaudioprocess 在 Firefox 中有效,JSFiddle 在 Chrome 中有效,但在 Chrome 本身中无效

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:04:34 25 4
gpt4 key购买 nike

我在 Chrome 39.0.2171.71(64 位)的 WebAudio/WebMIDI 应用程序中工作。我安装了 jazz-soft webmidi 插件。

我根本无法启动 onaudioprocess。我已将内容精简为最基本的代码:

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
Page Loaded.
<script>
var context;
if (window.AudioContext) {
context = new AudioContext();
} else {
context = new webkitAudioContext();
}
console.log('Javascript is working.');

oscillator = context.createOscillator();
oscillator.start(0);

myscriptnode = context.createScriptProcessor(4096, 1, 1);
myscriptnode.onaudioprocess = function(event) {
console.log('ONAUDIOPROCESS works!');
};

oscillator.connect(myscriptnode);
</script>
</body>
</html>

这适用于 Firefox。事实上,我玩过的大部分东西都可以在 Firefox 中使用,但不能在 Chrome 中使用。但是,以下两个示例在 Chrome 中运行的 JSFiddle 中对我有用:

http://jsfiddle.net/78yKV/3/ (此示例运行但似乎与 onaudioprocess 回调很慢/参差不齐,有时会中断并需要重新启动。)

http://jsfiddle.net/99rxd/ (对于这个例子,我必须添加 function(){console.log('error');} 的第三个参数到 getUserMedia() 以使其运行。这给了我一个未定义的未捕获引用错误当我启动它时,它会运行并且 onaudioprocess 回调可靠地工作。)

我尝试过的事情

我进行了详尽的搜索,createScriptProcessor 似乎存在一些 Chrome 范围问题。我已经尝试了所有方法来确定我的进程的全局范围(在顶部声明它,在没有'var'的情况下声明,设置 myscriptnode.onaudioprocess = window.audioProcess = function(event))但没有任何效果。在 Firefox 中一切正常。

我抱有希望的唯一原因是因为 JSFiddle 的工作示例。看起来代码在 JSFiddle 中运行而不在浏览器中运行的主要原因与等待 DOM 加载有关。我怀疑这是问题所在,但我尝试将我的 javascript 放入 (function(/code/)();,将 oninit() 函数添加到 body 标记并将我的代码放入 function init( ){} 等没有运气。

我不知道发生了什么。如果它在 JSFiddle 中工作,我不应该让它在浏览器中工作吗?有没有另一种方法可以改变范围,这样我的事件处理程序就不会被垃圾收集(这就是我假设的问题)......或者是否有更基本的问题?我还没有在浏览器中看到一个使用 onaudioprocess 工作的回调,这让我觉得它可能比范围/垃圾收集问题更基本。会不会是 jazz-soft 插件?

感谢您的帮助!

最佳答案

Chrome 仍然存在脚本处理器需要连接到目的地的错误。

添加“myscriptnode.connect(context.destination);”到最后,我想您会发现它按预期工作。

关于javascript - Web Audio onaudioprocess 在 Firefox 中有效,JSFiddle 在 Chrome 中有效,但在 Chrome 本身中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27324608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com