2015-06-19 8 views
8

Sembra che non sia possibile raggiungere il loop senza pause con il cellulare. Questo è quello che ho fatto finora:Come posso fare un loop audio senza pause con il browser mobile?

https://github.com/Hivenfour/SeamlessLoop

  • Crea un gap.

http://www.schillmania.com/projects/soundmanager2/demo/api/

  • Crea una lacuna.

https://github.com/regosen/Gapless-5

  • Crea una lacuna.
  • Scarica stesso audio due volte.

https://github.com/floatinghotpot/cordova-plugin-nativeaudio

  • Crea una lacuna.

HTML5 audio

  • Crea una lacuna.

di Cordova supporto plug

  • Crea un gap.

WebAudio

Tutti sopra testati con mp3 e ogg.

EDIT:

plug Cordova delle SoundJS è rotto e quindi non funziona;

https://github.com/CreateJS/SoundJS/issues/170

+1

è possibile precaricare una seconda copia, suonare il primo, guardare la posizione e suonare il secondo ~ 200 ms prima del 1 ° capo. potrebbe aver bisogno di modificare il ritardo, o forse in qualche modo calcolarlo da un benchmark ... – dandavis

+0

Ho paura di questo e la dissolvenza incrociata sembra essere l'unica soluzione possibile. Il tuo suggerimento ha problemi quando il ritardo non è lo stesso per tutte le piattaforme e i dispositivi. La dissolvenza incrociata è buona su certi suoni, ma davvero negativa per gli altri. – unska

+0

sì, puoi probabilmente misurare il ritardo/ritardo con una traccia silenziosa, ma hai ragione, non sarà perfetto. potrebbe essere passabile o meglio di niente o un telefono caldo però ... c'è anche il problema del silenzio finale, che potrebbe essere efficace con CORS e API per caricare la coda e trovare l'ultimo contenuto udibile. – dandavis

risposta

3

Con HTML5 Se si utilizza HTML5, utilizzare l'attributo loop.

<audio controls loop> 
    <source src="horse.ogg" type="audio/ogg"> 
    <source src="horse.mp3" type="audio/mpeg"> 
Your browser does not support the audio element. 
</audio> 

Non crea gap, controllare con il vostro file audio, la maggior parte dei file audio ha divario alla fine.

È possibile testarlo here, basta aggiungere l'attributo loop ed eseguire la pagina.

con JavaScript

Anche qui è un'alternativa utilizzando JavaScript

myAudio = new Audio('someSound.ogg'); 
myAudio.addEventListener('ended', function() { 
    this.currentTime = 0; 
    this.play(); 
}, false); 
myAudio.play(); 

Qui JavaScript creerà piccolo varco, si può superare giocando ciclo non quando l'audio è finito, ma quando l'audio sta per finire. Ecco il codice.

Ecco quello che vuoi.

myAudio = new Audio('http://unska.com/audio/pinknoise.ogg'); 
myAudio.ontimeupdate= function(i) { 
    if((this.currentTime/this.duration)>0.9){ 
    this.currentTime = 0; 
    this.play(); 
    } 
}; 
myAudio.play(); 

Here è Demo.

+0

Sei serio? L'audio HTML crea il gap peggiore di tutti http://unska.com/audio/htmlaudio.html La versione javascript crea una brutta fessura troppo http://unska.com/audio/javascriptaudio.html – unska

+0

Inoltre, se vuoi mostrare come eseguire un loop di riproduzione senza pause, usa un file sonoro che non ha pause, non un suono di cavallo con il silenzio all'inizio e alla fine sul file. – unska

+0

@unska la maggior parte degli strumenti che hai citato implementano l'audio HTML5 .. – Pogrindis

-1

Prova SoundJS. Include uno cordova plugin.

+0

Ho già avvertito che il loro plug-in non funziona: https : //github.com/CreateJS/SoundJS/issues/170 – unska

Problemi correlati