2016-01-17 37 views
12

sto usando questo codice e quando vedo il controls vedo che la riproduzione automatica non funziona.Audio Tag Autoplay Non funziona nel cellulare

<audio autoplay="true" src="music/lathe_di_chadar.mp3" type="audio/mp3" loop></audio>

e la sua non funziona nei dispositivi mobili e molto bene a lavorare nel sito web. Qualcuno può dirmi il problema in questo ?.

Grazie e ben apprezzato

risposta

5

Non v'è alcun modo per ottenere autoplay lavorare in browser mobili. (Questo non è permesso)

Ma alcuni trucchi fanno questa cosa.

Clicca sui link qui sotto per vedere alcuni trucchi

Autoplay audio on mobile safari

iOS-Specific Considerations | Loop Attribute

+0

Hai ragione circa l'autoplay per 'audio' tag , ma sembra che tu possa riprodurre automaticamente un suono usando 'AudioContext' (vedi la mia risposta) – Xenos

8

È possibile riprodurre un suono utilizzando il AudioContext API e prendendo la fonte da qualsiasi ArrayBuffer (vale a dire: da un XMLHttpRequest o a File)

window.addEventListener('load', function() { 
     var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); 
     var source = audioCtx.createBufferSource(); 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', 'audio-autoplay.wav'); 
     xhr.responseType = 'arraybuffer'; 
     xhr.addEventListener('load', function (r) { 
      audioCtx.decodeAudioData(
        xhr.response, 
        function (buffer) { 
         source.buffer = buffer; 
         source.connect(audioCtx.destination); 
         source.loop = false; 
        }); 
      source.start(0); 
     }); 
     xhr.send(); 
    }); 

Live example

Funziona su Chrome e Firefox sia mobile e desktop

Edit:

Vale la pena ricordare, IMO, che questo "trucco" in realtà può essere considerato come un bug del browser, e potrebbe non funzionare più a in qualsiasi momento se il browser decide che ciò interrompe l'esperienza utente/diventa un fastidio ampiamente utilizzato (come le pubblicità).

E 'anche opportuno ricordare che, almeno sul mio cellulare e FF 54, sarà ancora giocato il suono, anche se il vostro cellulare è disattivato ...

+0

È fondamentale menzionare che questa soluzione porterà alla perdita di memoria o ad un enorme uso di memoria per file audio superiori a 1 MB. Una stima sarebbe, un file audio codificato 1 MB sarà 11 MB di buffer decodificato dei dati in memoria. –

+0

@FarzadYZ Sarebbe interessante se si potesse mostrare che si tratta di una "perdita di memoria" (di cui dubito e non si tratta del codice JS eseguito ma di un problema di tipo browser o, per esempio, l'esecutore) o di una "memoria enorme" consumo "(rispetto al solito tag audio) – Xenos

+0

Caricamento dell'audio, decodifica usando l'API audio web' context.decodeAudioData', creando un 'AudioBufferSourceNode' e giocando che ti dà molta più flessibilità, ma viene fornito con un avvertimento piuttosto importante: si bloccherà il telefono. C'è una semplice ragione per questo. Il browser deve memorizzare l'intera clip audio, decodificata, in memoria, che dal momento che un file mp3 da 5 Mb equivale in genere a un file wav da 55 Mb è possibile trovarsi rapidamente a corto di memoria se si utilizzano file audio di grandi dimensioni. Quando ciò accade, il modo in cui lo scopri è l'intero tab che va in kaput. –

Problemi correlati