gpt4 book ai didi

javascript - Chrome - createMediaElementSource 不工作

转载 作者:行者123 更新时间:2023-11-29 21:34:12 32 4
gpt4 key购买 nike

我的网站有一个简单的音频分析器:

var analyser = document.getElementById('analyzer');
var beat = document.getElementById('track_meta')
var canvas, ctx, source, context, analyser, fbc_array, bars, bar_x,
bar_width, bar_height;

function playAnalyzer() {
context = new AudioContext();
analyser = context.createAnalyser();
canvas = document.getElementById('analyzer');
ctx = canvas.getContext('2d');
source = context.createMediaElementSource(playerE);
source.connect(analyser);
analyser.connect(context.destination);
frameLooper();
}

function frameLooper() {
canvas.width = canwidth;
canvas.height = canheight;
ctx.imageSmoothingEnabled = false;
window.requestAnimationFrame(frameLooper);
fbc_array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(fbc_array);
ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas
ctx.fillStyle = "white"; // Color of the bars
function valBetween(v, min, max) {
return (Math.min(max, Math.max(min, v)));
}
var beatc = fbc_array[2] / 4;
var beatround = Math.round(beatc);
//if (beatround < 10) {
// ctx.globalAlpha = '0.1125';
//}
//else {
// ctx.globalAlpha = '0.' + beatround;
//}
bars = canbars;
for (var i = 0; i < bars; i += canmultiplier) {
bar_x = i * canspace;
bar_width = 2;
bar_height = -3 - (fbc_array[i] / 2);
ctx.fillRect(bar_x, canvas.height, bar_width, bar_height);
}
}

我的问题是,除非我在 chrome 上处于隐身模式,否则这不起作用,否则我会收到此错误:

Uncaught InvalidStateError: Failed to execute 'createMediaElementSource' on 'AudioContext': HTMLMediaElement already connected previously to a different MediaElementSourceNode.

我已经在 Edge、Firefox 和 Opera 中对此进行了测试,并且运行良好。我什至重新安装了 chrome,看看是否能解决问题,但无济于事。我只是不明白为什么它在隐身模式下工作正常,但在其他情况下却不行。

所以我的问题是,是否可以不使用 <audio>元素,将分析仪连接到 var audio = new Audio反而?如果是这样,我该怎么做?

最佳答案

所以对我来说,这很有效:

而不是使用 <audio>元素,使用 HTMLMediaElement使用javascript。然后您唯一需要做的就是将分析仪连接到您的 var audio = new Audio()只是引用你的 audio source = context.createMediaElementSource(audio); 中的变量变量。

这也解决了我的错误。

关于javascript - Chrome - createMediaElementSource 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35303362/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com