我正在使用 Nodejs 和 Firefox 来显示网页。该页面有一个 HTML5 音频元素。我遇到的问题与音频持续时间的计算有关。在我的节点 js 脚本中,我有:
var app = require('http').createServer(handler)
, path = require("path")
, io = require('socket.io').listen(app)
, fs = require('fs')
, exec = require('child_process').exec
, spawn = require ('child_process').spawn
, util = require('util')
, extensions = {
".html": "text/html",
".css": "text/css",
".js": "application/javascript",
".png": "image/png",
".gif": "image/gif",
".ttf": "application/x-font-ttf",
".jpg": "image/jpeg",
".mp3": "audio/mp3",
".wav": "audio/wav",
".ogg": "audio/ogg"
}
, Files = {};
在我的 html 网页中,我有:
<audio id="idaudio" src="" type="audio/wav" >Your browser does not support the audio element.</audio>
以及我网页上的一些 javascript 代码:
var thissound=document.getElementById("idaudio");
thissound.src="http://localhost/Audio/Song.wav";
//thissound.src="/Audio/Song.wav";
thissound.addEventListener('loadeddata', function() {
var durationaudio = (thissound.duration)*1000;
});
当我检查 durationaudio 时,我得到了正确的数字,然后我可以使用thissound.play()
; 此代码适用于 Firefox 和 Chromium。
如果我改变
thissound.src="http://localhost/Audio/Song.wav" -> thissound.src="/Audio/Song.wav"
在节点脚本中添加 ".wav": "audio/wav" 扩展名,我可以使用 Firefox 和 Chromium 播放歌曲;在 Chromium 中,我也得到了正确的数量,durationaudio
但使用 Firefox 我得到了durationaudio=Infinity
. 这就是问题。我不知道为什么 Firefox 无法获得正确的持续时间。也许我必须在节点脚本中添加一些扩展名...以允许 Firefox 获取音频的持续时间。有任何想法吗?