基本上,我试图通过圆波纹爆炸来进行音频可视化。我不确定如何准确命名它,但是它看起来像这样:https://codepen.io/alek/pen/EyyLgp,除了我正在寻找更多类似的名称,当您单击一个圆圈时,它会出现,扩展和消失。它不一定必须是实心圆。
这是我的音频可视化的js代码(注意:我确实从Nick Jones-网站https://codepen.io/nfj525/pen/rVBaab那里获取了代码,我将他的出色音频可视化归功于他)
let file = document.querySelector("choose-file");
let audio = document.querySelector("audio-player");
file.onchange = function() {
let files = this.files;
audio.src = URL.createObjectURL(files[0]);
audio.load();
audio.play();
let context = new AudioContext();
let src = context.createMediaElementSource(audio);
let analyser = context.createAnalyser();
let canvas = document.querySelector("canvas");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
let ctx = canvas.getContext("2d");
src.connect(analyser);
analyser.connect(context.destination);
analyser.fftSize = 256;
let bufferLength = analyser.frequencyBinCount;
console.log(bufferLength);
let dataArray = new Uint8Array(bufferLength);
let WIDTH = canvas.width;
let HEIGHT = canvas.height;
let barWidth = (WIDTH / bufferLength) * 2.5;
let barHeight;
let x = 0;
function renderFrame() {
requestAnimationFrame(renderFrame);
x = 0;
analyser.getByteFrequencyData(dataArray);
ctx.fillStyle = "#000";
ctx.fillRect(0, 0, WIDTH, HEIGHT);
for (let i = 0; i < bufferLength; i++) {
barHeight = dataArray[i];
let r = barHeight + (25 * (i/bufferLength));
let g = 250 * (i/bufferLength);
let b = 50;
ctx.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
ctx.fillRect(x, HEIGHT - barHeight, barWidth, barHeight);
x += barWidth + 1;
}
}
audio.play();
renderFrame();
};
因此,目前这种音频可视化效果是根据音乐创建矩形,但是我想改为将其改为圆形。因此,在 Canvas 上,圆圈将随机出现在屏幕上,并具有这种波纹,爆炸效果,消失并出现一个新的圆圈。我以为也许可以用
fillRect()
代替arc()
,但是我意识到背后还有更多逻辑。有谁知道如何将矩形更改为圆形? 最佳答案
通常我使用的是p5.js,我认为p5.js对于类似的东西非常有用,如果您要使用它,这只是一个建议,此链接为:ojita
关于javascript - 尝试使用Canvas上的圆形波纹和JavaScript进行音频可视化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48681639/