L'aspect le plus puissant du HTML5 est le traitement des fichiers multimédias. Par exemple, la lecture vidéo peut être réalisée en utilisant une simple balise vedio. De même, il existe une balise correspondante pour le traitement des fichiers audio en HTML5, c'est-à-dire que la balise audio
HTML5 est disponible depuis si longtemps, mais la balise audio qu'elle contient n'a été utilisée qu'une seule fois, et bien sûr c'est juste pour insérez cette balise dans la page. Cette fois, j'ai juste profité d'aider un ami à créer quelques pages et à m'entraîner à utiliser la balise audio.
Vous devez d'abord insérer une balise audio dans la page. Notez qu'il est préférable de ne pas définir loop='loop' ici. Cet attribut est utilisé pour définir la lecture en boucle, car lorsque vous devez utiliser l'attribut terminé plus tard, si la boucle est définie sur If looping, l'attribut terminé sera toujours faux.
autoplay='autoplay' définit la page pour qu'elle joue automatiquement de la musique après le chargement. Les attributs de préchargement et de lecture automatique ont le même effet. Si l'attribut de lecture automatique apparaît dans la balise, l'attribut de préchargement sera ignoré.
controls='controls' définit la barre de contrôle pour afficher la musique.
Code XML/HTMLCopier le contenu dans le presse-papiers
- <audio src="musique/Hier encore une fois .mp3" id="aud" lecture automatique="lecture automatique" contrôles="contrôles" préchargement="auto">
- Votre navigateur ne prend pas en charge l'attribut audio, veuillez changer de navigateur pour parcourir.
-
audio>
Après avoir ce tag, félicitations, votre page peut désormais jouer de la musique. Mais cela rendrait la page trop monotone, j'ai donc ajouté quelques éléments à la page pour que les paroles puissent être affichées sur la page de manière synchrone et que la musique à jouer puisse également être sélectionnée. Donc, pour obtenir cet effet, nous devons d’abord télécharger des fichiers de paroles au format lrc, puis formater la musique. Parce que le fichier musical au début ressemblait à ça
Nous devons insérer chaque parole dans un tableau à deux chiffres. Après le formatage, les paroles deviendront comme ceci
Voici ci-joint le code de formatage des paroles
.
Code XML/HTMLCopier le contenu dans le presse-papiers
- //Partie synchronisation des paroles
- fonction parseLyric(texte) {
- //Séparez le texte ligne par ligne et stockez-le dans le tableau
-
var lignes = texte.split('n'),
- //Expression régulière utilisée pour faire correspondre l'heure, le résultat correspondant est similaire à [xx:xx.xx]
-
motif = /[d{2}:d{2}.d{2}]/g,
- //Array pour enregistrer le résultat final
-
résultat = [];
- //Supprimer les lignes sans heure
- while (!pattern.test(lines[0])) {
-
ligneslignes = lignes.slice(1);
}; -
//Lorsque vous utilisez 'n' pour générer le tableau ci-dessus, le dernier élément du résultat est un élément vide, qui sera supprimé ici -
lignes[lines.length - 1]-
.length === 0 && lignes.pop();
lines.forEach(function(v /*valeur de l'élément du tableau*/ , i /*index de l'élément*/ , a /*tableau lui-même*/ ) {
- //Heure d'extraction [xx:xx.xx]
- var
heure-
= v.match(motif),
//Extrait des paroles
v-
valeur = v.replace(motif, '' );
//Comme il peut y avoir plusieurs heures sur une même ligne, l'heure peut être sous la forme de [xx:xx.xx][xx:xx.xx][xx:xx.xx], qui doit être encore plus séparés
- time.forEach(function(v1, i1, a1) {
- //Supprimez les crochets dans le temps pour obtenir xx:xx.xx
- var
t-
= v1.slice(1, -1).split(':');
//Pousser le résultat dans le tableau final
- result.push([parseInt(t[0], 10) * 60 parseFloat(t[1]), valeur]);
}); -
}); -
//Enfin, triez les éléments du tableau de résultats par heure afin que les paroles puissent s'afficher normalement après l'enregistrement -
result.sort(function(a, b) { -
retourner a[0] - b[0] -
}); -
résultat de retour -
} -
-
À ce stade, nous pouvons facilement utiliser les paroles de chaque morceau de musique. Nous avons besoin d'une fonction pour obtenir les paroles et les afficher sur la page de manière synchrone, afin que la musique puisse être commutée normalement. Le code est joint ci-dessous.
Code XML/HTML
Copier le contenu dans le presse-papiers
- fonction fn(sgname){
- $.get('music/' sgname '.lrc',function(data){
-
var str=parseLyric(données);
pour(var -
i=0,li;i<str.length;i ){
- li=$('<li>' str[i][1] 'li>');
$('#gc ul').append(li); -
} -
$('#aud')[0]-
.ontimeupdate=fonction(){//vidéo Déclenché lorsque la position de lecture actuelle de l'audio change
pour (var -
i = 0, l = str.length; je < l ; 🎜>
if (this.currentTime /*Durée de lecture actuelle*/
- > str[i][0]) {
//Afficher à la page
-
$('#gc ul').css('top',-i*40 200 'px'); //Déplacer les paroles vers le haut
-
$('#gc ul li').css('color','#fff');
-
$('#gc ul li:nth-child(' (i 1) ')').css('color','red'); //Sélectionnez les paroles en cours de lecture
-
}
-
}
-
if(this.ended){ //Détermine si la musique en cours de lecture a fini de jouer
-
var
- songslen=$('.songs_list li').length
pour(var
- i= 0,val;i<chanson;i ){
- val=$('.songs_list li:nth-child(' (i 1) ')').text(); >
if(val
- ==sgname){
i
- =(i==(songslen-1))?1:i 2;
sgname
- =$('.songs_list li:nth-child(' i ')').text( // Changer une fois la musique terminée jouer un morceau de musique
$('#gc ul').empty(); //Effacer les paroles
- $('#aud').attr('src','music/' sgname '.mp3');
fn(sgname);
-
retour
-
}
-
}
-
}
-
};
-
});
-
} fn($('.songs_list li:nth-child(1)').text());
-
- Maintenant, ici, les paroles de votre musique peuvent être affichées sur la page normalement et de manière synchrone. Mais il manque encore une chose, c'est une liste de musique. J'espère pouvoir cliquer sur la musique dans cette liste pour lire la musique. Le code est joint ci-dessous. Code HTML
Code XML/HTML
Copier le contenu dans le presse-papiers
- <div classe="songs_cnt" >
-
<ul class="songs_list" >
-
<li>Hier Une fois de plus li>
-
<li>Tu es belle li>
-
ul>
-
<bouton classe="sel_song" >点<br/>< br/>我bouton>
-
div>
-
<div id="gc" >
-
<ul>ul>
-
div>
好了,到了这里,那么你的这个歌词同步的效果的一些功能差不多都有了,关于HTML5使用Audio标签实现歌词同步的效果今天也就到这里了。更多信息请登录脚本之家网站了解更多!