无法在 'BaseAudioContext' 上执行 'createBuffer'
Failed to execute 'createBuffer' on 'BaseAudioContext'
Failed to execute 'createBuffer' on 'BaseAudioContext': The number of
frames provided (0) is less than or equal to the minimum bound (0)."
我的项目尝试为 Float32Array 流块创建音频缓冲区。
音频上下文初始化
constructor(loading: LoadingService) {
...
this.audiocontext = new audiocontext()
...
}
创建音频缓冲区
private onmusicdownloaded = (response: streamresponse) => {
if(response.totalchunks !== 0 &&
isnullorundefined(this.buffers)) {
this.buffers = new Array<AudioBuffer>(response.totalchunks) //lets me make correct playback decisions
}
console.log('stream chunk received')
this.currentbufferdownloaded++
let rawbuffer = new Float32Array(response.chunk)
let newbuffer = this.audiocontext.createBuffer(1, rawbuffer.length, 44100)
newbuffer.getChannelData(0)
.set(rawbuffer)
this.buffers[this.currentbufferdownloaded] = newbuffer
this.currentbufferdownloaded++
if(this.musicisreadytoplay() === false) {
return
}
this.playrandomdeserttrack()
}
它在定义 newbuffer
变量的源代码行失败。我不明白如何在不先创建缓冲区的情况下 "provide frames"。
我们将不胜感激所有解决方案想法。
@Kaiido 这很尴尬,但这是正确的答案!我需要记住始终检查我的假设。
Failed to execute 'createBuffer' on 'BaseAudioContext': The number of frames provided (0) is less than or equal to the minimum bound (0)."
我的项目尝试为 Float32Array 流块创建音频缓冲区。
音频上下文初始化
constructor(loading: LoadingService) {
...
this.audiocontext = new audiocontext()
...
}
创建音频缓冲区
private onmusicdownloaded = (response: streamresponse) => {
if(response.totalchunks !== 0 &&
isnullorundefined(this.buffers)) {
this.buffers = new Array<AudioBuffer>(response.totalchunks) //lets me make correct playback decisions
}
console.log('stream chunk received')
this.currentbufferdownloaded++
let rawbuffer = new Float32Array(response.chunk)
let newbuffer = this.audiocontext.createBuffer(1, rawbuffer.length, 44100)
newbuffer.getChannelData(0)
.set(rawbuffer)
this.buffers[this.currentbufferdownloaded] = newbuffer
this.currentbufferdownloaded++
if(this.musicisreadytoplay() === false) {
return
}
this.playrandomdeserttrack()
}
它在定义 newbuffer
变量的源代码行失败。我不明白如何在不先创建缓冲区的情况下 "provide frames"。
我们将不胜感激所有解决方案想法。
@Kaiido 这很尴尬,但这是正确的答案!我需要记住始终检查我的假设。