我有将ArrayBuffer(从XMLHttpRequest调用获取mp3作为arraybuffer的代码)保存到Web sql数据库,并从返回对象ArrayBuffer的sql查询中检索的代码。但是,当我尝试解码AudioData或createBuffer时,出现类型错误。

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

给出Uncaught TypeError:类型错误

如果我在result.xtalk中发出警报,则是对象ArrayBuffer

这是在Mac上的Chrome 21.0.1180.75中

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

最佳答案

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

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/zh-CN/docs/JavaScript_typed_arrays/ArrayBuffer

关于javascript - 从Web SQL数据库检索音频并使用Web Audio API播放,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11938053/

10-12 05:40