<video>
Теги autoplay="autoplay"
атрибут отлично работает в Safari.
При тестировании на iPad видео нужно активировать вручную.
Я подумал, что это проблема с загрузкой, поэтому запустил цикл, проверяющий состояние носителя:
videoPlay: function(){
var me = this;
console.log('STATE: ' + $("#periscopevideo").get(0).readyState);
if ($("#periscopevideo").get(0).readyState != 4){
setTimeout(function(){me.videoPlay();}, 300);
}
else {
$("#periscopevideo").get(0).play();
}
}
Состояние остается на 0
iPad. На моем настольном сафари он проходит 0
, 1
и наконец 4
. На iPad это происходит, только 4
если я вручную нажимаю стрелку «воспроизведение».
Кроме того, работает и вызов $("#periscopevideo").get(0).play()
по клику onClick
.
Есть ли какие-либо ограничения Apple в отношении автовоспроизведения? (Кстати, я использую iOS 5+).
Ответы:
Обновление iOS 10
Запрет на автовоспроизведение был снят с iOS 10, но с некоторыми ограничениями (например, A может автоматически воспроизводиться, если нет звуковой дорожки).
Чтобы увидеть полный список этих ограничений, см. Официальную документацию: https://webkit.org/blog/6784/new-video-policies-for-ios/
iOS 9 и ранее
Начиная с iOS 6.1, автоматическое воспроизведение видео на iPad больше невозможно.
Мое предположение относительно того, почему они отключили функцию автоматического воспроизведения?
Что ж, поскольку у многих владельцев устройств есть ограничения на использование данных / пропускную способность на своих устройствах, я думаю, что Apple чувствовала, что пользователь сам должен решать, когда они инициируют использование пропускной способности.
После небольшого исследования я нашел в документации Apple следующий отрывок, касающийся автоматического воспроизведения на устройствах iOS, чтобы подтвердить свое предположение:
Вот отдельное предупреждение на справочной странице Safari HTML5 о том, почему встроенные мультимедиа не могут быть воспроизведены в Safari на iOS:
Что это означает (с точкой зрения кода) является то , что в JavaScript
play()
иload()
методы неактивные до тех пор , пока воспроизведение инициированного пользователя, еслиplay()
илиload()
метод не вызываются действиями пользователя (например , щелчок событие).Обычно кнопка воспроизведения, инициированная пользователем, работает, а
onLoad="play()"
событие - нет.Например, это будет проигрывать фильм:
В то время как следующее ничего не сделает на iOS:
источник
Я хочу начать с того, что я понимаю, что этот вопрос старый и уже имеет принятый ответ; но, как несчастный пользователь Интернета, который использовал этот вопрос как средство завершения, но вскоре после этого оказался неправ (но не раньше, чем я немного расстроил своего клиента), я хочу добавить свои мысли и предложения.
Хотя @DSG и @Giona верны и в их ответах нет ничего плохого, есть творческий механизм, который вы можете использовать, чтобы, так сказать, «обойти» это ограничение. Это не означает, что я потворствую обходу этой функции, как раз наоборот, это просто некоторые механизмы, позволяющие пользователю по-прежнему «чувствовать», как будто видео или аудиофайл «воспроизводится автоматически».
Быстрая работа - спрятать видеотег где-нибудь на мобильной странице, поскольку я создал адаптивный сайт, я делаю это только для небольших экранов. Тег видео (примеры HTML и jQuery):
HTML
JQuery
Когда это скрыто на странице, когда пользователь «щелкает», чтобы посмотреть фильм (все еще взаимодействие с пользователем, это требование невозможно обойти) вместо перехода на дополнительную страницу просмотра, я загружаю скрытое видео. В основном это работает, потому что тег мультимедиа на самом деле не используется, а вместо этого повышается до экземпляра Quicktime, поэтому наличие видимого элемента видео вообще не требуется. В обработчике для "клика" (или "таченд" на мобильном телефоне).
И альт. Что касается UX, пользователь нажимает на видео для воспроизведения, и Quicktime начинает воспроизведение выбранного видео. Это остается в пределах ограничения, что видео можно воспроизводить только с помощью действий пользователя, поэтому я не навязываю данные никому, кто не решает смотреть видео с помощью этой службы. Я обнаружил это, когда пытался выяснить, как именно Youtube справился с этим со своим мобильным телефоном, который, по сути, представляет собой действительно хорошее построение страницы Javascript и скрытие причудливых элементов, как в случае с тегом видео.
tl; dr Вот несколько «обходной путь», чтобы попытаться создать UX-функцию «автовоспроизведение» на устройствах iOS, не выходя за рамки ограничений Apple, и при этом пользователи должны решать, хотят ли они смотреть видео (или аудио, скорее всего, хотя я не тестировал), не загрузив его без их разрешения.
Кроме того, для человека, который прокомментировал это с сайта sleep.fm, это, к сожалению, не было бы решением ваших проблем, связанных с воспроизведением звука по времени.
Я надеюсь, что кто-то сочтет эту информацию полезной, это сэкономило бы мне неделю доставки плохих новостей клиенту, который был непреклонен в том, что у него есть эта функция, и я был рад найти способ доставить ее в конце.
РЕДАКТИРОВАТЬ
Дальнейшие исследования показывают, что вышеуказанный обходной путь предназначен только для устройств iPhone / iPod. IPad воспроизводит видео в Safari до того, как оно будет полноэкранным, поэтому вам понадобится какой-то механизм для изменения размера видео при нажатии перед воспроизведением, иначе у вас будет звук, а не видео.
источник
$dummyVideo.get(0)
вместо скобок, чтобы jQuery мог корректно завершиться неудачей, если ваш выбор пуст.Просто установите
webView.mediaPlaybackRequiresUserAction = NO;
У меня автозапуск работает на iOS.
источник
Начиная с iOS 10, видео теперь могут воспроизводиться автоматически, но только они либо отключены, либо не имеют звуковой дорожки. Ура!
Коротко:
<video autoplay>
elements теперь будут учитывать атрибут autoplay для элементов, которые соответствуют следующим условиям:<video>
элементам будет разрешено автовоспроизведение без жестов пользователя, если их исходный носитель не содержит звуковых дорожек.<video muted>
элементы также будут разрешены для автоматического воспроизведения без жестов пользователя.<video>
элемент получает звуковую дорожку или становится отключенным без жестов пользователя, воспроизведение приостанавливается.<video autoplay>
Элементы будут воспроизводиться только тогда, когда они видны на экране, например, когда они прокручиваются в область просмотра, становятся видимыми с помощью CSS и вставляются в DOM.<video autoplay>
элементы будут приостановлены, если они станут невидимыми, например, при прокрутке из области просмотра.Подробнее здесь: https://webkit.org/blog/6784/new-video-policies-for-ios/
источник
В этом справочнике по Safari HTML5 вы можете прочитать
источник
Позвольте видео сначала отключить звук, чтобы обеспечить автовоспроизведение на iOS, затем включите его, если хотите.
источник