如何确定 Node 或 Express 中音频文件的持续时间?

nbr*_*bro 5 audio duration node.js express multer

我正在使用multer带有 Express的模块将音频文件从表单上传到服务器。我需要以某种方式知道曲目的持续时间。这是可能的,如果是,如何?

Jea*_*ang -5

您可以在上传音频之前获取音频的持续时间。请参阅下面的示例。

使用 jQuery,这是一个解决方案(需要一个库)

$("#audio").on("canplaythrough", function(e){
var seconds = e.currentTarget.duration;
var duration = moment.duration(seconds, "seconds");

var time = "";
var hours = duration.hours();
if (hours > 0) { time = hours + ":" ; }

time = time + duration.minutes() + ":" + duration.seconds();
$("#duration").text(time);

URL.revokeObjectURL(objectUrl);
});
Run Code Online (Sandbox Code Playgroud)

或者,使用纯 JavaScript,另一种解决方案

var f_duration =0;  //store duration
document.getElementById('audio').addEventListener('canplaythrough', function(e){
  //add duration in the input field #f_du
  f_duration = Math.round(e.currentTarget.duration);
  document.getElementById('f_du').value = f_duration;
  URL.revokeObjectURL(obUrl);
});
Run Code Online (Sandbox Code Playgroud)

或者您可以通过 HTML5 音频 API 获取音频持续时间。

请参阅:W3Schools 示例HTML AUDIO DOM OBJECT

document.getElementById("myAudio").duration
Run Code Online (Sandbox Code Playgroud)

  • 这个答案假设您正在使用浏览器,而 Node 可能不是这种情况。 (8认同)