Как вы можете видеть ниже, это похоже на единственный метод, который я могу придумать, чтобы получить количество каналов аудиофайла (включая wav, mp3) с помощью decodeAudioData(). Тем не менее, я хочу получить количество каналов без декодирования всего аудиофайла, который использует много CPU (я думаю, его процессор).Как я могу получить количество каналов аудиофайла без использования decodeAudioData()?
Есть ли какой-либо другой способ достижения этого? Если нет, существует ли способ декодирования только части файла?
Заранее благодарен!
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();
};