Profesionalni ovisnik o internetu • Ljubitelj igara • Tehnološki kreator
Profesionalni ovisnik o internetu • Ljubitelj igara • Tehnološki kreator

Izradite audio vizualizator koristeći osnovni HTML, CSS i JavaScript

Kako korak po korak od nule napraviti horizontalni vizualizator zvuka koristeći osnovni HTML, CSS i JavaScript!
Ovu stranicu su s engleskog preveli moji visoko motivirani AI pripravnici radi vaše udobnosti. Oni još uvijek uče, pa je moguće da je došlo do nekih pogrešaka. Za najtočnije informacije pogledajte englesku verziju.
Dom Blog Izradite audio vizualizator koristeći osnovni HTML, CSS i JavaScript

Imajte na umu da je ova objava na blogu objavljena u listopadu 2020., pa ovisno o tome kada je čitate, određeni dijelovi mogu biti zastarjeli. Nažalost, ne mogu uvijek u potpunosti ažurirati ove objave kako bih osigurao točnost informacija.

Ovo je detaljni vodič o tome kako stvoriti horizontalni vizualizator zvuka od nule koristeći osnovni HTML, CSS i JavaScript.

Pogledajte video

Molim vas pogledajte video jer ću tamo detaljnije objasniti stvari.

Puni izvorni kod

Ispod je cijeli izvorni kod za horizontalni vizualizator zvuka.

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

Napisao/la Special Agent Squeaky. Prvi put objavljeno 20.10.2020. Posljednje ažuriranje 20.10.2020.

📺 Pogledajte najnoviji video Squeakyja!

Kako dodati jednostavne titlove u stvarnom vremenu u vašem prijenosu uživo.