2012-11-28 19 views
20

In particolare, se una delle 206 richieste per l'audio non riesce e il buffering si interrompe, c'è un modo per rilevare tale stato? O dovrei controllare se il buffering si è fermato confrontando gli importi bufferizzati con quelli passati?Come verificare se l'audio HTML5 ha raggiunto errori diversi

Inoltre, come è possibile controllare se l'origine specificata non riesce, è possibile quindi indirizzarla a un'altra fonte?

+0

è possibile mostrare il codice che si utilizza per caricare questo file (3 o 4 del 206) –

risposta

30

1. In particolare, se una delle richieste per l'audio non riesce e il buffering si interrompe, esiste un modo per rilevare tale stato?

Sì, ci sono alcuni modi per farlo! Ma se si vuole prendere il tipo di errore è possibile collegare il listener di eventi di errore per le fonti:

$('audio').addEventListener('error', function failed(e) { 
    // audio playback failed - show a message saying why 
    // to get the source of the audio element use $(this).src 
    switch (e.target.error.code) { 
    case e.target.error.MEDIA_ERR_ABORTED: 
     alert('You aborted the video playback.'); 
     break; 
    case e.target.error.MEDIA_ERR_NETWORK: 
     alert('A network error caused the audio download to fail.'); 
     break; 
    case e.target.error.MEDIA_ERR_DECODE: 
     alert('The audio playback was aborted due to a corruption problem or because the video used features your browser did not support.'); 
     break; 
    case e.target.error.MEDIA_ERR_SRC_NOT_SUPPORTED: 
     alert('The video audio not be loaded, either because the server or network failed or because the format is not supported.'); 
     break; 
    default: 
     alert('An unknown error occurred.'); 
     break; 
    } 
}, true); 

2. Potrebbe quindi puntare ad un'altra fonte?

All'interno della funzione gestore degli errori è possibile cambiare la sorgente utilizzando la proprietà src dell'elemento audio:

var audio = $(this); 
audio.src = "new-audio-file.mp3"; 
audio.load(); 

Un'altra opzione è quella di aggiungere sorgenti multiple per lo stesso tag audio utilizzando la seguente sintassi:

<audio> 
    <source id="audio_player_ogv" src="test.ogv" type="audio/ogg" /> 
    //In case that you can't load the ogv file it will try to load test.mp3 
    <source id="audio_player_mp3" src="test.mp3" type="audio/mpeg" /> 
</audio> 

3. Circa gestire più file audio

Suggerirei di usare un plugin se stai pensando di gestire 206 file audio. Sto usando SoundManager2 per un po 'ed è molto buono!

+0

++ su SoundManager2, anche se a causa del flash fallback non funzionerà con il mobile ... o almeno io don lo penso, vero? – infocyde

+1

@infocyde: No, non funzionerà sul cellulare –

+0

@TomSarduy '$ ('audio'). AddEventListener' è jQuery? – LoneWOLFs

-2

Penso che si può trovare la risposta qui w3schools alla fine della pagina (Media Eventi blocco)

probabilmente onerror o onstalled o onreadystatechange

3

C'è una lista completa degli eventi gestiti da elementi multimediali in le specifiche: https://html.spec.whatwg.org/multipage/embedded-content.html#media-elements

Vorrei esaminare in particolare gli eventi di stallo, interruzione, avanzamento.

Poiché questo elemento è relativamente nuovo, le implementazioni possono variare notevolmente. Quindi testerei questi eventi contro le piattaforme a cui miri per vedere se funzionano come previsto per le tue esigenze. In caso contrario potrebbe essere necessario fare qualcosa di un po 'più manuale come il polling dello stato del buffer come hai menzionato.

Problemi correlati