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

Retrieving audio from Web SQL Database and playing with Web Audio API

本文关键字:Web 音频 API 播放 数据库 检索 SQL      更新时间:2023-09-26

我有代码将ArrayBuffer(从XMLHttpRequest调用获取mp3作为arraybuffer)保存到Web sql数据库中,从返回对象ArrayBuffer的sql查询中检索它。但是,当我尝试解码音频数据或创建缓冲区时,我收到一个类型错误。

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

给出未捕获的类型错误:类型错误

如果我在结果中放一个警报.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/

还要对你正在接收的数组缓冲区对象执行"typeof"。Arraybuffer 有一个叫做 byteLength 的属性。

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

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