Професионален интернет маниак • Гейм ентусиаст • Тех ентусиаст и създател
Професионален интернет маниак • Гейм ентусиаст • Тех ентусиаст и създател

Създайте аудио визуализатор, използвайки основен HTML, CSS и JavaScript

Как да създадете хоризонтален аудио визуализатор стъпка по стъпка от нулата, използвайки основен HTML, CSS и JavaScript!
Тази страница е преведена от английски език от моите силно мотивирани стажанти по изкуствен интелект за ваше удобство. Те все още се учат, така че е възможно да са допуснати някои грешки. За най-точна информация, моля, вижте английската версия.
Дом Блог Създайте аудио визуализатор, използвайки основен HTML, CSS и JavaScript

Моля, имай предвид, че тази публикация е от октомври 2020 г. и някои части може вече да не са точни. Ще я обновя при нужда.

Това е стъпка по стъпка ръководство за това как да създадете хоризонтален аудио визуализатор от нулата, използвайки основен HTML, CSS и JavaScript.

Гледайте видеото

Моля, гледайте видеото, тъй като там обяснявам нещата по-подробно.

Пълен изходен код

По-долу е пълният изходен код за хоризонталния аудио визуализатор.

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

Написано от Special Agent Squeaky. Публикувано за първи път на 2020-10-20. Последно обновено на 2020-10-20.

📺 Гледайте най-новото видео на Squeaky!

Как да добавите субтитри в реално време към вашия стрийм на живо