的Chrome 27测试版抛出一个SyntatxError当我尝试执行下面的JavaScript行:网络音频OfflineAudioContext语法错误,当我按照API
offlineContext = new webkitOfflineAudioContext(2, 7*48000, 48000);
这是符合W3C推荐标准的一致性,和搜索小时后网络上我看到了几十个例子,显然可以用这个确切的形式。我知道API可能会发生变化,但我找不到任何提示。我哪里错了?
奇怪的是,它不会失败,当我在jsfiddle中尝试它。我甚至试着在jsfiddle中运行这个代码片段所存在的整个函数,将一些项目删除。下面是我试图运行的功能。当执行该功能时,出现“SyntaxError Dom Exception 12”的地方。
我有一个可用的音频应用程序,我只是想使用OfflineAudioContext为后面的渲染添加后台处理。如果我在init函数中定义了OfflineAudoiContext,那么我不会在那里出现语法错误。但是我需要在createRenderData()函数中定义它,因为我需要为每个媒体源设置长度和采样率,如果我没有参数调用OfflineAudioContext构造函数,我会得到一个TypeError。另外我也没有在API中看到任何设置现有OfflineAudioContext的长度和采样率的方法。
AudioUI.createRenderData = function() {
var url = BGAudioUI.renderQueue.pop();
if (url) {
BGAudioUI.media = new Audio(url);
BGAudioUI.media.addEventListener('durationchange', function() {
console.log("background duration: " + BGAudioUI.media.duration);
BGAudioUI.duration = BGAudioUI.media.duration;
//BGAudioUI.allData = new Float32Array(Math.floor((AudioUI.context.sampleRate.toFixed()/AudioUI.downsampleFactor.toFixed() * BGAudioUI.duration)) + 1);
//console.log("calculated sample rate: " + Math.floor(AudioUI.context.sampleRate/AudioUI.downsampleFactor.toFixed()));
//console.log("duration: " + BGAudioUI.duration);
BGAudioUI.offlineContext = new webkitOfflineAudioContext(2, 7*48000, 48000); //SyntaxError DOM Exception 12 occurs here
BGAudioUI.mediaSource = BGAudioUI.offlineContext.createMediaElementSource(BGAudioUI.media);
BGAudioUI.offlineContext.oncomplete = function(buffer) {
data = buffer.getChannelData(0);
console.log(data.length + " records processed offline");
};
BGAudioUI.offlineContext.startRendering();
BGAudioUI.media.play();
console.log("created background media source for " + BGAudioUI.media.src);
}, false);
BGAudioUI.media.load();
console.log("created background media object for " + BGAudioUI.media.src);
} else {
alert("Background rendering complete");
}
};
更正:我拿到的SyntaxError当我在init函数中调用构造函数时。之前一定错过了它。 – MidnightJava 2013-05-09 13:07:06
你在Windows机器上有什么机会?它适用于我的Mac。也许他们还没有为Win/Chrome实现它。 – 2013-05-10 00:51:02
它在OSX上失败,但不在CentOs上(Chrome的Fedora发行版)。然而,我发现问题在哪里。事实证明,OfflineAudioContext的采样率必须与常规AudioContext的设置相同。 – MidnightJava 2013-05-10 03:42:59