J'ai une sorte de problème étrange. J'essaie de créer un site Web avec une vidéo d'arrière-plan en boucle. Le code ressemble à celui-ci:
<video src="video/bg.mp4" style="z-index: -1;object-fit: cover;" poster="video/bg.jpg" autobuffer autoplay loop muted></video>
Cela fonctionne parfaitement bien sur la plupart des navigateurs (IE a du mal avec cette chose d'ajustement d'objet mais cela ne me dérange pas) mais sur iPhone, la vidéo ne sera pas lue automatiquement, mais sur iPad, c'est le cas. J'ai déjà lu les nouvelles politiques pour iOS et je pense que je réponds aux exigences (sinon l'iPad ne sera pas lu automatiquement). J'ai fait d'autres tests:
- La suppression des div superposés ne résoudra pas le problème
- La suppression de z-index ne résoudra pas le problème
- Le Wifi ou le cellulaire ne fait aucune différence
- La taille du fichier vidéo ne fait pas non plus de différence
Est-ce que je fais mal ou est-ce que l'iPhone ne lit pas automatiquement les vidéos et nécessite toujours une interaction? Je ne me soucie que d'iOS 10, je sais que les exigences étaient différentes sur iOS 9
Réponses:
L'
playsinline
attribut aide-t-il?Voici ce que j'ai:
<video autoplay loop muted playsinline class="video-background "> <source src="videos/intro-video3.mp4" type="video/mp4"> </video>
Voir le commentaire
playsinline
ici: https://webkit.org/blog/6784/new-video-policies-for-ios/la source
playsinline
a travaillé pour moi enmuted
gardant à l'esprit la bizarrerie du mode basse consommation sur iPhoneplaysinline
A sauvé la journée !!!! Merci mec. BTW, les nouvelles politiques de navigateur exigent que si vous souhaitez démarrer automatiquement une vidéo, la démarrer en mode silencieux ou vous ne pourrez pas le faire. 1 à @ken Exemple de chrome: [ developers.google.com/web/updates/2017/09/...playsinline
doit être écrit en camelCase:playsInline
. Sinon, cela ne fonctionnera pas.iOs 10+ permet la lecture automatique de la vidéo en ligne. mais vous devez désactiver le "mode faible consommation" sur votre iPhone.
la source
Voici le petit hack pour surmonter toutes les difficultés que vous avez pour la lecture automatique de vidéos sur un site Web:
Remarque: certains navigateurs ne permettent pas la lecture automatique des vidéos à moins que l'utilisateur n'interagisse avec l'appareil.
Donc, les scripts pour vérifier si la vidéo est en cours de lecture sont:
Object.defineProperty(HTMLMediaElement.prototype, 'playing', { get: function () { return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2); }});
Et puis, vous pouvez simplement lire automatiquement la vidéo en attachant des écouteurs d'événements au corps:
$('body').on('click touchstart', function () { const videoElement = document.getElementById('home_video'); if (videoElement.playing) { // video is already playing so do nothing } else { // video is not playing // so play video now videoElement.play(); } });
Remarque: l'
autoplay
attribut est très basique et doit être ajouté à la balise vidéo déjà autre que ces scripts.Vous pouvez voir l'exemple de travail avec le code ici à ce lien:
Comment lire automatiquement une vidéo lorsque l'appareil est en mode basse consommation / mode d'économie de données / problème de navigateur Safari
la source