Player Audio avec Playlist
Yuushi_Sato
Messages postés
104
Date d'inscription
Statut
Membre
Dernière intervention
-
Yuushi_Sato Messages postés 104 Date d'inscription Statut Membre Dernière intervention -
Yuushi_Sato Messages postés 104 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila je suis en train de créer un petit lecteur audio, mais j'ai un petit soucis, étant tout jeune dans le javascript j'ai quelque difficulté.
HTML
JS
Mes questions sont les suivantes :
Comment faire pour que ma playlist joue en continue (En gras ce que j'ai essayé)?
Comment faire pour que mon bouton NEXT passe à la musique suivantes (Code ci-dessous)?
Besoin de votre aide et quelques explications aussi.
Voila je suis en train de créer un petit lecteur audio, mais j'ai un petit soucis, étant tout jeune dans le javascript j'ai quelque difficulté.
HTML
<audio id="audio" src="../../MCKEY TRAXX - Come With Me.mp3" ontimeupdate="update(this)"></audio>
<div>
<input type="text" id="display" disabled/>
</div>
<div>
<span id="progressTime">00:00</span>
<div id="progressBarControl">
<div id="progressBar" onclick="clickProgress('audio', this, event)">Pas de lecture</div>
</div>
<span id="progressFullTime">00:00</span>
</div>
<button id="PlayPause" class="control" onclick="play('audio', this)">Play</button>
<button class="control" onclick="stop('audio')">Stop</button></br></br><button class="control" onclick="next('audio')">Next</button>
<span class="volume">
<a class="stick1" onclick="volume('audio', 0)"></a>
<a class="stick2" onclick="volume('audio', 0.3)"></a>
<a class="stick3" onclick="volume('audio', 0.5)"></a>
<a class="stick4" onclick="volume('audio', 0.7)"></a>
<a class="stick5" onclick="volume('audio', 1)"></a>
</span>
<div>
<!--la playlist-->
<ol id="playlist">
<li onclick="clickPlaylist(this,'../../MCKEY TRAXX - Come With Me.mp3','Mickey Traxx','Come With Me')" class="song">Mickey Traxx - Come With Me</li>
<li onclick="clickPlaylist(this,'../../Jousboxx-BuzzerBeater.ogg','Jousboxx','BuzzerBeater')" class="song">Jousboxx - BuzzerBeater</li>
</ol>
</div>
JS
function play(idPlayer, control) {
var player = document.getElementById('audio');
var button = document.getElementById('PlayPause');
if (player.paused) {
player.play();
control.textContent = 'Pause';
} else {
player.pause();
control.textContent = 'Play';
}
}
function stop(idPlayer, control) {
var player = document.getElementById('audio');
player.pause();
player.currentTime = 0;
document.getElementById('PlayPause').textContent = 'Play';
}
function volume(idPlayer, vol) {
var player = document.getElementById('audio');
player.volume = vol;
}
function update(player) {
var duration = player.duration; // Durée totale
var time = player.currentTime; // Temps écoulé
var fraction = time / duration;
var percent = Math.ceil(fraction * 100);
var progress = document.getElementById('progressBar');
progress.style.width = percent + '%';
progress.textContent = percent + '%';
document.getElementById('progressTime').textContent = formatTime(time);
document.getElementById('progressFullTime').textContent = formatTime(duration);
}
function formatTime(time) {
var hours = Math.floor(time / 3600);
var mins = Math.floor((time % 3600) / 60);
var secs = Math.floor(time % 60);
if (secs < 10) {
secs = "0" + secs;
}
if (hours) {
if (mins < 10) {
mins = "00" + mins;
}
return zeroPad(hours, 2) + ":" + zeroPad(mins, 2) + ":" + zeroPad(secs, 2); // hh:mm:ss
} else {
return zeroPad(mins, 2) + ":" + zeroPad(secs, 2); // mm:ss
}
}
// fonction pour afficher joliment les nombres
function zeroPad(num, places) {
var zero = places - num.toString().length + 1;
return Array(+(zero > 0 && zero)).join("0") + num;
}
function clickProgress(idPlayer, control, event) {
var player = document.getElementById('audio');
var parent = getPosition(control); // La position absolue de la progressBar
var target = getMousePosition(event); // L'endroit du la progressBar où on a cliqué
var x = target.x - parent.x;
var y = target.y - parent.y;
var wrapperWidth = document.getElementById('progressBarControl').offsetWidth;
var percent = Math.ceil((x / wrapperWidth) * 100);
var duration = player.duration;
player.currentTime = (percent * duration) / 100;
}
function getMousePosition(event) {
if (event.pageX) {
return {
x: event.pageX,
y: event.pageY
};
} else {
return {
x: event.offsetX + document.body.scrollLeft + document.documentElement.scrollLeft,
y: event.offsetY + document.body.scrollTop + document.documentElement.scrollTop
};
}
}
function getPosition(element){
var top = 0, left = 0;
while (element) {
left += element.offsetLeft;
top += element.offsetTop;
element = element.offsetParent;
}
return { x: left, y: top };
}
//click playlist
function clickPlaylist(sender,senderID,artist,title){
var player = document.getElementById('audio');
player.pause();
player.load();
player.src = senderID;
player.play();
var display = document.getElementById('display');
display.setAttribute('value',artist+' - '+title);
<b>player = new player("start url");
player.addEventListener('ended',function(){
player.pause();
player.load();
player.src = "new url";
player.play();
}); </b>
var supp = document.getElementsByClassName('selected');
if(supp[0])
{
supp[0].removeAttribute('class');
}
sender.setAttribute('class','selected');
}
Mes questions sont les suivantes :
Comment faire pour que ma playlist joue en continue (En gras ce que j'ai essayé)?
Comment faire pour que mon bouton NEXT passe à la musique suivantes (Code ci-dessous)?
var currentIdSong = 0; // numéro de la musique en cours (commence à 0)
var songs = document.querySelectorAll('onclick'); // liste des musiques (balises a)
var songsLength = songs.length; // nombre de musiques
var currentSong = player.src; // nom du fichier de la musique en cours
function next(idPlayer) {
var player = document.getElementById('audio');
currentIdSong = (currentIdSong + 1) % songsLength;
currentSong = songs[currentIdSong].getAttribute('song');
}
Besoin de votre aide et quelques explications aussi.
Configuration: Macintosh / Firefox 84.0
A voir également:
- Playlist javascript
- Playlist collaborative spotify - Guide
- Telecharger javascript - Télécharger - Langages
- Créer une playlist mp3 - Télécharger - Lecture & Playlists
- Logiciel création playlist m3u - Télécharger - Lecture & Playlists
- Sxxxoxxxe lyrics 2024 youtube playlist video viral - Forum YouTube
1 réponse
Bonjour
Je viens d'essayer plusieurs choses sur le bouton next, mais sa ne marche toujours pas.
ce code quand je clique sur next la musique s’arrête mais ne change pas de piste"
Quand à ce code-ci la musique s’arrête sa a l'air de changer de piste mais ne lis rien.
J'ai par ailleurs changer un peu le code de ma playlist (voir ci-dessous)
suppression du class="song" sur les 2 pistes par un selected sur la 1er piste.
Avez-vous une idée de ce qui peut bloqué?
Grand merci pour vos retour.
Je viens d'essayer plusieurs choses sur le bouton next, mais sa ne marche toujours pas.
function next(idPlayer, control) {
var player = document.getElementById('audio');
var song = document.querySelector("li.selected");
player.load();
player.src = song + 1;
player.play();
document.getElementById('PlayPause').textContent = 'Pause';
var display = document.getElementById('display');
display.setAttribute('value',artist+' - '+title);
}
ce code quand je clique sur next la musique s’arrête mais ne change pas de piste"
function next(idPlayer, control) {
var player = document.getElementById('audio');
var selected = document.querySelector("li.selected");
if (selected && selected.nextElementSibling) {
clickPlaylist(selected.nextElementSibling);
var display = document.getElementById('display');
display.setAttribute('value',artist+' - '+title);
}
}
Quand à ce code-ci la musique s’arrête sa a l'air de changer de piste mais ne lis rien.
J'ai par ailleurs changer un peu le code de ma playlist (voir ci-dessous)
<ol id="playlist">
<li onclick="clickPlaylist(this,'../../MCKEY TRAXX - Come With Me.mp3','Mickey Traxx','Come With Me')" class="selected">Mickey Traxx - Come With Me</li>
<li onclick="clickPlaylist(this,'../../Jousboxx-BuzzerBeater.ogg','Jousboxx','BuzzerBeater')">Jousboxx - BuzzerBeater</li>
</ol>
suppression du class="song" sur les 2 pistes par un selected sur la 1er piste.
Avez-vous une idée de ce qui peut bloqué?
Grand merci pour vos retour.