在html5中播放来自bytearray的音乐

Ata*_*Ata 8 html html5 xmlhttprequest html5-audio

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

我需要流式传输音乐字节并播放它们.

Mua*_*ath 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();
}
Run Code Online (Sandbox Code Playgroud)

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

接收到(未解码的)音频文件数据后,可以将其保留以供以后解码,也可以使用 AudioContextdecodeAudioData() 方法立即对其进行解码。此方法获取存储在 request.response 中的音频文件数据的 ArrayBuffer 并对其进行异步解码(不会阻塞主 JavaScript 执行线程)。

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

这里参考 ==> HML5 音频

更新:要让它在 Firefox 和 Chrome 上运行,请使用:

context= typeof AudioContext !== 'undefined' ? new AudioContext() : new webkitAudioContext();
Run Code Online (Sandbox Code Playgroud)

代替 :

var context = new AudioContext();
Run Code Online (Sandbox Code Playgroud)