Nodejs と Firefox を使用して Web ページを表示しています。そのページには HTML5 audio 要素があります。私が抱えている問題は、オーディオの長さの計算に関連しています。私のノード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 Webページには次のものがあります。
<audio id="idaudio" src="" type="audio/wav" >Your browser does not support the audio element.</audio>
そして、私のWebページからの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 がオーディオの長さを取得できるようにするために、ノード スクリプトに拡張機能を追加する必要があるかもしれません。何か案は?