2
在JavaScript中,我將MP3數據以陣列緩衝區的形式轉換爲對象URL,並且使用window.URL.createObjectURL
...我如何確定mp3文件的採樣率?在javascript中確定大音頻文件的採樣率?
我可以使用網絡音頻API來加載音頻到內存中的樣品,但MP3文件是300MB ...
網絡音頻API可以確定音頻元素的採樣率,而無需創建一個AudioBuffer
?
在JavaScript中,我將MP3數據以陣列緩衝區的形式轉換爲對象URL,並且使用window.URL.createObjectURL
...我如何確定mp3文件的採樣率?在javascript中確定大音頻文件的採樣率?
我可以使用網絡音頻API來加載音頻到內存中的樣品,但MP3文件是300MB ...
網絡音頻API可以確定音頻元素的採樣率,而無需創建一個AudioBuffer
?
將Range
標頭設置爲返回足夠的字節以讀取sampleRate
。這仍然創建一個AudioBuffer
但整個文件不下載。
var audioContext = new AudioContext();
var req = new XMLHttpRequest();
var url = 'http://example.com/file.mp3';
req.open('GET', url);
req.setRequestHeader('Range', 'bytes=0-640'); // enough bytes to read meta data
req.responseType = 'arraybuffer';
req.onload = function(event) {
audioContext.decodeAudioData(this.response, function(decodedBuffer) {
console.log(decodedBuffer.sampleRate);
}, function(error) {
console.log(error);
});
};
req.send();
不幸的是,這是行不通的。 decodeAudioData總是將結果重新採樣到音頻上下文的採樣率。不過,另請參閱https://github.com/WebAudio/web-audio-api/issues/30 –