有没有办法从字节播放音乐而不是 HTML 5 中的文件?
我需要流式传输音乐字节并现场播放。
请检查这个
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 音频
更新:让它在 Firefox 和 chrome 上工作:
context= typeof AudioContext !== 'undefined' ? new AudioContext() : new webkitAudioContext();
代替 :
var context = new AudioContext();