有没有人知道如何创建MediaElementSource或任何其他可用于通过createAnalyser()通过Analyzer发送在网页上播放的声音数据的对象?我希望能够在不知道声音来自何处的情况下使用分析仪。
编辑:我已经完成了我想要的但不是通过捕获所有音频。下面的块会在Google Play音乐播放器页面上为您提供一个分析器(仅通过我的库,而不是商店进行测试)。
ctx = new (window.audioContext || window.webkitAudioContext);
source = iVisual.ctx.createMediaElementSource($('audio')[0]);
analyser = iVisual.ctx.createAnalyser();
答案 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
}
}