Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WAAPISim Polyfill-如何使用.wav回退加载.mp3_Javascript_Audio_Web Audio Api_Polyfills - Fatal编程技术网

Javascript WAAPISim Polyfill-如何使用.wav回退加载.mp3

Javascript WAAPISim Polyfill-如何使用.wav回退加载.mp3,javascript,audio,web-audio-api,polyfills,Javascript,Audio,Web Audio Api,Polyfills,我正在使用从音频文件可视化的跨浏览器支持,使用。polyfill尝试按此顺序使用以下方法:“WebAudioAPI=>AudioDataAPI=>Flash”。我正在加载JS中的音频文件,如下所示: // load the specified sound function loadSound(url) { var request = new XMLHttpRequest(); request.open('GET', url, true); request.response

我正在使用从音频文件可视化的跨浏览器支持,使用。polyfill尝试按此顺序使用以下方法:“WebAudioAPI=>AudioDataAPI=>Flash”。我正在加载JS中的音频文件,如下所示:

// load the specified sound
function loadSound(url) {
    var request = new XMLHttpRequest();
    request.open('GET', url, true);
    request.responseType = 'arraybuffer';

    // When loaded decode the data
    request.onload = function() {

        // decode the data
        context.decodeAudioData(request.response, function(buffer) {
            // when the audio is decoded play the sound
            playSound(buffer);
        }, onError);
    }
    request.send();
}

loadSound("audio/bird.wav");
如polyfill文档中所述,此polyfill仅支持此方法的wav格式。“来自ArrayBuffer和decodeAudioData的createBuffer仅支持wav格式。”

现在,它只加载了一个.wav,但我想为支持它的浏览器加载一个.mp3(较小的文件)。如何检测实现是否与.mp3一起工作并相应地加载正确的文件

如果:

(new Audio()).canPlayType("audio/mp3")

返回
“maybe”
“mayby”
,然后浏览器在
解码音频数据中支持mp3

我从polyfill开发者那里得到了以下响应:

if (typeof window.waapisimContexts != 'undefined'){
            loadSound("audio/bird.wav");
        } else {
            loadSound("audio/bird.mp3");
        }
polyfill仅在浏览器要求其播放.wav时才创建waapisimContexts,因此这种方法会查找waapisimContexts并加载.wav(如果已定义)。否则,它将加载.mp3