1

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

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

给出 Uncaught TypeError: 类型错误

如果我在 result.xtalk 中放置警报是对象 ArrayBuffer

这是在 Mac 上的 Chrome 21.0.1180.75 中

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

4

1 回答 1

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

于 2012-08-13T16:26:37.927 回答