我有代码将 ArrayBuffer(从 XMLHttpRequest 调用获取 mp3 作为数组缓冲区)保存到 Web sql 数据库,从返回对象 ArrayBuffer 的 sql 查询中检索它。但是,当我尝试解码AudioData或createBuffer时,我收到类型错误。
var buffer = audioContext.createBuffer(result.xtalk,false);
给出未捕获的类型错误:类型错误
如果我在 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/en-US/docs/JavaScript_typed_arrays/ArrayBuffer
Pulse 允许将 SQL 查询结果读取为文本或根据查询播放 mp3 文件: https://www.timestored.com/pulse/help/faq/audio-alerts