web-dev-qa-db-fra.com

Lecture automatique des balises audio Ne fonctionne pas sur mobile

j'utilise ce code et quand je vois le controls je vois que la lecture automatique ne fonctionne pas.

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

et son ne fonctionne pas dans les appareils mobiles et fonctionne très bien dans le site Web. Quelqu'un peut-il me dire le problème à ce sujet?.

Merci et bien apprécié

15
Lakshya

Il n'y a aucun moyen de faire fonctionner automatiquement la lecture automatique dans les navigateurs mobiles. (Ce n'est pas autorisé)

Mais certaines astuces font cette chose.

Cliquez sur les liens ci-dessous pour voir quelques astuces

Lecture automatique audio sur safari mobile

Considérations spécifiques à iOS | Attribut de boucle

8
Ender Kaya

Vous pouvez jouer un son en utilisant l'API AudioContext et en prenant la source à partir de n'importe quel ArrayBuffer (c'est-à-dire: à partir d'un XMLHttpRequestou d'un 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();
    });

exemple en direct

Fonctionne sur Chrome et Firefox à la fois mobile et de bureau

Remarques importantes

Il convient de mentionner, IMO, que cette "astuce" peut en fait être considérée comme un bogue du navigateur et peut ne plus fonctionner à tout moment si le navigateur décide que cela rompt l'expérience utilisateur/devient une nuisance largement utilisée (comme les publicités).

Il convient également de mentionner que, au moins sur mon mobile et FF 54, le son sera toujours joué, même si votre mobile est en sourdine ...

Il convient également de mentionner que l'utilisateur peut définir le comportement autoplay en fonction de ses souhaits et de ses besoins, soit via les options habituelles du navigateur, soit via le _ plus avancé about:config page (autoplay le comportement est défini par media.autoplay.enabled et media.block-autoplay-until-in-foreground préférences).

Donc forcer l'audio autoplay est une mauvaise idée UX peu importe comment vous le faites.

10
Xenos