Accro professionnel à Internet • Passionné de jeux • Créateur de technologie
Accro professionnel à Internet • Passionné de jeux • Créateur de technologie

Créer un visualiseur audio à l'aide de HTML, CSS et JavaScript de base

Comment créer un visualiseur audio horizontal étape par étape à partir de zéro en utilisant HTML, CSS et JavaScript de base !
Cette page a été traduite de l'anglais par mes stagiaires en IA, très motivés, pour votre commodité. Ils sont encore en phase d'apprentissage, et quelques erreurs ont donc pu s'y glisser. Pour des informations plus précises, veuillez vous référer à la version anglaise.
Maison Blog Créer un visualiseur audio à l'aide de HTML, CSS et JavaScript de base

Veuillez noter que cet article a été publié en octobre 2020. Par conséquent, selon la date à laquelle vous le lisez, certaines parties peuvent être obsolètes. Malheureusement, je ne peux pas toujours maintenir ces articles à jour pour garantir l'exactitude des informations.

Il s'agit d'un guide étape par étape sur la façon de créer un visualiseur audio horizontal à partir de zéro en utilisant HTML, CSS et JavaScript de base.

Regardez la vidéo

Veuillez regarder la vidéo pendant que j'explique les choses plus en détail.

Code source complet

Vous trouverez ci-dessous le code source complet du visualiseur audio 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>

Écrit par Special Agent Squeaky. Première publication : 20/10/2020. Dernière mise à jour : 20/10/2020.

📺 Regardez la dernière vidéo de Squeaky !

Comment ajouter des sous-titres en temps réel simples à votre diffusion en direct