HTML5 встроенное видео на iPhone против iPad / браузера
Я создал видеоплеер HTML5 (очень простой), который отлично работает на iPad и браузере.
однако, когда я открываю его на iPhone, я получаю только кнопку воспроизведения, которая при нажатии открывает родной видеоплеер в новом окне, поверх всех моих вещей.
Это означает, что я теряю доступ к своим пользовательским элементам управления и отслеживанию времени (написанным на Javascript), так как видео теперь работает изолированно.
есть ли способ переопределить контроль Apple над HTML5 Видео на iphone и заставить его работать, как на ipad?
Ура
8 ответов
право
Я никуда не собирался с этим и подал ошибку с Apple.
Итак, в конце концов, вот как это выглядит:
HTML-код
<video id="player" width="480" height="320" webkit-playsinline>
Obj-C
webview.allowsInlineMediaPlayback = YES;
и все работает просто отлично :)
надеюсь, это поможет кому-то, так как это практически недокументировано, и единственное место, где я мог найти ссылку на "webkit-playsinline", было в ссылке iAds, где говорится: "iAds JS only".
пока iOS Safari не реализует встроенную поддержку видео, вам нужно написать декодер видео на веб-поддерживаемом языке. Существуют существующие реализации декодеров видео, такие как Бродвей для H. 264 (видео), jsmpeg для mpeg1 и ogv.js (видео и звука).
имейте в виду, что процесс декодирования видео вычислительно тяжелых. Ожидайте относительно медленный FPS (±20).
Для справки, у этих ребят подготовило демо видео, которое вы можете воспроизводить на своем устройстве iOS.
В iOS 10+
Apple включила атрибут playsinline
во всех браузерах на iOS 10, так что это работает:
<video src="file.mp4" playsinline>
в iOS 8 и iOS 9
вы можете обойти эту проблему, имитируя воспроизведение с помощью скимминг видео Вместо на самом деле .play()
ing это.
можно использовать iphone-встроенное видео чтобы заботиться о воспроизведении и синхронизации звука (если таковые имеются), и он сохраняет <video>
работает должен.
У вас есть приложение создано или это для мобильного сафари? Если у вас есть приложение и вы используете UIWebView, вы должны установить свойство allowsInlineMediaPlayback UIWebView..
есть некоторые обходные пути, я работаю над библиотекой, чтобы разрешить эту функцию Автоматически. Однако, пока Apple не установит safari в
webview.allowsInlineMediaPlayback = YES;
тогда нам придется использовать хаки для того же поведения.
вы можете проверить проект здесь:https://github.com/newshorts/InlineVideo чтобы увидеть, отвечает ли он вашим потребностям.
в iOS 10 добавление атрибута "playsinline" к тегу HTML5 video не препятствовало полноэкранному воспроизведению на iPhone UIWebview, пока я также не добавил атрибут "controls". Вот как я заставил его работать:
<video width="100%" height="240" controls playsinline>
<source src="movie.mp4" type="video/mp4" >
</video>
С, конечно, _webView.allowsInlineMediaPlayback=YES;
в ViewController также.
просто добавьте следующее в свою конфигурацию.XML:
<preference name="AllowInlineMediaPlayback" value="true" />
В противном случае UIWebView будет игнорировать атрибут webkit-playsinline.
вы можете легко разрешить это, добавив это в свою конфигурацию.XML: Затем UIWebView должен уважать атрибут webkit-playsinline.