audiojs / web-audio-api

Node.js implementation of Web audio API
MIT License
817 stars 67 forks source link

Is the AudioBuffer occupies too huge bytes? #89

Open BHznJNs opened 1 year ago

BHznJNs commented 1 year ago

Development environment:

Sample code

import waa from "web-audio-api"
import axios from "axios"

const url = "https://music.163.com/song/media/outer/url?id=1991012773.mp3" // audio url
const context = new waa.AudioContext()
axios.get(url, {
    responseType: "arraybuffer"
})
    .then((res) => res.data)
    .then((buffer) => {
        context.decodeAudioData(buffer,
            (audioBuffer) => {
                // do something ... 
            },
            (err) => {
                // do something ...
            },
        )
});

setTimeout(() => {}, 10000)

Then in the TaskManager, this Node.js process will occupy over 250 MB of memory.

I guess that there is a problem with the decodeAudioData function in the lib/utils.js, or is there any problem with my sample code?


By the package heapdump, I found that the AudioBuffer generated by the AudioContext.decodeAudioData function usually occupies over 50 MB of memory when the source audio file is less than 10 MB. Is that normal?