在NodeJS中提供mp3文件以用于音频标签

时间:2015-08-18 22:43:49

标签: javascript html node.js html5

我在NodeJS中提供mp3文件时遇到问题。

var filestream = fs.createReadStream('file.mp3');
filestream.on('open', function() {
  var stats = fs.statSync('file.mp3');
  var fileSizeInBytes = stats["size"];
  response.writeHead(200, {
    'Content-Type': 'audio/mpeg',
    'Content-Length': fileSizeInBytes});
  filestream.pipe(response);
});

我在设置文件的内容类型之前设置它们,以及内容长度。

当我在页面上显示该文件时,我可以播放音频并获取内容的持续时间及其当前时间。

但是,当我不使用NodeJS来提供mp3文件时,我无法设置当前时间。

<audio id='player' src='file.mp3'></audio>
<script>
  var duration = player.duration; // 88 seconds
  var time = player.currentTime; // 0 seconds

  player.currentTime = 10;

  var time = player.currentTime; // 0 seconds
</script>

只是为了重新输入 - 当从目录打开这个页面时(不使用nodejs作为服务器)我可以设置audio元素的currentTime。 这是为什么? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

解决方案是添加一个&#34; Accept-Ranges&#34;每个响应的标头,并使用&#34; range&#34;修改对请求的响应。标头,从标头读取字节范围并使用HTTP / 1.1 206响应代码提供该内容。

字节标题的格式为new One(); ,例如bytes=<start>-<end>

这是我更新的代码:

bytes=0-49

这个答案的部分灵感来自github上的一个要点here