Встроенное видео HTML5 на iPhone против iPad/браузера

Я создал видеопроигрыватель HTML5 (очень простой), который отлично работает на iPad и в браузере.

Однако, когда я открываю его на iPhone, я получаю только кнопку воспроизведения, которая при нажатии открывает собственный видеоплеер в новом окне, поверх всех моих вещей.

Это означает, что я теряю доступ к своим пользовательским элементам управления и отслеживанию времени (написанный на Javascript), так как видео теперь изолировано.

Есть ли способ переопределить управление Apple HTML5-видео на iphone и заставить его работать как на ipad?

Приветствия

Ответ 1

Вправо,

Я никуда не собирался с этим и подавал ошибку с Apple.

Через пару недель они вернулись ко мне, очень просто сказать, что я должен добавить "webkit-playinginline" к тегу видео в HTML, а также добавить свойство "allowInlineMediaPlayback" в UIWebView.

Итак, в конце концов, это выглядит так:

HTML

<video id="player" width="480" height="320" webkit-playsinline>

Obj-C

webview.allowsInlineMediaPlayback = YES;

И все работает отлично:)

Надеюсь, это поможет кому-то, поскольку это практически не документировано, и единственное место, где я мог бы найти ссылку на "webkit-playinginline", было в ссылке iAds, где говорится: "Только iAds JS".

Ответ 2

Пока iOS Safari не поддерживает встроенную поддержку видео, вам необходимо написать видеодекодер на веб-поддерживаемом языке. Существуют существующие реализации видеодекодеров, такие как Broadway для H.264 (видео), jsmpeg для mpeg1 и ogv.js (поддержка видео и звука).

Имейте в виду, что процесс декодирования видео очень тяжелый. Ожидайте относительно медленного FPS (± 20).

Для вашей справки эти ребята подготовили демонстрацию видео, которое вы можете играть на своем устройстве iOS.

Ответ 3

В iOS 10 +

Apple включила атрибут playsinline во всех браузерах на iOS 10, поэтому это работает без проблем:

<video src="file.mp4" playsinline>

В iOS 8 и iOS 9

Вы можете обойти эту проблему, моделируя воспроизведение, уменьшая видео, а не на самом деле .play().

Вы можете использовать iphone-inline-video, чтобы следить за воспроизведением и синхронизацией звука (если есть), и поддерживает <video> как он должен.

Ответ 4

У вас есть приложение, созданное или это для мобильного сафари? Если у вас есть приложение и вы используете UIWebView, вы должны установить UIWebView allowInlineMediaPlayback.

Ответ 5

Есть несколько работ, я работаю над библиотекой, чтобы позволить эту функцию автоматически. Однако, пока Apple не установит сафари на

webview.allowsInlineMediaPlayback = YES;

тогда нам придется использовать хаки для одного и того же поведения.

Вы можете проверить проект здесь: https://github.com/newshorts/InlineVideo, чтобы узнать, соответствует ли он вашим потребностям.

Ответ 6

Просто добавьте следующее в свой файл config.xml: В противном случае UIWebView будет игнорировать атрибут webkit-playinginline.

Ответ 7

В iOS 10 добавление атрибута "playinginline" к тегу HTML5 не помешало полноэкранному воспроизведению на iPhone UIWebview, пока я не добавил атрибут "controls". Вот как я работал:

<video width="100%" height="240" controls playsinline>
      <source src="movie.mp4" type="video/mp4" >
</video>

С помощью, конечно, _webView.allowsInlineMediaPlayback=YES; в ViewController.

Ответ 8

Вы можете легко разрешить это, добавив это в свой файл config.xml: UIWebView должен уважать атрибут webkit-playinginline.