J ai besoin d aide sur lecteur audio sur web affiche le sons. C est a dire affiche amplitude de son: Barre varie en fonction de niveau de son. Merci
Désolé, j’ai pas bien compris ta question, mais je pense que tu cherche de ça: (cliquez sur le bouton Run Pen ci-dessous pour exécuter le code) et pour voir le code source correspondant cliquez sur les onglets HTML, CSS et JS.
Bonjour, c est ça mais ça c est compliqué.
J ai voulais juste un batton qui monte et que dessant. J ai volai juste son amplitude varie en fonction de son.
Merci beaucoup
Si vous travaillez localement. Créer un fichier par exemple nommée test.php qui contient le code source ci-dessous et mettez le dans le dossier www dans mon cas, j’utilise WampServer, même si le code ne contient pas du code PHP, en fait c’est pour éviter l’erreur Cross-origin resource sharing (CORS). N’oubliez pas de modifier le nom du fichier mp3 « track.mp3 » et mettez-le à coté du fichier test.php.
<!DOCTYPE html>
<html>
<head></head>
<body>
<body>
<audio src="track.mp3" id="audio" controls>L'élément HTML5 Audio n'est pas supporté</audio>
<canvas id="canvas" width="800" height="350"></canvas>
</body>
<script>
window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext;
window.onload = function() {
var audio = document.getElementById('audio');
var ctx = new AudioContext();
var analyser = ctx.createAnalyser();
var audioSrc = ctx.createMediaElementSource(audio);
// nous devons connecter le MediaElementSource avec l'analyseur
audioSrc.connect(analyser);
analyser.connect(ctx.destination);
var frequencyData = new Uint8Array(analyser.frequencyBinCount);
// nous sommes prêts à recevoir des données !
var canvas = document.getElementById('canvas'),
cwidth = canvas.width,
cheight = canvas.height - 2,
meterWidth = 10, //largeur du spectre
gap = 2, //écart
capHeight = 2,
capStyle = '#fff',
meterNum = 800 / (10 + 2), //nombre de pièces
capYPositionArray = [];
ctx = canvas.getContext('2d'),
gradient = ctx.createLinearGradient(0, 0, 0, 300);
gradient.addColorStop(1, '#0f0');
gradient.addColorStop(0.5, '#ff0');
gradient.addColorStop(0, '#f00');
// loop
function renderFrame() {
var array = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);
var step = Math.round(array.length / meterNum);
ctx.clearRect(0, 0, cwidth, cheight);
for (var i = 0; i < meterNum; i++) {
var value = array[i * step];
if (capYPositionArray.length < Math.round(meterNum)) {
capYPositionArray.push(value);
};
ctx.fillStyle = capStyle;
//dessiner le sommet, avec effet de transition
if (value < capYPositionArray[i]) {
ctx.fillRect(i * 12, cheight - (--capYPositionArray[i]), meterWidth, capHeight);
} else {
ctx.fillRect(i * 12, cheight - value, meterWidth, capHeight);
capYPositionArray[i] = value;
};
ctx.fillStyle = gradient;
ctx.fillRect(i * 12, cheight - value + capHeight, meterWidth, cheight);
}
requestAnimationFrame(renderFrame);
}
renderFrame();
audio.play();
};
</script>
</body>
</html>
Voici le résultat: