2012-02-15 6 views
7

Qual è il modo migliore e cross-browser per riprodurre un file mp3 (molto breve) tramite javascript? ho cercato modi diversi, ma c'è sempre un problema ...Riproduci file mp3 utilizzando javascript

EDIT 1:

Non ho bisogno di un giocatore "completo", ho solo bisogno di una funzione di quello che posso chiamare ogni volta che succede qualcosa

EDIT 2:

Ok, ho per spiegare meglio il mio problema. Il server è uno smartphone connesso in una LAN, ma non sempre a Internet. Voglio usare mp3 perché il file pesa solo 3kb (invece di 60kb di wav), ma se il meccanismo per riprodurre questo file è troppo "pesante" (un player o jquery.js) penso che sia meglio usare il file wav. Altri suggerimenti?

+0

tag audio html5 – Johan

+1

http://jplayer.org –

+0

@Johan Ho provato il tag audio html5 con [questo] (http://msdn.microsoft.com/en-us/library/gg589489 (v = vs.85) .aspx), ma non funziona su Chrome – supergiox

risposta

0

Si consiglia di utilizzare Flowplayer. È scritto in Flash e JavaScript e ha un fallback HTML5.

Sidenote: su tutti i dispositivi iOS (iPad ecc.), Non è disponibile la riproduzione automatica.

5

Carica la pagina con solo un download diretto nel file audio. Rileva se il browser supporta MP3. Se lo fa, migliora progressivamente il download diretto in un tag AUDIO. Ecco un esempio:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>Audio demo</title> 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.0.6/modernizr.min.js"></script> 
</head> 
<body> 
    <p id="audio"> 
     <a href="BadAppleEnglish.mp3">Listen &raquo;</a>   
    </p> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"></script> 
    <script src="audio.js"></script> 
</body> 
</html> 

E il Javascript:

$(function() { 
var audioElement = $('#audio'), 
    href = audioElement.children('a').attr('href'); 
$.template('audioTemplate', '<audio src="${src}" controls>'); 
if (Modernizr.audio.mp3) { 
    audioElement.empty(); 
    $.tmpl('audioTemplate', {src: href}).appendTo(audioElement); 
} 
}); 

Immagino che la maggior parte delle miriadi di precompilati MP3 giocano plugin lavoro come questo.

UPDATE:

Dal momento che hai modificato la domanda per specificare che si preferisce una soluzione che non fa uso di jQuery, mi preme segnalare che la riscrittura non utilizzare per jQuery è banale. È solo più lungo e meno elegante. Tieni presente che le librerie Javascript caricate dai CDN vengono solitamente memorizzate nella cache dal browser.

+0

Ho modificato la domanda – supergiox

14

Utilizzare questa:

new Audio('your/url/here').play() 

La documentazione per il presente (HTMLAudioElement) può essere trovato alla MDN, si noti che la maggior parte dei controlli vengono ereditate da HTMLMediaElement.