Accueil > > > PETIT LECTEUR AUDIO HTML 5
PETIT LECTEUR AUDIO HTML 5
Information sur la source
Description
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
Sources de la même categorie
Commentaires et avis
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
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|