web-dev-qa-db-fra.com

Comment puis-je lire automatiquement les médias dans iOS> = 4.2.1 Mobile Safari?

Je n'arrive pas à obtenir la lecture de média audio dans Mobile Safari sur iOS 4.2.1 dans des situations autres que le gestionnaire d'un événement de clic effectué par l'utilisateur. Même dans ce cas, si player.play() est appelé de manière asynchrone (ajax, setTimeout, etc.), cela ne fonctionne pas.

J'ai essayé d'appeler player.load() avant player.play(). J'ai essayé de déclencher un événement click sur un élément dom dont le gestionnaire appelle player.play(). J'ai essayé d'utiliser des balises audio et vidéo.

Toutes les failles qui fonctionnaient avant iOS 4.2.1 semblent être fermées. Des idées?

23
David Gouldin

À partir de iOS 4.2.x, le téléchargement de contenu multimédia ne sera pas lancé en l'absence d'événement d'entrée utilisateur, tel que touchstart.

Donc, la réponse est non , il n'y a pas de méthode pour lire automatiquement les médias en JavaScript ou quelque chose d'autre.

16
Yu Jianrong

Il existe un moyen de lire le fichier vidéo/audio automatiquement sur 4.2.1. Créez un iframe et définissez sa source sur l'URL du fichier multimédia, puis ajoutez l'iframe au corps. Ce sera une lecture automatique.

var ifr=document.createElement("iframe");
ifr.setAttribute('src', "http://mysite.com/myvideo.mp4");
ifr.setAttribute('width', '1px');
ifr.setAttribute('height', '1px');
ifr.setAttribute('scrolling', 'no');
ifr.style.border="0px";
document.body.appendChild(ifr);

13
bhups

Comme d'autres l'ont dit ici et selon la documentation Apple, MobileSafari NE prend PAS en charge l'attribut de lecture automatique dans la balise video. Cependant, sous iOS 6, cela fonctionne. Cela semble être un bogue corrigé par Apple dans iOS 6.0.1 (et vraisemblablement dans iOS 6.1).

Ne comptez pas sur la lecture automatique pour iOS 6 si vous tombez par hasard sur iOS 6.

-Michael

6
Michael Johnston

Pour contourner le problème, j'ai essayé de lier le code load ()/play () à un événement click, puis de le déclencher par programme. Cette approche a fonctionné dans Desktop Safari, mais pas dans Mobile Safari.

4
mshafrir

Que dis-tu de ça?

Créez un Sprite audio avec Sound Manager 2, préchargez-le et mettez-le en cache dès la première interaction avec l'utilisateur, puis lisez-le selon vos besoins. 

Cela fonctionnerait-il?

1
mousedown

Cela a fonctionné sur l'iPad jusqu'à la mise à jour 4.2 la nuit dernière:

$(function() {
    var Beep = document.createElement('audio');
    Beep.setAttribute('src', 'beep-23.mp3');
    Beep.load();
    Beep.play();
}

Ma Beep.play(); fonctionne toujours pour un événement click, mais la Beep.play() initiale a cessé de fonctionner.

1
steve

La lecture automatique est prise en charge (dans mes tests) avec un iPhone 5 (iOS 6) utilisant la prise casque. 

0
Jeremiah Isaacson

Sur mon iPad de 3e génération en cours d’exécution IOS - 6, la lecture automatique des balises HTML5 a soudainement commencé à fonctionner! (J'ai IOS 6 installé depuis quelques semaines et je suis sûr d'avoir testé cette fonctionnalité tout de suite, mais je l'ai seulement vue fonctionner ce soir.) Je ne me souviens pas en avoir été informé. Apple, bien que j’ai vu que Safari sur mobile avait été autorisé à prendre en charge le téléchargement de fichiers via 

<form><input type="file" .../></form>

- une autre fonctionnalité dont j'avais besoin mais qu'Apple avait dissimulée.

0
dkurland