


Recommandations de ressources pour les didacticiels vidéo de visualisation musicale HTML5
Que le simple fait de jouer de la musique soit trop monotone, si vous pouvez également voir la musique tout en l'écoutant, sera-ce plus intéressant ? Ce cours vous amènera à utiliser webAudio et Canvas pour visualiser votre musique sous la forme que vous aimez et faire bouger votre musique.
Adresse de lecture du cours : http://www.php.cn/course/327.html
Le Style d'enseignement de l'enseignant :
Les cours de l'enseignant sont simples et approfondis, de structure claire, analysés couche par couche, imbriqués, rigoureux dans l'argumentation et rigoureux dans la structure. Il utilise le pouvoir logique de la pensée. pour attirer l'attention des étudiants et contrôler le processus d'enseignement en classe. En écoutant les cours du professeur, les étudiants acquièrent non seulement des connaissances, mais reçoivent également une formation à la réflexion, et sont également influencés et influencés par l'attitude académique rigoureuse de l'enseignant
Le point le plus difficile de cette vidéo est la musique HTML5 visualisation :
Acquisition et lecture de musique
Construction du front-end et du back-end de l'application
1. Créez un nouveau dossier de données multimédia, public/media, mettez-y les données audio
2, construisez le framework CSS de la page, /public/stylesheets/index.css
3, lisez le contenu de la page, vues/index.ejs
4, contrôle de routage en arrière-plan, routes/index.js, récupérez la liste de musique et renvoyez-la à la section précédente
ajax demande des données audio côté serveur
Créez un nouveau fichier index.js sous javascripts, référencez-le et créez-le dans vues/index.ejs Editez et créez des fichiers
<script type="text/javascript" src="/javascripts/index.js"></script>
pour obtenir des effets de clic
<ul id="list"> <% music.forEach(function(name){ %> <li title="<%= name %>"><%= name %></li> #设置title属性 <% }) %> </ul>
Décoder et lire l'audio
AudioContext
Un objet contenant des objets AudioNode individuels et leurs connexions, c'est-à-dire l'objet de contexte audio. Il n'y a qu'un seul AudioContext créé dans un document : var ac = new window.AudioContext();
Attributs :
destination, objet AudioDestinationNode, où se rassemblent toutes les sorties audio, équivalent au matériel audio, Tous les AudioNodes sont connectés directement ou indirectement ici.
currentTime, le temps (secondes) entre la création d'AudioContext et l'heure actuelle.
Méthode :
decodeAudioData(arrayBuffer,succ(buffer),err), décoder de manière asynchrone les données audio contenues dans arrayBuffer
createBufferSource(), créer un objet autoBufferSourceNode
createAnalyser(), créer un objet AnalyserNode
createGain()/createGainNode(), créer un objet GainNode
AudioBufferSourceNode
représente une ressource audio en mémoire, ses données audio sont stocké dans AudioBuffer (son attribut buffer)
Création : var buffersource = ac.createBufferSource();
Propriétés :
buffer, objet AudioBuffer, représente les données de la ressource audio à lire
——Sous-attribut : durée, la durée de la ressource audio (secondes)
boucle, s'il faut lire en boucle, faux par défaut
onended, peut être lié à l'heure appelée lorsque la lecture audio est terminée Méthode du gestionnaire
:
start/noteOn(when=ac.currentTime,offset=0,buration=buffer.duration-offset), commencez la lecture audio.
quand : quand commencer la lecture ;
offset : combien de secondes pour commencer la lecture de l'audio ;
durée : combien de secondes pour jouer
stop/noteOff(when=ac.currentTime) , terminer Lire l'audio
Ajouter un contrôle du volume
GainNode
Un objet qui modifie le volume audio et la force du signal de toutes les images d'échantillon transmettant ses données audio
Créer : var gainNode = ac.createGain()/ac.createGainNode();
gain, objet AudioParam, la force du signal audio peut être modifiée en modifiant sa valeur. La valeur par défaut de l'attribut est 1 et la valeur de l'attribut de valeur par défaut est 1. la valeur minimale est 0. La valeur maximale est 1, et sa valeur peut également être supérieure à 1 et inférieure à 0
Correction d'un bug de lecture
Problème : lors de la lecture de la deuxième chanson, la première chanson est toujours en cours de lecture. La raison principale est que chaque fois que vous cliquez sur la liste de musique, load("/media/"+this.title) est appelé, les données sont décodées et lues :
xhr.onload = function(){ ac.decodeAudioData(xhr.response, function(buffer){ var bufferSource = ac.createBufferSource(); bufferSource.buffer = buffer; bufferSource.connect(gainNode); bufferSource[bufferSource.start?"start":"noteOn"](0); }, function(err){ console.log(err); }); }
Solution :
Attribuez une valeur nulle aux données audio var source = null ;, enregistrez les données décodées de la chanson précédente source = bufferSource;, jugez l'exécution pour arrêter la lecture source && source[source.stop "stop" : "noteoff ? "](0);
Visualisation des données musicales
AnalyserNode
音频分析对象,它能实时的分析音频资源的频域和时域信息,但不会对音频流做任何处理
创建:var analyser = ac.createAnalyser();
fftSize,设置FFT(FFT是离散傅里叶变换的快速算法,用于将一个信号变换到频域)值得大小,用于分析得到频域,为32 - 2048之间2的整数倍,默认为2048。实时得到的音频频域的数据个数为FFTSize的一半
frequencyBinCount,FFT值得一半,即实时得到的音频频域的数据个数
getByteFrequencyData(Uint8Array),复制音频当前的频域数据(数量是FrequencyBinCount)到Uint8Array(8位无符号整型类型化数组)中
创建Analyser对象:
var analyser = ac.createAnalyser(); analyser.fftSize = 512; analyser.connect(gainNode);
连接到分
析对象获取数据:bufferSource.connect(analyser);
实现可视化功能函数:
function visualizer(){ var arr = new Uint8Array(analyser.frequencyBinCount); analyser.getByteFrequencyData(arr); console.log(arr); }
调用visualizer函数:
利用canvas将音乐数据可视化(柱状图)
在views下加入id
控制高度变化:
var box = $("#box")[0]; var height, width; var canvas = document.createElement("canvas"); box.appendChild(canvas); function resize(){ height = box.clientHeight; width = box.clientWidth; canvas.height = height; canvas.width = width; } resize(); #调用触发函数 window.onresize = resize;
利用canvas将音乐数据可视化(圆点图)
应用优化
webAudio API
webAudio核心功能封装为对象
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide de la bordure de tableau en HTML. Nous discutons ici de plusieurs façons de définir une bordure de tableau avec des exemples de bordure de tableau en HTML.

Ceci est un guide des tableaux imbriqués en HTML. Nous discutons ici de la façon de créer un tableau dans le tableau ainsi que des exemples respectifs.

Guide de la marge HTML gauche. Nous discutons ici d'un bref aperçu de la marge gauche HTML et de ses exemples ainsi que de son implémentation de code.

Guide de mise en page des tableaux HTML. Nous discutons ici des valeurs de la mise en page des tableaux HTML ainsi que des exemples et des résultats en détail.

Guide de l'espace réservé de saisie HTML. Nous discutons ici des exemples d'espace réservé d'entrée HTML ainsi que des codes et des sorties.

Guide de la liste ordonnée HTML. Ici, nous discutons également de l'introduction de la liste et des types HTML ordonnés ainsi que de leur exemple respectivement.

Guide pour déplacer du texte en HTML. Nous discutons ici d'une introduction, du fonctionnement des balises de sélection avec la syntaxe et des exemples à implémenter.

Guide du bouton HTML onclick. Nous discutons ici de leur introduction, de leur fonctionnement, des exemples et de l'événement onclick dans divers événements respectivement.
