не могу воспроизвести самый последний звук после загрузки по существующему пути - PullRequest
0 голосов
/ 05 июня 2019

У меня есть приложение для электронной реакции, в котором я воспроизводю аудиофайлы, используя аудио элемент javascript. У меня есть что-то вроде ниже. Однако, хотя я могу подтвердить, что аудиофайл на локальном диске изменяется после передачи, звук, воспроизводимый через приложение, не будет обновляться в течение 30 секунд.

playAudio = (path) => {
  this.audio = new Audio()
  this.audio.src = filepath
  this.audio.play()
}

this.playAudio('C:\Users\User\Documents\audio.mp3')

request.post({url: 'http://localhost:8080/requestAudio', body: object}, 
  function(err, response, body) {
    //do stuff
  }         
})
.pipe(fs.createWriteStream(`C:\Users\User\Documents\audio.mp3`)
   .on('finish', () => {
       this.playAudio('C:\Users\User\Documents\audio.mp3')
    }
 )

Итак, мне было интересно, существует ли какой-то механизм кэширования, связанный с электроном или узлом, который захватывает один и тот же файл из кэша, не проверяя, отличается ли содержимое файла.

Я пытался отключить кэш на вкладке сети электронного отладчика Chrome, который не работа.

Другие модули аудиопроигрывателя npm также работают аналогично.

В качестве альтернативы, я мог бы просто добавить какой-либо номер к имени файла всякий раз, когда новый файл с таким же именем передается по каналу, и получать самые последние при очистке старых. Но я бы предпочел иметь уникальные файлы для каждого имени файла.

1 Ответ

0 голосов
/ 27 июня 2019

В случае, если кто-то борется с подобной проблемой, мне удалось это исправить с помощью модуля npm howler .И вызов unload для аудио объекта каждый раз, когда мне нужно воспроизвести измененный аудио файл.

this.audio.unload()
this.audio = new Howl({
   src: filepath
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...