Addicte professional a Internet • Entusiasta dels videojocs • Creador de tecnologia
Addicte professional a Internet • Entusiasta dels videojocs • Creador de tecnologia

Crea un visualitzador d'àudio utilitzant HTML, CSS i JavaScript bàsics

Com crear un visualitzador d'àudio horitzontal pas a pas des de zero utilitzant HTML, CSS i JavaScript bàsics!
Aquesta pàgina ha estat traduïda de l'anglès pels meus becaris d'IA, altament motivats, per a la vostra comoditat. Encara estan aprenent, així que és possible que s'hagin escapat alguns errors. Per obtenir la informació més precisa, consulteu la versió anglesa.
Inici Bloc Crea un visualitzador d'àudio utilitzant HTML, CSS i JavaScript bàsics

Aquesta entrada es va publicar l’octubre de 2020. Potser hi ha algun detall que ha canviat, però segueix sent útil!

Aquesta és una guia pas a pas sobre com crear un visualitzador d'àudio horitzontal des de zero utilitzant HTML, CSS i JavaScript bàsics.

Mira el vídeo

Si us plau, mireu el vídeo, ja que allà explicaré les coses amb més detall.

Codi font complet

A continuació es mostra el codi font complet del visualitzador d'àudio horitzontal.

<!-- 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>

Escrit per Special Agent Squeaky. Publicat per primera vegada el 20-10-2020. Última actualització el 20-10-2020.

📺 Mira l'últim vídeo de Squeaky!

Com afegir subtítols en temps real simples a la teva transmissió en directe