Несколько медиа-элементов HTML5 на одной странице в iOS (iPad) - PullRequest
26 голосов
/ 22 февраля 2012

Мои исследования привели меня к выводу, что обработчик медиаэлементов Apple является одноэлементным, то есть я не могу воспроизводить video, пока audio играет в фоновом режиме.Мне поручено создать структуру презентации в виде слайд-шоу, и клиенту нужна фоновая звуковая дорожка, синхронизированные закадровые аудиофайлы, которые соответствуют пунктам, и переменные медиаданные, которые могут представлять собой изображение или видео, или синхронизированный цикл из нескольких медиаэлементов.

Конечно, ни один из носителей не работает на iOS.Каждый элемент мультимедиа отменяет предыдущий.

Моя первоначальная мысль состоит в том, чтобы встроить закадровый звук в видео при наличии видео, но существует существующая версия Flash этой настройки, которая зависит от существующих ресурсов, поэтому яв значительной степени приходится использовать то, что доставлено.

Есть ли ЛЮБОЙ обходной путь для этого?Я тестирую на iOS 4.3.5 .Самые умные разработчики в мире находятся на этом сайте - мы должны быть в состоянии что-то придумать.

РЕДАКТИРОВАТЬ: Обновил мой iPad до iOS 5.0.1 , и проблема остается.

Ответы [ 5 ]

4 голосов
/ 29 февраля 2012


Как насчет сделать это с помощью CSS, чтобы добиться цели.
Может быть, вы знаете о компании vdopia, которая распространяет видеообъявления на мобильных устройствах. http://mobile.vdopia.com/index.php?page=mobilewebsolutions
Они утверждают, что разработали так называемый видеоформат vdo, который на самом деле просто для запуска спрайта CSS: D
Я имею в виду, что вы можете разместить свое «видео» в виде изображения в рамке, а затем прикрепить к нему аудио-тег html5.

Хотелось бы узнать ваш ответ

1 голос
/ 27 февраля 2012

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

Если вы работаете над веб-приложением, вы находитесь в мире боли. Это потому, что вы просто не имеете большого контроля над вещами, которые Mobile Safari не предоставляет сразу. Если это так, я бы выступил и был честен с заинтересованными сторонами.

Если вы работаете с родным приложением, вы можете прибегнуть к механизму, который предполагает некоторую обратную связь между UIWebView и ObjC. Это действительно выполнимо.

Идея заключается в следующем:

Вставьте специальные <object> элементы в ваши документы HTML5, которые вы изготовите сами в соответствии с вашими потребностями, с особой тщательностью соблюдайте соглашение об присвоении имен для нестандартных атрибутов. Здесь вы можете вставить идентификаторы, пути и другие управляющие переменные в мультимедийные артефакты, которые вы хотите воспроизвести.

Тогда вы могли бы фактически создать некоторый javascript (поверх jQuery, p.e.), Который взаимодействует с ObjC через механизм делегирования на UIWebView или через HTTP. Я выберу этот вариант ниже.

Скажите, что на $(document).ready() вы проходите все объекты, которые имеют специальный класс. Класс, который вы тщательно выбираете, чтобы определить все специальные <object>. Вы создаете список таких объектов и передаете их в ObjC-часть вашего приложения. Вы можете легко сериализовать такой список, используя JSON. Тогда в ObjC вы можете делать с ними что хотите. Проигрывайте их через AVPlayer или другие фреймворки всякий раз, когда вы хотите, чтобы они воспроизводились (опять же, вы прибегаете к мосту JS-ObjC, чтобы фактически сигнализировать нативную часть для воспроизведения определенного элемента).

Вы можете «общаться» с ObjC через шаблон делегирования в UIWebView или через HTTP. После этого у вас будет мост JS - ObjC.

Подход HTTP имеет смысл в некоторых случаях, но он включает много дополнительного кода и требует много ресурсов.

Если вы создаете приложение ObjC и хотите получить дополнительную информацию о том, как на самом деле построить мост ObjC - JS, который соответствует этим потребностям, обратитесь к нам:)

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

Приветствие.

0 голосов
/ 02 марта 2012

Не могли бы вы использовать веб-сервис для объединения потоков в режиме реального времени с FFMpeg, а затем транслировать один вывод в quicktime?

Чтобы уточнить, может быть, библиотека вроде http://directshownet.sourceforge.net/about.html тоже подойдет. Похоже, у них есть метод

DESCombine - библиотека классов, которая использует службы редактирования DirectShow для объединения видео и аудио файлов (или фрагментов файлов) в один выходной файл. Для использования класса предоставляется файл справки (DESCombine.chm).

Затем это можно использовать для возврата полученных данных в качестве ответа на вызов и загрузки через проигрыватель HTML5.

0 голосов
/ 29 февраля 2012

Вы упоминаете, что существует существующая настройка Flash для видео - это файл SWF, можете ли вы импортировать его в программное обеспечение для редактирования видео / аудио и добавить аудиодорожку сверху?

Что-то вроде этого: http://www.youtube.com/watch?v=J2vvH7oi8m8&feature=youtube_gdata_player

Кроме того, если это файл Flash, вы будете конвертировать его в AVI или как для iOS?Если вам все равно придется сделать это, у вас есть шанс добавить звуковую дорожку.

0 голосов
/ 29 февраля 2012

В настоящее время невозможно .Как вы заметили, когда видео воспроизводится, оно занимает полный экран с QuickTime и перемещает браузер в фоновом режиме.Единственное решение в настоящее время - объединить аудио и видео в формат mp4 и воспроизвести этот отдельный элемент.

Если я вас правильно понимаю, вы не сможете объединить аудио и видео, потому что это зависитна вспышке?Поскольку iOS не может воспроизводить флэш, вы должны объединить аудио и видео вместе и использовать флэш в качестве резервной копии.Существует множество html5-плееров, которые используют javascript, чтобы сначала воспроизвести html5-видео, а затем переключиться на флэш-память для резервного копирования.

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