下载到现有路径后无法播放最新的音频

时间:2019-06-05 12:40:43

标签: node.js reactjs filesystems electron

我有一个电子反应应用程序,我使用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')
    }
 )

因此,我想知道是否存在某种由于电子或节点而导致的缓存机制,该机制从缓存中获取同一文件,而不检查文件内容是否不同。

我尝试禁用电子镀铬调试器网络标签上的缓存,但该选项卡没有 工作。

其他音频播放器npm模块似乎也以相同的方式工作。

或者,只要将同名的新文件通过管道传递给我,只要在清除旧文件时​​抓取最新文件,我就可以在文件名后附加某种数字。 但我宁愿每个文件名都有唯一的文件。

1 个答案:

答案 0 :(得分:0)

万一有人遇到类似问题,我已经设法使用npm模块howler来解决此问题。每次需要重播更改后的音频文件时,对音频对象调用unload。

this.audio.unload()
this.audio = new Howl({
   src: filepath
});