Chrome会分析网页中的所有音频

时间:2015-01-14 00:21:49

标签: javascript jquery html5 google-chrome-extension html5-audio

有没有人知道如何创建MediaElementSource或任何其他可用于通过createAnalyser()通过Analyzer发送在网页上播放的声音数据的对象?我希望能够在不知道声音来自何处的情况下使用分析仪。

编辑:我已经完成了我想要的但不是通过捕获所有音频。下面的块会在Google Play音乐播放器页面上为您提供一个分析器(仅通过我的库,而不是商店进行测试)。

ctx = new (window.audioContext || window.webkitAudioContext);
source = iVisual.ctx.createMediaElementSource($('audio')[0]);
analyser = iVisual.ctx.createAnalyser();

1 个答案:

答案 0 :(得分:0)

由于音频元素不应该同时播放,但是如果您仍然想要使用所有音频元素,我将为您提供一些代码示例。这是为你拥有的每个音频文件运行的for循环,它将使用适当的源创建一个音频元素,然后为其创建一个sourcenode(createMediaElementSource),并将该sourcenode连接到分析器。

onload = function () { //this will be executed when the page is ready
    window.audioFiles = ['audio1.mp3', 'audio2.mp3',...]; //the array with all audio files
    window.AudioContext = window.AudioContext || window.webkitAudioContext;
    context = new AudioContext();
    analyser = context.createAnalyser();
    analyser.connect(context.destination);

    //now we take all the files and create a button for every file

    sources = []; //we create an array where we store all the created sources in.
    for (var x in audioFiles) {
        var elem = document.createElement('audio'); //create an audio element
        elem.src = audioFiles[x]; //append the specific source to it.

        sources[x] = context.createMediaElementSource(elem); //create a mediasource for it
        sources[x].connect(analyser); //connect that to the analyser
    }

}