Viciado em Internet Profissional • Entusiasta de Jogos • Criador de Tecnologia
Viciado em Internet Profissional • Entusiasta de Jogos • Criador de Tecnologia

Crie um visualizador de áudio usando HTML básico, CSS e JavaScript

Como criar um visualizador de áudio horizontal passo a passo do zero usando HTML, CSS e JavaScript básicos!
Esta página foi traduzida do inglês pelos meus estagiários de IA altamente motivados para sua conveniência. Eles ainda estão aprendendo, então alguns erros podem ter passado despercebidos. Para informações mais precisas, consulte a versão em inglês.
Lar Blog Crie um visualizador de áudio usando HTML básico, CSS e JavaScript

Observe que esta postagem do blog foi publicada em outubro de 2020, portanto, dependendo de quando você a ler, algumas partes podem estar desatualizadas. Infelizmente, nem sempre consigo manter estas postagens totalmente atualizadas para garantir que as informações permaneçam precisas.

Este é um guia passo a passo sobre como criar um visualizador de áudio horizontal do zero usando HTML, CSS e JavaScript básicos.

Assista ao vídeo

Por favor, assista ao vídeo, pois explico as coisas com mais detalhes.

Código fonte completo

Abaixo está o código-fonte completo do visualizador de áudio horizontal.

<!-- License MIT, Author Special Agent Squeaky (specialagentsqueaky.com) --> <!doctype html> <html lang="en"> <head> <title>My Eq</title> <style> body { overflow: hidden; } .background { position: absolute; top: -50px; right: -50px; bottom: -50px; left: -50px; background-image: url("background.jpg"); background-position: center center; background-size: cover; filter: blur(15px); } .track-title { position: absolute; top: 200px; right: 0; left: 0; color: white; font-family: Calibri; font-size: 100px; text-align: center; } .visualizer-container { position: absolute; bottom: 450px; right: 0; left: 0; text-align: center; } .visualizer-container__bar { display: inline-block; background: white; margin: 0 2px; width: 25px; } </style> </head> <body> <audio src="track.mp3" controls></audio> <div class="background"></div> <div class="track-title">Awesome song</div> <div class="visualizer-container"></div> <script> (function () { // The number of bars that should be displayed const NBR_OF_BARS = 50; // Get the audio element tag const audio = document.querySelector("audio"); // Create an audio context const ctx = new AudioContext(); // Create an audio source const audioSource = ctx.createMediaElementSource(audio); // Create an audio analyzer const analayzer = ctx.createAnalyser(); // Connect the source, to the analyzer, and then back the the context's destination audioSource.connect(analayzer); audioSource.connect(ctx.destination); // Print the analyze frequencies const frequencyData = new Uint8Array(analayzer.frequencyBinCount); analayzer.getByteFrequencyData(frequencyData); console.log("frequencyData", frequencyData); // Get the visualizer container const visualizerContainer = document.querySelector(".visualizer-container"); // Create a set of pre-defined bars for( let i = 0; i < NBR_OF_BARS; i++ ) { const bar = document.createElement("DIV"); bar.setAttribute("id", "bar" + i); bar.setAttribute("class", "visualizer-container__bar"); visualizerContainer.appendChild(bar); } // This function has the task to adjust the bar heights according to the frequency data function renderFrame() { // Update our frequency data array with the latest frequency data analayzer.getByteFrequencyData(frequencyData); for( let i = 0; i < NBR_OF_BARS; i++ ) { // Since the frequency data array is 1024 in length, we don't want to fetch // the first NBR_OF_BARS of values, but try and grab frequencies over the whole spectrum const index = (i + 10) * 2; // fd is a frequency value between 0 and 255 const fd = frequencyData[index]; // Fetch the bar DIV element const bar = document.querySelector("#bar" + i); if( !bar ) { continue; } // If fd is undefined, default to 0, then make sure fd is at least 4 // This will make make a quiet frequency at least 4px high for visual effects const barHeight = Math.max(4, fd || 0); bar.style.height = barHeight + "px"; } // At the next animation frame, call ourselves window.requestAnimationFrame(renderFrame); } renderFrame(); audio.volume = 0.10; audio.play(); })(); </script> </body> </html>

Escrito por Special Agent Squeaky. Publicado pela primeira vez em 20/10/2020. Última atualização em 20/10/2020.

📺 Assista ao vídeo mais recente do Squeaky!

Como adicionar legendas simples em tempo real à sua transmissão ao vivo