在javascript中确定大型音频文件的采样率?

时间:2015-10-30 05:02:39

标签: web-audio

在javascript中,我将数据缓冲区形式的mp3数据转换为window.URL.createObjectURL的对象URL ...如何确定mp3文件的采样率?

我可以使用网络音频API将音频样本加载到内存中,但mp3文件是300MB ......

网络音频API可以在不创建AudioBuffer的情况下确定音频元素的采样率吗?

1 个答案:

答案 0 :(得分:1)

设置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();

DEMO:http://jsfiddle.net/oxv5ykvn/