在html5中播放来自bytearray的音乐

时间:2013-06-15 20:32:47

标签: html html5 xmlhttprequest html5-audio

有没有办法从字节而不是HTML 5中的文件播放音乐?

我需要播放音乐字节并实时播放。

1 个答案:

答案 0 :(得分:4)

请检查

  var dogBarkingBuffer = null;
 // Fix up prefixing
 window.AudioContext = window.AudioContext || window.webkitAudioContext;
 var context = new AudioContext();

function loadDogSound(url) {
  var request = new XMLHttpRequest();
  request.open('GET', url, true);
  request.responseType = 'arraybuffer';

  // Decode asynchronously
  request.onload = function() {
    context.decodeAudioData(request.response, function(buffer) {
      dogBarkingBuffer = buffer;
    }, onError);
  }
  request.send();
}

音频文件数据是二进制(不是文本),因此我们将请求的responseType设置为“arraybuffer”。有关ArrayBuffers的更多信息,请参阅有关XHR2的文章。

一旦接收到(未解码的)音频文件数据,就可以保留它以便稍后解码,或者可以使用AudioContext decodeAudioData()方法立即解码它。此方法获取存储在request.response中的音频文件数据的ArrayBuffer,并异步解码(不阻止主JavaScript执行线程)。

当decodeAudioData()完成时,它会调用一个回调函数,该函数将解码后的PCM音频数据作为AudioBuffer提供。

这里引用==> HML5 audio

<强>更新: 让它适用于Firefox和Chrome使用:

context= typeof AudioContext !== 'undefined' ? new AudioContext() : new webkitAudioContext();

而不是:

var context = new AudioContext();