Автоматическое воспроизведение аудио / видео HTML5 в iOS5

#javascript #html #html5-video #html5-audio

#javascript #HTML #html5-video #html5-аудио

Вопрос:

У меня есть веб-приложение HTML5, в котором есть звуковые эффекты. Я пытаюсь заставить эти эффекты работать в iOS5 и не могу ни за что на свете.

Интересно, есть ли у кого-нибудь какие-либо обходные пути, чтобы получить JS-контроль над управлением аудио / видео HTML5 в iOS5.

Или даже способ управлять несколькими аудиофайлами одним щелчком мыши. В нынешнем виде, если у меня есть 10 звуковых эффектов, мне потребуется 10 кликов пользователя, чтобы получить контроль над всеми из них, что абсурдно!

Комментарии:

1. Насколько я знаю, Apple не разрешает автоматическое воспроизведение на iOS, оно должно быть инициировано щелчком пользователя, также вы можете воспроизводить только один файл одновременно для видео и, вероятно, то же самое для аудио

2. Я могу просто отлично накладывать звуковые дорожки, мне просто нужно разрешение для каждого из них, чтобы сделать это…

3. Как и упоминал @andrewh, он активируется пользователем, так почему бы вам не наложить прозрачный div на все ваше приложение, которое, когда пользователь касается вас, удаляет и активирует ваш звук, таким образом, это было взаимодействие с пользователем. Это скорее взлом. Или запустите аудио с помощью любой другой кнопки, которая может быть в вашем приложении, требующей нажатия

4. не нужно ничего накладывать, я могу перехватывать клики до document.body . Частично проблема заключается в том, что я могу активировать только ОДИН аудиофайл за клик, поэтому пользователю потребуется щелкнуть 10 раз, если я хочу контролировать 10 звуковых эффектов.

Ответ №1:

Абсурд, но вы должны увидеть это с точки зрения iPhone или любого мобильного телефона. Это мобильный телефон, работающий по сотовой сети с ограниченной пропускной способностью, о которой многие знают из недавнего рекламного ролика Sprint. Они не хотят, чтобы пользователи превышали свой лимит пропускной способности, потому что какой-то сайт отправляет на их телефон большой объем данных, а они сами не предпринимают никаких действий.

Ниже приводится выдержка из официальной библиотеки для разработчиков Safari с более подробной информацией.

Пользовательское управление загрузками по сотовым сетям

В Safari на iOS (для всех устройств, включая iPad), где пользователь может находиться в сотовой сети и взимать плату за единицу данных, предварительная загрузка и автоматическое воспроизведение отключены. Данные не загружаются, пока пользователь не инициирует их. Это означает, что методы воспроизведения JavaScript () и загрузки () также неактивны до тех пор, пока пользователь не инициирует воспроизведение, если только методы воспроизведения () или загрузки () не запускаются действием пользователя. Другими словами, кнопка воспроизведения, инициируемая пользователем, работает, а событие onLoad=»play()» — нет.

При этом воспроизводится фильм: <input type="button" value="Play" onClick="document.myMovie.play()">

Это ничего не делает на iOS: <body onLoad="document.myMovie.play()">

Комментарии:

1. Немного запоздало, но это означает, что решения нет?

Ответ №2:

Из-за Apple они ограничили функции автоматического воспроизведения, чтобы предотвратить взимание платы за передачу данных сотовой связи. Однако в xcode4 я добавил обходной путь. В вашем «webViewDidFinishLoad» отправьте вызов javascript для автоматического воспроизведения видео, и это сработает. Я попробовал это в html-файле с обычным javascript, но это не сработало. Однако выполнение этого через webViewDidFinishLoad помогло. В этом примере я хочу автоматически воспроизводить видео на моем index.html страница. У меня есть функция javascript на этой странице, которая называется startVideo ().

 - (void)webViewDidFinishLoad:(UIWebView *)webView{
    NSURLRequest* request = [webView request];
    NSString *page = [request.URL lastPathComponent];
    if ([page isEqualToString:@"index.html"]){
        NSString *js = @"startVideo();";
        [myWebMain stringByEvaluatingJavaScriptFromString:js];
    }
}
  

И вот моя функция javascript:

 <script>
function startVideo(){
var pElement3 = document.getElementById('myVideo');
pElement3.play();
}
</script>
  

И вот html-код на случай, если вы новичок в HTML-видео

 <video id="myVideo" poster="index_poster.png" width="1024" height="768" xcontrols     autoplay="autoplay">
<source src="flow.m4v" type="video/mp4"/>
browser not supports the video
</video>
  

Ответ №3:

Вы пробовали что-то подобное??

 function clickedOnce(){
  $('audio').each(function(){
      this.play();
  });
}
  

Комментарии:

1. ага 🙂 Работает только один из них. Остальные игнорируются. Теперь мой код выглядит примерно так: var files = $('audio');...clickFn(){ files.pop().play(); } чтобы получить контроль над каждым файлом…

2. Да, я только что смог проверить на Ipad, и он воспроизводит только один: (

3. можете ли вы опубликовать больше своего кода, возможно, это понадобится и в будущем. Спасибо