Подтвердить что ты не робот

Как я могу автоматически запускать медиа в 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, кажутся закрытыми. Любые идеи?

4b9b3361

Ответ 1

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

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

Ответ 2

Существует один способ автоматического воспроизведения видео/аудиофайла в 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);

Ответ 3

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

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

-Майкл

Ответ 4

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

Ответ 5

Это работало на iPad до последних ночей. 4.2 обновление:

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

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

Ответ 6

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

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

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

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

Попробуйте этот код, он работает как с версией, вам нужно динамически добавлять аудиоконтроль на страницу. он работает.

var isiPad = false;
if (navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i)) { 
    isiPad = true; 
}
$(function() { 
    if (isiPad) { 
        var audioElement2 = document.createElement('audio'); 
        audioElement2.setAttribute('src', 'img/bgsound.mp3'); 
        audioElement2.controls = true; 
        audioElement2.loop = true; 
        audioElement2.load();
        audioElement2.play();
    }
});