Java Script DOMException Web Audio API audioContext.createMediaElementSource 再次调用该函数

Posted

技术标签:

【中文标题】Java Script DOMException Web Audio API audioContext.createMediaElementSource 再次调用该函数【英文标题】:Java Script DOMException Web Audio API audioContext.createMediaElementSource call again the function 【发布时间】:2017-12-31 15:47:26 【问题描述】:

大家好,我需要你们的帮助 我有下一个功能,这是第一次按下按钮,但我再次按下按钮音频不起作用。 控制台日志是这样的:未捕获的 DOMException:无法在“BaseAudioContext”上执行“createMediaElementSource”:htmlMediaElement 之前已连接到不同的 MediaElementSourceNode。 在 cargar_audio1

¿如何解决这个问题并在每次按下按钮时加载视频?

我使用的代码是这样的:

 document.getElementById('audio1').addEventListener('click', function() 
 var mediaElement1 = document.getElementById("ad1"); 
 mediaElement1.src = "audio1.mp3";
 load_audio1();
 );


 var analyser, source;
 function load_audio1() 
 var audio1 = document.getElementById('ad1');
 var audioContext = new AudioContext();
 analyser = audioContext.createAnalyser();
 analyser.minDecibels = -60;
 analyser.maxDecibels = -10;  
 analyser.fftSize = 32;
 source = audioContext.createMediaElementSource(audio1);
 source.connect(analyser);
 analyser.connect(audioContext.destination); 
 audio1.play();
 view_dat_audio();
 

【问题讨论】:

define var audioContext = new AudioContext();在点击事件和函数 load_audio1() 之外 坦克 Marouen Mhiri 但没有工作:( 【参考方案1】:

假设“每次按下按钮时加载视频”意味着您希望在每次触发 audio1 上的点击事件时播放音频文件 audio1.mp3,您可以执行以下操作:

为了播放文件你需要做两件事:

    初始化音频图(创建分析器节点并将其连接到音频源等) 在图上调用 play()

现在您在load_audio1() 中一步完成此操作,解决方案是将初始化和对play() 的调用分开,并在必要时只在开始时进行一次初始化。

大概是这样的:

document.getElementById('audio1').addEventListener('click', clickHandler);

function clickHandler() 
    if (!audioGraphIsInitialized()) 
        initAudioGraph();
    

    audio1.play();

【讨论】:

如何用分析仪连接音频文件? 或其他选项来收听浏览器中的任何声音 我已经更新了答案。这应该显示了原理,您只需将代码从上面移动到函数initAudioGraph() 而不调用play() 并创建一个新函数audioGraphIsInitialzed() 来测试initAudioGraph() 是否已经被调用。 感谢尝试我的建议,目前我不得不以非正统的方式尝试使用 iframe 为页面充电 XD

以上是关于Java Script DOMException Web Audio API audioContext.createMediaElementSource 再次调用该函数的主要内容,如果未能解决你的问题,请参考以下文章

“未捕获(承诺)的DOMException:无法为范围注册ServiceWorker”-脚本资源位于重定向后面,不允许使用

未捕获(承诺)DOMException:超出配额

DOMException 105 仅在 UI 测试期间

vue 的DOMException问题

IndexedDB:未捕获(承诺)DOMException

RSA SubtleCrypto 解密期间的 DOMException