it-swarm.com.ru

Как я могу автоматически воспроизводить медиафайлы в iOS> = 4.2.1 Mobile Safari?

Кажется, я не могу заставить воспроизводиться аудио-файлы в Mobile Safari на iOS 4.2.1 ни в одной ситуации, кроме обработчика события щелчка, выполняемого пользователем. Даже тогда, если player.play() вызывается любым асинхронным способом (ajax, setTimeout и т.д.), Это не работает.

Я пытался вызвать player.load() до player.play(). Я попытался вызвать событие click для элемента dom, чей обработчик вызывает player.play(). Я пытался использовать аудио и видео теги.

Все лазейки, которые работали до iOS 4.2.1, кажутся закрытыми. Есть идеи?

23
David Gouldin

Начиная с iOS 4.2.x, загрузка мультимедиа не будет начата, если нет события пользовательского ввода, такого как touchstart.

Таким образом, ответ нет , нет способа автоматически воспроизводить медиа с помощью JavaScript или чего-то еще.

16
Yu Jianrong

Существует один способ автоматического воспроизведения видео/аудио файла на 4.2.1. Создайте iframe, установите в качестве его источника URL-адрес медиа-файла и добавьте iframe к телу. Это будет автовоспроизведение.

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

Как уже говорили здесь и согласно документации Apple, MobileSafari НЕ поддерживает атрибут autoplay в теге video. Тем не менее, в iOS 6 это работает. Похоже, это ошибка, которую Apple исправила в iOS 6.0.1 (и предположительно в iOS 6.1).

Не полагайтесь на автозапуск, работающий в iOS 6, если вы случайно натолкнулись на него, работая в iOS 6.0.

-Майкл

6
Michael Johnston

В качестве обходного пути я попытался связать код load ()/play () с событием click, а затем программно вызвать событие click. Этот подход работал в Desktop Safari, но не в Mobile Safari.

4
mshafrir

Как насчет этого?

Создайте аудио Sprite с помощью Sound Manager 2, предварительно загрузите и кешируйте его с первого взаимодействия с пользователем, а затем воспроизводите по мере необходимости. 

Будет ли это работать?

1
mousedown

Это работало на iPad до последних 4,2 обновления:

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

Моя Beep.play(); по-прежнему работает для события click, но первоначальная Beep.play() перестала работать ...

1
steve

Автозапуск поддерживается (в моих тестах) на iPhone 5 (iOS 6) с использованием разъема для наушников. 

0
Jeremiah Isaacson

На моем iPad третьего поколения под управлением IOS 6 автоматически началось автоматическое воспроизведение тегов HTML5! (У меня было IOS 6 установлено в течение нескольких недель, и я почти уверен, что сразу протестировал эту функцию, но заметил, что она работает только сегодня вечером.) Я не помню, чтобы видел какое-либо уведомление об этом от Apple, хотя я видел, что мобильному Safari была предоставлена ​​возможность поддерживать загрузку файлов через 

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

- еще одна особенность, которая мне нужна, но которую Apple отказала.

0
dkurland