Javascript AudioContext CreateBuffer()中存在大文件问题

Javascript AudioContext CreateBuffer()中存在大文件问题,javascript,web-audio-api,Javascript,Web Audio Api,我想创建一个具有1个频道、1190256000长度和48000采样率的音频缓冲区。但我在createBuffer()methode中遇到错误。请查找包含该示例的小提琴。如果长度为1190256000,则很可能会遇到浏览器的缓冲区大小限制。如果查看name属性,您将看到您尝试的操作导致NotSupportedError(在chrome中,在其他浏览器中可能不同) 不支持错误 一个或多个选项为负值或具有无效值(例如numberOfChannels高于支持值, 或标称范围以外的取样器) 如果你尝试较低

我想创建一个具有1个频道、1190256000长度和48000采样率的音频缓冲区。但我在createBuffer()methode中遇到错误。请查找包含该示例的小提琴。

如果长度为1190256000,则很可能会遇到浏览器的缓冲区大小限制。如果查看
name
属性,您将看到您尝试的操作导致NotSupportedError(在chrome中,在其他浏览器中可能不同)

不支持错误

一个或多个选项为负值或具有无效值(例如numberOfChannels高于支持值, 或标称范围以外的取样器)

如果你尝试较低的价值,你就会获得成功

window.AudioContext=window.AudioContext | | window.webkitadiocontext;
audioContext=新窗口。audioContext();
var缓冲区;
试一试{
createBuffer(119025600048000);
}捕获(e){
console.log(e.name,e.message);
}
试一试{
buffer=audioContext.createBuffer(11902560048000);
日志(“成功”,缓冲区);
}捕获(e){
console.log(e.name,e.message);

}
谢谢。但是有没有办法创建这样长度的音频缓冲区?Chrome不行。这需要超过4GB的内存。@RaymondToy,我所说的缓冲区限制是指Chrome耗尽堆内存之前的限制。缓冲区的通道数据是Float32Array类型的数组,并且在导致RangeError或OutofMemoryError之前只能如此大。例如,在我的系统上,我的Chrome的堆限制大约为2.3GB(可以通过执行
console.memory
来查看)。这将我限制在大约536870912数组长度或实际数据中的2.14GB。这就是为什么用户在尝试创建缓冲区时会得到NotSupportedError,就像OP的尝试一样,因为他们使用的大小会超过堆限制。感谢提供详细信息。我刚才是在回答@user2922212关于能够创建缓冲区的问题。@PatrickEvans谢谢你提供的详细信息。