Откройте локальный файл в электронном виде и просмотрите в wavesurfer.js

Я работаю над приложением, созданным с помощью электрона, оно должно работать с wavesurfer.js для отображения формы волны, представляющей аудиофайл. Однако у меня возникают проблемы с открытием файла с помощьюfs модуль и отправка содержимого файла в waveurfer через BLOB-объект. Файл загружается, и все, кажется, работает, но при декодировании waveurfer говоритError decoding audiobuffer.

Две вещи, которые я подумал, могут повлиять на это

fs.readFile функция принимает кодировку в качестве второго параметраКонструктор Blob принимает объект параметров в качестве второго параметра, при этом вы можете определить mimetype черезtype имущество

Однако до сих пор оба подхода не смогли решить проблему.

Я надеюсь, что у кого-то есть решение. (Также может бытьfs.readFile функция - совершенно неправильный путь, и есть намного лучший путь; Я просто ищу относительно эффективный способ открытия файла, любая помощь приветствуется) Ура!

Вот код ...

(Я опускаю все электронные шаблоны, вы можете легко получить это, выполнивgit clone https://github.com/sindresorhus/electron-boilerplate/) - Включить тег сценария дляmain.js вindex.html, добавьте div с идентификаторомwave-area где-то в HTML и добавить тег сценария кбиблиотека wavesurfer.js, Также вам понадобится локальная копиядемонстрационный wav-файл.

Тогда вmain.js файл …

var fs = require('fs');

var wavesurfer = Object.create(WaveSurfer);
wavesurfer.init({
  container: '#wave-area'
});

fs.readFile('/path/to/demo.wav', function(err, data) {
  if (data && !err) {
    console.log('has data and no error!');
  }
  var file = new window.Blob([data]);
  wavesurfer.loadBlob(file);
}

wavesurfer.on('loading', function(e) {
  console.log('loading', e);
});

wavesurfer.on('error', function(err) {
  console.log(err);
});

Ответы на вопрос(1)

Ваш ответ на вопрос