У меня какая то странная проблема. Я пытаюсь создать сайт с зацикленным фоновым видео. Код выглядит так:
<video src="video/bg.mp4" style="z-index: -1;object-fit: cover;" poster="video/bg.jpg" autobuffer autoplay loop muted></video>
Это отлично работает в большинстве браузеров (IE борется с этой объектно-подходящей штукой, но я не возражаю), но на iPhone видео не воспроизводится автоматически, а на iPad это происходит. Я уже прочитал Новые политики для iOS и думаю, что отвечаю требованиям (иначе iPad не будет запускаться автоматически). Я провел другое тестирование:
- Удаление наложенных div не исправит
- Удаление z-индекса не исправит
- Wi-Fi или сотовая связь не имеют значения
- Размер видео тоже не имеет значения
Я делаю это неправильно или iPhone просто не воспроизводит видео автоматически и всегда требует взаимодействия? Меня интересует только iOS 10, я знаю, что на iOS 9 требования были другие
Ответы:
Есть ли
playsinline
атрибут помощь?Вот что у меня есть:
<video autoplay loop muted playsinline class="video-background "> <source src="videos/intro-video3.mp4" type="video/mp4"> </video>
См. Комментарий
playsinline
здесь: https://webkit.org/blog/6784/new-video-policies-for-ios/источник
playsinline
работал у меня вместе сmuted
учетом особенностей режима низкого энергопотребления на iPhoneplaysinline
Спас день !!!! Спасибо чувак. Кстати, новые политики браузера требуют, чтобы, если вы хотите автоматически запускать видео, запускайте его без звука, иначе вы не сможете это сделать. +1 к @ken Пример для Chrome: [ developers.google.com/web/updates/2017/09/…playsinline
должен быть записан в верблюжьего:playsInline
. Иначе не получится.iOS 10+ позволяет автоматически воспроизводить видео в режиме реального времени. но вам нужно отключить «Режим низкого энергопотребления» на вашем iPhone.
источник
Вот небольшой прием, который поможет преодолеть все трудности, с которыми вы сталкиваетесь при автовоспроизведении видео на веб-сайте:
Примечание. Некоторые браузеры не позволяют видео воспроизводиться автоматически, если пользователь не взаимодействует с устройством.
Итак, скрипты для проверки, воспроизводится ли видео:
Object.defineProperty(HTMLMediaElement.prototype, 'playing', { get: function () { return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2); }});
А затем вы можете просто автоматически воспроизвести видео, прикрепив слушателей событий к телу:
$('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(); } });
Примечание:
autoplay
атрибут очень простой, который необходимо добавить к тегу видео уже помимо этих скриптов.Вы можете увидеть рабочий пример с кодом здесь по этой ссылке:
Как автоматически воспроизводить видео, когда устройство находится в режиме низкого энергопотребления / режиме сохранения данных / проблема с браузером сафари
источник