Воспроизведение видео в формате HTML5 назад на iOS

Я пытаюсь воспроизвести видео в формате HTML5 в обратном порядке на iPad (видео должно переключаться между прямым и обратным произвольно на основе пользовательского ввода).

Элемент HTML5 <video> включает в себя свойство под названием playbackRate, которое позволяет воспроизводить видео с большей или меньшей скоростью или наоборот. Согласно документации Apple, это свойство не поддерживается в iOS.

Воспроизведение в обратном направлении может быть подделано без использования playbackRate, установив свойство currentTime несколько раз в секунду (например, 10-30 обновлений в секунду). Этот подход работает на рабочем столе Safari, но похоже, что поиск ограничено устройствами iOS примерно до 1 обновления в секунду - слишком медленно в моем случае.

Есть ли способ воспроизвести видео на HTML5 назад на устройстве iOS (а именно iPad)?

(Я тестирую iPad 2 с 4.3.1)

Ответ 1

Атрибут playbackRate теперь поддерживается в iOS 6 Safari.

Ответ 2

Как предложил Михай, используйте две версии и обновите местоположение поиска, когда пользователь изменит направление воспроизведения.

Сложите видео в DIV друг на друга, и когда направление воспроизведения перевернуто, переключите видимость div (и приостановите воспроизведение скрытого).

Итак, это временная шкала:

  • Пользователь нажимает кнопку переключения воспроизведения.
  • Приостановить отображение видео.
  • Получить поиск местоположения отображаемого видео.
  • Вычитайте это значение из продолжительности видео.
  • Ищите это значение в не отображаемом видео.
  • Переключить отображаемые видео DIV.
  • Начните воспроизведение вновь отображаемого видео.

Ответ 3

Почему бы не сшить реверс и вперед версии вместе в один фильм?

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

Ответ 4

Мое предложение - сделать "фальшивый" видеоплеер в вашем HTML-коде. Затем захватите попытку пользователя "воспроизвести" видео, используя методы обратного вызова safari/ios. Затем создайте MPMoviePlayerController, который фактически загружает видео и отображает его поверх исходной позиции видео в браузере или поддерживает только полноэкранное воспроизведение. MPMediaPlayback протокол поддерживает обратное воспроизведение через свойство currentPlaybackRate, так что, надеюсь, это должно быть временное исправление, поскольку я не вижу версию iOS для Safari не в конечном итоге реализуя эту функцию, поскольку она поддерживается родным игроком.

Ответ 5

ПРИМЕЧАНИЕ. Я был глупым и пропустил нетривиальную часть вопроса, поэтому следующее для целей iOS довольно бесполезно.

Через минуту Googling я нашел следующий код и объяснил, как поддерживать обратное воспроизведение видео html5 в браузерах на основе Webkit:

function speedup(video, direction) {
   if (direction == undefined) direction = 1; // or -1 for reverse
   if (video.playbackRate != undefined) {
      video.playbackRate = direction == 1 ? 2 : -2;
   } else { // do it manually
      video.setAttribute('data-playbackRate', setInterval ((function playbackRate () {
         video.currentTime += direction;
         return playbackRate; // allows us to run the function once and setInterval
      })(), 500));
   }
}

function playnormal(video) {
   if (video.playbackRate != undefined) {
      video.playbackRate = 1;
   } else { // do it manually clearInterval(video.getAttribute('data-playbackRate’)); }
}

Источник: http://net.tutsplus.com/tutorials/html-css-techniques/html5-audio-and-video-what-you-must-know/

Вам нужно передать видеообъект html5 в функцию ускорения, но опять же эту функцию можно было бы свести к следующему (я еще не тестировал это, это специальная функция iPad):

function reverseVideo(video) {
    video.playbackRate = -1;
}

Не стесняйтесь играть и искать дополнительную информацию о элементе видео html5:)