从Web SQL数据库检索音频并使用Web Audio API进行播放

时间:2012-08-13 16:03:43

标签: javascript api web-audio arraybuffer

我有一个代码保存一个ArrayBuffer(从XMLHttpRequest调用获取一个mp3作为arraybuffer)到一个web sql数据库,从一个返回一个对象ArrayBuffer的sql查询中检索它。但是,当我尝试decodeAudioData或createBuffer时,我得到一个类型错误。

var buffer = audioContext.createBuffer(result.xtalk,false);

给出一个未捕获的TypeError:输入错误

如果我在result.xtalk中发出警告是对象ArrayBuffer

这是在Mac上的Chrome 21.0.1180.75

我尝试创建一个ArrayBuffer并逐字节填充然后传递它 - 但这也不起作用。

1 个答案:

答案 0 :(得分:0)

查看本教程。可能会有所帮助

var dogBarkingBuffer = null;
var context = new webkitAudioContext();

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

}

请参阅以下链接: - http://www.html5rocks.com/en/tutorials/webaudio/intro/

在你接收的arraybuffer对象上也做“typeof”.Arraybuffer有一个名为byteLength的属性。

如果未定义,则表示从sql数据库收到的对象不是arraybuffer对象

参考:-https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays/ArrayBuffer