Встроенное видео HTML5 на iPhone против iPad / браузера - PullRequest
77 голосов
/ 13 сентября 2010

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

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

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

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

Приветствия

Ответы [ 8 ]

104 голосов
/ 22 сентября 2010

Право,

Я никуда не пошел и подал ошибку в Apple.

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

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

HTML

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

Obj-C

webview.allowsInlineMediaPlayback = YES;

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

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

11 голосов
/ 30 июля 2014

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

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

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

2 голосов
/ 22 июня 2016

В iOS 10 +

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

<video src="file.mp4" playsinline>

В iOS 8 и iOS 9

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

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

1 голос
/ 08 февраля 2017

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

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

С, конечно же, _webView.allowsInlineMediaPlayback=YES; и во ViewController.

1 голос
/ 13 сентября 2010

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

0 голосов
/ 06 июля 2016

Просто добавьте следующее в ваш config.xml: <preference name="AllowInlineMediaPlayback" value="true" /> В противном случае UIWebView будет игнорировать атрибут webkit-playsinline.

0 голосов
/ 06 июля 2016

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

0 голосов
/ 21 июля 2015

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

webview.allowsInlineMediaPlayback = YES;

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...