我搜索了相关问题,但找不到任何相关信息。
我正在尝试让 Web Audio API 播放在另一个文件容器中编码的 mp3 文件,所以到目前为止我所做的是解析所述容器,并将结果二进制数据(arraybuffer)提供给 audioContext.decodeAudioData方法,它应该接受任何类型的包含音频数据的数组缓冲区。但是,它总是抛出错误回调。
我对自己在做什么只有微弱的了解,所以可能整个方法都是错误的。或者,也许这是不可能的。
你们有没有人尝试过这样的事情?任何帮助表示赞赏!
这里有一些代码试图更好地说明这一点。以下只是存储数组缓冲区:
newFile: function(filename){
var that=this;
var oReq = new XMLHttpRequest();
oReq.open("GET", filename, true);
oReq.responseType = "arraybuffer";
oReq.onload = function (oEvent) {
var arrayBuffer = oReq.response; //
if (arrayBuffer) {
that.arrayBuffer=arrayBuffer;
that.parsed=true;
}
};
oReq.send(null);
这就是我在解码部分所做的:
newTrack: function(tracknumber){
var that=this;
var arraybuffer=Parser.arrayBuffer;
that.audioContext.decodeAudioData(arraybuffer,function(buffer){
var track={};
track.trackBuffer=buffer;
track.isLoaded=true;
track.trackSource=null;
track.gainNode=that.audioContext.createGainNode();
that.tracklist.push(track);
},alert('error'));
其中 Parser 是我用来解析和存储数组缓冲区(具有 newFile 函数)的对象文字
所以,总而言之,我不知道我做错了什么,或者根本无法做到。