gpt4 book ai didi

javascript - 在不使用decodeAudioData()的情况下如何获取音频文件的 channel 数?

转载 作者:行者123 更新时间:2023-11-28 05:26:14 24 4
gpt4 key购买 nike

正如你在下面看到的,我能想到的获取音频文件(包括 wav、mp3) channel 数的唯一方法就是使用decodeAudioData()。但是,我希望能够在不解码整个音频文件的情况下获得 channel 数,该文件使用大量 CPU(我认为是它的 CPU)。

还有其他方法可以达到这个目的吗?如果没有,有没有办法只解码文件的一部分?

提前致谢!

  audio_file.onchange = function() {

let files = this.files;
let file = URL.createObjectURL(files[0]);
let xhr = new XMLHttpRequest();
xhr.open('GET', file, true);
xhr.responseType = "arraybuffer";
xhr.onload = () => {
audioContext.decodeAudioData(xhr.response).then((buffer) => {
CHANNEL_COUNT = buffer.numberOfChannels;
if (CHANNEL_COUNT === 4){
document.querySelector('.status').innerHTML = 'FOA file detected';
}
else {
document.querySelector('.status').innerHTML = "Audio file with " + CHANNEL_COUNT + " channels detected";
}

});
}

xhr.send(null);

audioElement.src = file;
audioElement.load();

};

最佳答案

channel 信息通常位于编码文件的开头,因此您可以只下载前几千字节并对其使用decodeAudioData。但是,我认为许多音频容器都可以支持更改文件中间的 channel 数。您将丢失该信息,但解码音频数据也会丢失。

关于javascript - 在不使用decodeAudioData()的情况下如何获取音频文件的 channel 数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40149125/

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