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”-脚本资源位于重定向后面,不允许使用