Как получить одинаковый объект из Input браузера и из file system, читая напрямую с диска
Есть библиотека wavefile. Она читает wav файлы и всячеки манипулирует с ними. Из консоли библиотека работает. А вот из браузера при чтении файлов с инпута начинаются проблемы. Вопрос как получить из инпута такой же объект как если бы я читал его напрямую с диска. Пробовал всякие манипуляции со стримом, сторонними буфферами, ничего не получилось.
Функция в Реакт компоненте.
const handleConvert = () => {
if (selectedFile)
setConvertedFile(
convert(selectedFile[0])
);
};
Функция в конвертере.
export function convert(file) {
var wav = new WaveFile();
let reader = new FileReader();
let arrayBuffer = reader.readAsArrayBuffer(file);
wav.fromBuffer(arrayBuffer);
return wav.toSampleRate(44100).toBuffer();
}
Получаемая ошибка.
utf8-parser.js:55 Uncaught TypeError: Cannot read properties of undefined (reading '0')
at unpack (utf8-parser.js:55:20)
at unpackString (index.js:44:10)
at WaveFile.readString (riff-file.js:138:11)
at WaveFile.setSignature (riff-file.js:84:27)
at WaveFile.fromBuffer (wavefile-reader.js:283:10)
at WaveFile.fromBuffer (wavefile-creator.js:106:11)
at convert (compressor.js?t=1674242551549:8:7)
at handleConvert (UploadPage.tsx:24:9)
at HTMLUnknownElement.callCallback2 (react-dom.development.js:4164:14)
at Object.invokeGuardedCallbackDev (react-dom.development.js:4213:16)