Я пытаюсь анализировать волновые файлы с помощью File API.
Мне нужно найти индекс строки внутри заголовка файла, чтобы получить последующие данные.
Я пытался преобразовать строку и сопоставить необработанные байты в цикле for
, но это оказало значительное влияние на снижение производительности при анализе файлов размером 10k +.
Я сейчас пытаюсь найти его, используя TextDecoder()
и indexOf
.
// buffer is a (part of) a wave file as ArrayBuffer
const array = new Uint8Array(buffer);
const string = new TextDecoder().decode(array);
const index = string.indexOf('fmt');
Это даст мне индекс. Тем не менее, когда выполнить небольшую проверку и подтвердить, у меня есть правильный кусок ...
const check = array.slice(index, index + 4);
Я получаю различные результаты для идентификатора чанка (в данном случае это строка «FMT»). Например:
console.log(check);
// [102, 109, 116, 32]
или
console.log(check);
// [0, 102, 109, 116]
Индекс, который я получаю, иногда будет смещен на -2, -1 или 0. Это немного ненадежно.
Наверное, мой вопрос: Что вызывает это странное смещение?
Пожалуйста, не отсылайте меня в сторонние библиотеки для анализа файлов .wav, я бы хотел, чтобы это работало / я понял, почему это никогда не будет работать.