正如您在下面看到的,看起来我能想到的唯一方法是通过使用decodeAudioData()来获取音频文件(包括wav,mp3)的通道数。但是,我希望能够在不解码使用大量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();
};
答案 0 :(得分:0)
通道信息通常位于编码文件的开头,因此您只需下载前几千个字节并在其上使用decodeAudioData。但是,我认为许多音频容器可以支持更改文件中间的通道数。你会失去那些信息,但是解码音频数据也是如此。