begin process at 2012 05 28 14:19:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > PETIT LECTEUR AUDIO HTML 5

PETIT LECTEUR AUDIO HTML 5


 Information sur la source

Note :
Aucune note
Catégorie :Divers Classé sous :html5, audio, player Niveau :Débutant Date de création :18/05/2011 Vu / téléchargé :4 495 / 386

Auteur : maichafred

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Tout est dans le titre:
Voici les bases d'un lecteur audio tirant profit de la balise audio du futur standard html5.
La balise permet de lire nativement un fichier audio dans son navigateur sans plug-in. Ici je rajoute un système de playlist pour récupérer une liste de lecture depuis un serveur, et les boutons de navigation permettant de l'exploiter.
Le code est divisé en plusieurs fichiers:
Du html: à intégrer sur le site.
Le code JavaScript permettant de gérer la navigation et le volume.
Le code Php permettant de récupérer une playlist de morceaux encodés à un format compatible avec le navigateur (ici soit mp3, soit ogg).
Un peu de css pour enjoliver un peu les choses.

Source

  • ***player.html***
  • <div id="player">
  • <link rel="stylesheet" href="../style/player.css" type="text/css" />
  • <script type="text/javascript" src="../Script/audioPlayer.js"> </script>
  • <!--la balise en elle-meme-->
  • <audio id="audio">
  • <source src=""/>
  • Your browser does not support audio element
  • </audio>
  • <!--les controles-->
  • <div id="controles">
  • <input type="text" id="display"/>
  • <input type="range" id="volume_slider" min="0" max="100" value="100"/>
  • <button id="mute" class="navButton small" ></button>
  • </div>
  • <!--navigation-->
  • <div id="navigation">
  • <button id="previous" class="navButton" ></button>
  • <button id="playPause" class="navButton" value="Play/Pause" name="Play/Pause"></button>
  • <button id="next" class="navButton" ></button>
  • </div>
  • <!--la playlist-->
  • <table id="playlist">
  • <?php
  • include('../Script/playlist.php');
  • $playlist = new Playlist;
  • $listing = $playlist->recupPlaylist();
  • for($i=0;$i<sizeof($listing);$i++)
  • {
  • echo ('<tr onclick="clickPlaylist(this,\'../morceaux/'.addslashes($listing[$i]->adresse).'\',\''.$listing[$i]->titre.'\')" ><td>'.$listing[$i]->titre.'</td><td class="invisible">../morceaux/'.addslashes($listing[$i]->adresse).'</td></tr>
  • ');
  • }
  • ?>
  • </table>
  • </div>
  • <script type="text/javascript"> init();
  • </script>
  • ****le code JavaScript***
  • function init(){
  • //alert("init");
  • var btn1 = document.getElementById("playPause");
  • var btn2 = document.getElementById("next");
  • var btn3 = document.getElementById("previous");
  • var slider = document.getElementById("volume_slider");
  • var btn4 = document.getElementById("mute");
  • if(btn1.addEventListener){/*alert("ok");*/}
  • else{alert("not ok");}
  • btn1.addEventListener('click',playPause,true);
  • btn2.addEventListener('click',next,true);
  • btn3.addEventListener('click',previous,true);
  • slider.addEventListener('change',vol_change,true);
  • btn4.addEventListener('click',mute,true);
  • //alert('init2');
  • }
  • function mute(){
  • var player = document.getElementById('audio');
  • var btn_mute = document.getElementById('mute');
  • if(player.volume!=0){
  • player.volume = 0;
  • btn_mute.removeAttribute('class');
  • btn_mute.setAttribute('class','navButton small_muted');
  • }
  • else{
  • btn_mute.removeAttribute('class');
  • btn_mute.setAttribute('class','navButton small');
  • var cursor = document.getElementById('volume_slider');
  • player.volume = cursor.value/100;
  • }
  • }
  • function vol_change(){
  • var player = document.getElementById('audio');
  • var cursor = document.getElementById('volume_slider');
  • var btn_mute = document.getElementById('mute');
  • player.volume = cursor.value/100;
  • btn_mute.removeAttribute('class');
  • btn_mute.setAttribute('class','navButton small');
  • }
  • function playPause(playerID,buttonID){
  • var player = document.getElementById('audio');
  • var button = document.getElementById('playPause');
  • if(player.paused)
  • {
  • player.play();
  • }
  • else
  • {
  • player.pause();
  • }
  • }
  • //bouton next
  • function next(){
  • var selected = document.getElementsByClassName('selected');
  • var oldIndex = selected[0].rowIndex;
  • var tableau = document.getElementById('playlist');
  • var adresseMorceau = tableau.rows[oldIndex+1].children[1].textContent;
  • var intituleMorceau =tableau.rows[oldIndex+1].children[0].textContent;
  • clickPlaylist(tableau.rows[oldIndex+1],adresseMorceau,intituleMorceau);
  • }
  • //bouton previous
  • function previous(){
  • var selected = document.getElementsByClassName('selected');
  • var oldIndex = selected[0].rowIndex;
  • var tableau = document.getElementById('playlist');
  • if(oldIndex!=0){
  • var adresseMorceau = tableau.rows[oldIndex-1].children[1].textContent;
  • var intituleMorceau =tableau.rows[oldIndex-1].children[0].textContent;
  • clickPlaylist(tableau.rows[oldIndex-1],adresseMorceau,intituleMorceau);
  • }
  • }
  • //click playlist
  • function clickPlaylist(sender,senderID,title){
  • var player = document.getElementById('audio');
  • player.pause();
  • player.load();
  • player.src = senderID;
  • player.play();
  • var display = document.getElementById('display');
  • display.setAttribute('value',title);
  • var supp = document.getElementsByClassName('selected');
  • if(supp[0])
  • {
  • supp[0].removeAttribute('class');
  • }
  • sender.setAttribute('class','selected');
  • }
  • ***Le code php***
  • <?php
  • include('connect.php');
  • class Playlist{
  • public function recupPlaylist(){
  • $type = 'ogg';
  • if (preg_match("/MSIE/i", $_SERVER["HTTP_USER_AGENT"])) {
  • $type='mp3';
  • }
  • $connect = new Connexion;
  • $stmt=mysqli_prepare($connect->recupConnexion(),"select nom_morceau,adresse_morceau from morceaux where type_morceau='".$type."'");
  • mysqli_stmt_execute($stmt);
  • mysqli_stmt_bind_result($stmt,$row->titre,$row->adresse);
  • while (mysqli_stmt_fetch($stmt)) {
  • $rows[] = $row;
  • $row = new stdClass();
  • mysqli_stmt_bind_result($stmt,$row->titre,$row->adresse);
  • }
  • return $rows;
  • }
  • }
  • ?>
  • ***le CSS***
  • #player{
  • width:300px;
  • /*height:180px;*/
  • padding:20px;
  • background-color:#999;
  • color:#000;
  • float:left;
  • margin:10px;
  • border:solid 2px #FFF ;
  • border-radius:10px;
  • background-image: -moz-linear-gradient(left,#333,#FFFFFF 20%,#000);
  • background-image: -webkit-gradient(linear,left top, right top,
  • from(#333),to(#000),color-stop(0.2, #FFFFFF));
  • background-image: -o-linear-gradient(left,#333,#FFFFFF 20%,#000);
  • box-shadow:-5px 5px 5px #333;
  • /*-webkit-box-shadow:-10px 10px 5px #333;
  • -moz-box-shadow:-10px 10px 5px #333;*/
  • }
  • #navigation{
  • width:240px;
  • margin-left:auto;
  • margin-right:auto;
  • margin-top:10px;
  • margin-bottom:10px;
  • }
  • .navButton{
  • width:80px;
  • height:30px;
  • float:left;
  • background-color:#C00;
  • text-align:center;
  • border-style:groove;
  • margin-bottom:20px;
  • }
  • .small{
  • width:30px;
  • height:30px;
  • background-image:url(../images/button_mutet.png);
  • }
  • .small_muted{
  • width:30px;
  • height:30px;
  • background-image:url(../images/button_mute_silent.png);
  • }
  • .navButton:hover{
  • background-color:#999;
  • }
  • .navButton:active{
  • /*background-color:#FFF;*/
  • -webkit-transform:scale(0.92,0.92);
  • -moz-transform:scale(0.92,0.92);
  • -o-transform:scale(0.92,0.92);
  • }
  • #mute{
  • }
  • #playPause{
  • background-image:url(../images/Boutons/playPause.png);
  • }
  • #next{
  • background-image:url(../images/Boutons/next.png);
  • }
  • #previous{
  • background-image:url(../images/Boutons/previous.png);
  • }
  • #playlist{
  • display:block;
  • clear:left;
  • /*height:100px;*/
  • overflow:auto;
  • width:300px;
  • background-color:#CCC;
  • margin-left:auto;
  • margin-right:auto;
  • }
  • #playlist li{
  • }
  • #playlist li:hover{
  • background-color:#999;
  • color:#CCC;
  • cursor:pointer;
  • }
  • #display{
  • width:290px;
  • margin-left:auto;
  • margin-right:auto;
  • }
  • tr{
  • background-color:#999;
  • width:300px;
  • }
  • tr:hover{
  • background-color:#fff;
  • }
  • tr:active{
  • background-color:#000;
  • color:#fff;
  • }
  • .selected{
  • background-color:#ccc;
  • }
  • td{
  • width:inherit;
  • }
  • .invisible{
  • display:none;
  • }
***player.html***
<div id="player">
<link rel="stylesheet" href="../style/player.css" type="text/css" />
<script type="text/javascript" src="../Script/audioPlayer.js"> </script>
<!--la balise en elle-meme-->
        <audio id="audio">
            <source src=""/>
            Your browser does not support audio element
        </audio>
<!--les controles-->
		<div id="controles"> 
            <input type="text" id="display"/>
            <input type="range" id="volume_slider" min="0" max="100" value="100"/>
            <button id="mute" class="navButton small" ></button>
        </div>
<!--navigation-->
        <div id="navigation">
            <button id="previous" class="navButton" ></button>
            <button id="playPause" class="navButton"   value="Play/Pause" name="Play/Pause"></button>
            <button id="next" class="navButton" ></button>
             
            
        </div>
<!--la playlist-->
        <table id="playlist">
        	
        <?php
include('../Script/playlist.php');

$playlist = new Playlist;

$listing = $playlist->recupPlaylist();
for($i=0;$i<sizeof($listing);$i++)
{
	echo ('<tr onclick="clickPlaylist(this,\'../morceaux/'.addslashes($listing[$i]->adresse).'\',\''.$listing[$i]->titre.'\')" ><td>'.$listing[$i]->titre.'</td><td class="invisible">../morceaux/'.addslashes($listing[$i]->adresse).'</td></tr>
	');
}
?>    
        </table>
    </div>
    <script type="text/javascript"> init();
</script> 
****le code JavaScript***
function init(){
	//alert("init");
	var btn1 = document.getElementById("playPause");
	var btn2 = document.getElementById("next");
	var btn3 = document.getElementById("previous");
	var slider = document.getElementById("volume_slider");
	var btn4 = document.getElementById("mute");
	if(btn1.addEventListener){/*alert("ok");*/}
	else{alert("not ok");}
	btn1.addEventListener('click',playPause,true);
	btn2.addEventListener('click',next,true);
	btn3.addEventListener('click',previous,true);
	slider.addEventListener('change',vol_change,true);
	btn4.addEventListener('click',mute,true);
	//alert('init2');
}
function mute(){
	var player = document.getElementById('audio');
	var btn_mute = document.getElementById('mute');
	if(player.volume!=0){
		player.volume = 0;
		btn_mute.removeAttribute('class');
		btn_mute.setAttribute('class','navButton small_muted');
	}
	else{
		btn_mute.removeAttribute('class');
		btn_mute.setAttribute('class','navButton small');
		var cursor = document.getElementById('volume_slider');
		player.volume = cursor.value/100;
	}
}
function vol_change(){
	var player = document.getElementById('audio');
	var cursor = document.getElementById('volume_slider');
	var btn_mute = document.getElementById('mute');
	player.volume = cursor.value/100;
	btn_mute.removeAttribute('class');
	btn_mute.setAttribute('class','navButton small');
}
function playPause(playerID,buttonID){
	var player = document.getElementById('audio');
	var button = document.getElementById('playPause');
	if(player.paused)
	{
		player.play();
	}
	else
	{
		player.pause();
	}
}
//bouton next
function next(){
	var selected = document.getElementsByClassName('selected');
	var oldIndex = selected[0].rowIndex;
	var tableau = document.getElementById('playlist');
	var adresseMorceau = tableau.rows[oldIndex+1].children[1].textContent;
	var intituleMorceau =tableau.rows[oldIndex+1].children[0].textContent;
	clickPlaylist(tableau.rows[oldIndex+1],adresseMorceau,intituleMorceau);
}
//bouton previous
function previous(){
	var selected = document.getElementsByClassName('selected');
	var oldIndex = selected[0].rowIndex;
	var tableau = document.getElementById('playlist');
	if(oldIndex!=0){
		var adresseMorceau = tableau.rows[oldIndex-1].children[1].textContent;
		var intituleMorceau =tableau.rows[oldIndex-1].children[0].textContent;
		clickPlaylist(tableau.rows[oldIndex-1],adresseMorceau,intituleMorceau);
	}
}
//click playlist
function clickPlaylist(sender,senderID,title){
	var player = document.getElementById('audio');
	player.pause();
	player.load();
	player.src = senderID;
	player.play();
	var display = document.getElementById('display');
	display.setAttribute('value',title);
	var supp = document.getElementsByClassName('selected');
	if(supp[0])
	{
		supp[0].removeAttribute('class');
	}
	sender.setAttribute('class','selected');
}
***Le code php***
<?php
include('connect.php');
class Playlist{
	public function recupPlaylist(){
		$type = 'ogg';
		if (preg_match("/MSIE/i", $_SERVER["HTTP_USER_AGENT"])) { 
			$type='mp3';
		}		
		$connect = new Connexion;
		$stmt=mysqli_prepare($connect->recupConnexion(),"select nom_morceau,adresse_morceau from morceaux where type_morceau='".$type."'");
		mysqli_stmt_execute($stmt);
		mysqli_stmt_bind_result($stmt,$row->titre,$row->adresse);
		 while (mysqli_stmt_fetch($stmt)) {
	      $rows[] = $row;
	      $row = new stdClass();
	      mysqli_stmt_bind_result($stmt,$row->titre,$row->adresse);
		 }
		 return $rows;
		}

}
?>
***le CSS***
#player{
	width:300px;
	/*height:180px;*/
	padding:20px;
	background-color:#999;
	color:#000;
	float:left;
	margin:10px;
	border:solid 2px #FFF ;
	border-radius:10px;
	background-image: -moz-linear-gradient(left,#333,#FFFFFF 20%,#000);
    background-image: -webkit-gradient(linear,left top, right top,
                	from(#333),to(#000),color-stop(0.2, #FFFFFF));
	background-image: -o-linear-gradient(left,#333,#FFFFFF 20%,#000);
	box-shadow:-5px 5px 5px #333;
	/*-webkit-box-shadow:-10px 10px 5px #333;
	-moz-box-shadow:-10px 10px 5px #333;*/		
}
#navigation{
	width:240px;
	margin-left:auto;
	margin-right:auto;
	margin-top:10px;
	margin-bottom:10px;
}
.navButton{
	width:80px;
	height:30px;
	float:left;
	background-color:#C00;
	text-align:center;
	border-style:groove;
	margin-bottom:20px;
}
.small{
	width:30px;
	height:30px;
	background-image:url(../images/button_mutet.png);
}
.small_muted{
	width:30px;
	height:30px;
	background-image:url(../images/button_mute_silent.png);
}
.navButton:hover{
	background-color:#999;
	
}
.navButton:active{
	/*background-color:#FFF;*/
	-webkit-transform:scale(0.92,0.92);
	-moz-transform:scale(0.92,0.92);
	-o-transform:scale(0.92,0.92);
}
#mute{
	
}
#playPause{
	background-image:url(../images/Boutons/playPause.png);
}
#next{
	background-image:url(../images/Boutons/next.png);
}
#previous{
	background-image:url(../images/Boutons/previous.png);
}
#playlist{
	display:block;
	clear:left;
	/*height:100px;*/
	overflow:auto;
	width:300px;
	background-color:#CCC;
	margin-left:auto;
	margin-right:auto;
	
}

#playlist li{
	
}
#playlist li:hover{
	background-color:#999;
	color:#CCC;
	cursor:pointer;
}
#display{
	width:290px;
	margin-left:auto;
	margin-right:auto;
}
tr{
	background-color:#999;
	width:300px;
}
tr:hover{
	background-color:#fff;
}
tr:active{
	background-color:#000;
	color:#fff;
}
.selected{
	background-color:#ccc;
}
td{
	width:inherit;
}
.invisible{
	display:none;
}

 Conclusion

Vous trouverez tous les fichiers dans le zip. Il faudra vérifier les liens entre pages pour les adapter a vos projets.
Les commentaires et propositions d'améliorations sont les bienvenus.
http://f3dots.comze.com

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

Source avec Zip Source avec une capture SLIDESHOW IMAGES ET TEXTES EN PUR JAVASCRIPT par ansuzpeorth
Source avec Zip INPUT TEXT AUTOMATIQUE CREATION SUPPRESSION par lycanges
Source avec Zip Source avec une capture TABLE_SV : TABLEAU DYNAMIQUE, MONTRER/CACHER COLONNE SUR DEM... par synanceia
COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture HTML5 PLAYER par kazma
Source avec Zip PLAYER VIDEO HTML À BONDER par Hakumbaya
Source avec Zip ANIMATION DU TEXTE par brennal
Source avec Zip PSEUDO CLASS JAVASCRIPT PERMET LE STORAGE(HTML5) D'UN TABLEA... par Magelo
Source avec Zip Source avec une capture PLAYER / LECTEUR DE FICHIERS AUDIO (MP3, ...) par thebmxeur

Commentaires et avis

Commentaire de twisteurwin le 19/05/2011 17:15:14

salut ca fonctionne pas tu as mélangé des éléments de ton site (dépendance bdd, structure etc) hors il faudrait supprimer et réorganiser et ca serait sympa alors la
a+++

Commentaire de maichafred le 19/05/2011 19:42:21

salut.
c'est clair qu'en l'état ça ne devrait pas marcher, mais j'ai mis le code pour que chacun puisse prendre ce qui l'intéresse. pour la récupération de playlist, on pourrait très bien passer par un fichier xml par exemple.
++

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Lancer un fichier audio dans le player HTML5 depuis un lien texte [ par skullo ] Bonjour à tous, Je recherche désespérément comment lancer un fichier audio dans le player html5 depuis un lien texte. Petit difficulté supplémentair Changer l'audio d'un lecteur html5 dans une iframe avec onClick [ par skullo ] Bonjour a tous, Apres plusieurs recherches sur le net je ne trouve toujours pas de solution a mon probleme. Du coup je me tourne vers le forum, si qu forme dynamique html5 cliquable [ par Capharnaum ] Bonjour, je tente de réaliser un petit script javascript sur une page en html5 et je rencontre à nouveau un problème. J'ai une boucle qui crée des po CreateJS [ par Twinspirit ] Bonjour, Je suis un développeur AS3 qui fait maintenant pas mal de HTML5/Javascript. Je suis assez branché sur [url=www.createjs.com]CreateJS[/url], Fonction JS avec Balise Audio (HTML5) non fonctionnel en Firefox [ par Maltroth ] Bon je vous explique, j'ai une balise audio en HTML5 qui fonctionne sur tous les fureteurs(ou presque). Le but du travail était de faire une liste dér Comment modifier les paramètres vidéos ? [ par hellotk ] Bonjour à tous, Étant novice en javascript, j'ai une question concernant la modification de paramètres vidéos; j'utilise pour mon site un lightbox en Application Web - Html5 [ par pyros49 ] Bonjour, Je souhaiterais faire une application personnelle à usage professionel. Je bidouille en PHP Je rame en Javascript Alors pas question d'appr Retours sur un développement graphique avec Javascript et Html5 [ par DavidCatuhe ] Après avoir fait un petit projet en HTML5 avec Visual Studio, je me suis lancé dans un article pour donner une sorte de dissection du résultat: http: PLAYER FLASH [ par lette ] Bonjour j'aimerais savoir si il est possible d'intégrer dans une page html le player flash afin que l'animation soit lue même si l'utilisateur n'a pa Recevoir des information dans une iframe [ par thebmxeur ] Bonjour a tous.pour mon site j'ai créé un petit player.Il fonctionne sous mozilla firefox mais pas sous ie.Dans ma page principal j'ai un formulaire p


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales