Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复&x201C;开裂”;使用音频工作集时的音频?_Javascript_Html_Web Audio Api_Audio Worklet - Fatal编程技术网

Javascript 如何修复&x201C;开裂”;使用音频工作集时的音频?

Javascript 如何修复&x201C;开裂”;使用音频工作集时的音频?,javascript,html,web-audio-api,audio-worklet,Javascript,Html,Web Audio Api,Audio Worklet,我试图了解它是如何工作的,并做了一些测试 到目前为止,当我让浏览器在后台播放声音并执行其他操作(例如打开一个CPU密集型应用程序,如Photoshop或VSCode,然后移动窗口)时,我遇到了一个巨大的“破解”问题 起初我认为这是硬件问题。我升级到Catalina,删除了我找到的所有系统音频扩展,但在Android和其他一些朋友的电脑(Mac、PC)上也是如此 我自己使用的是1.0.1版Chromium:78.0.3904.108(官方版本)(64位) 这说明了破解音频问题 我制作了两个Code

我试图了解它是如何工作的,并做了一些测试

到目前为止,当我让浏览器在后台播放声音并执行其他操作(例如打开一个CPU密集型应用程序,如Photoshop或VSCode,然后移动窗口)时,我遇到了一个巨大的“破解”问题

起初我认为这是硬件问题。我升级到Catalina,删除了我找到的所有系统音频扩展,但在Android和其他一些朋友的电脑(Mac、PC)上也是如此

我自己使用的是1.0.1版Chromium:78.0.3904.108(官方版本)(64位)

这说明了破解音频问题

我制作了两个CodePen演示,您可以在这里进行测试:

:

const ctx=new(window.AudioContext | | window.webkitadiocontext)();
const request=new XMLHttpRequest();
const gainNode=ctx.createGain();
const sourceNode=ctx.createBufferSource();
request.open('GET','https://poppublic.s3.amazonaws.com/other/2.mp3",对),;
request.responseType='arraybuffer';
request.onload=()=>{
ctx.decodeAudioData(request.response,buffer=>{
sourceNode.buffer=缓冲区;
log(sourceNode.buffer.sampleRate);
});
};
request.onerror=函数(e){
log('HTTP错误',e);
};
request.send();
播放=()=>{
sourceNode.connect(gainNode);
连接(ctx目的地);
sourceNode.start(0);
}
停止=()=>{
sourceNode.stop(0);
}
播放

停止使用工作集时,音频线程的默认优先级为正常。这对音频不好,正如您通过运行webaudio然后移动窗口看到的那样

你能做的就是去chrome://flags,搜索工作集并启用名为“为音频工作集使用实时优先级线程”的标志。这应该对mac和windows有所帮助。我不知道这是否会对Android产生影响


如果您在没有工作集的情况下听到WebAudio出现裂缝,就像您在第一个codepen示例中所做的那样,那么这是出乎意料的,您确实应该这样做。

您的演示视频不可用,但我能够听到您的两个示例之间的差异。只是更改了视频设置。抱歉。。。现在您应该看到,在Chrome团队自己提供的示例中,itI实际上注意到了同样的问题: