Web Audio API和移动浏览器

时间:2014-06-12 03:22:24

标签: javascript html5 audio mobile html5-audio

我在将声音和音乐实现到我正在构建的HTML游戏时遇到了问题。我正在使用Web Audio API,使用XMLHttpRequests加载所有声音文件,并使用AudioContext.prototype.decodeAudioData()将它们解码为AudioBufferSourceNode。它看起来像这样:

var request = new XMLHttpRequest();
request.open("GET", "soundfile.ogg", true);
request.responseType = "arraybuffer";       
request.onload = function() {
    context.decodeAudioData(request.response)
}
request.send();

一切都很好,但在移动设备上,decodeAudioData的背景音乐花费了很长的时间。然后,我尝试使用AudioContext.prototype.createMediaElementSource()从HTML Audio对象加载音乐,因为它们支持流式传输,不必一次将整个文件加载到内存中。它看起来像这样:

var audio = new Audio('soundfile.ogg');
var source = context.createMediaElementSource(audio);
var mainVolume = context.createGain();
source.connect(mainVolume);
mainVolume.connect(context.destination);

加载速度要快得多,但音频音量不受增益节点的影响。在桌面上工作正常,所以我假设这是移动Chrome的错误/限制(在Android上测试)。

在移动浏览器上处理声音实际上没有好的,表现良好的方法,或者我只是在做一些愚蠢的事情?

0 个答案:

没有答案