Разработка видеоплеера для Android
This post is also available in: Английский
Одна из задач, с которой вы можете столкнуться http://kakielekarstva.ru/ при разработке приложения для Android — это встраивание видео плеера в приложение, для воспроизведения видео контента. Стандартный SDK предоставляет два пути решения этой проблемы: использовать низкоуровневый класс MediaPlayer или готовый визуальный компонент VideoView совместно со стандартной панелью управления воспроизведением MediaController. Оба эти подхода обладают своими недостатками, поэтому мы решили разработать собственный видеокомпонент AVideo. В этой статье мы расскажем о том как его использовать в своем приложении и какие преимущества он дает.
Сначала немного о недостатках стандартных классов. Класс MediaPlayer в силу своей низкоуровневости обладает максимальными возможностями, но весьма сложен в использовании, поэтому его не рекомендуется использовать напрямую. Специально для того, чтобы спрятать от разработчика всю сложность MediaPlayer, в SDK входит класс VideoView. Простейшая программа, использующая VideoView и MediaController выглядит примерно так:
Но класс VideoView подходит только для простейших применений. Если вы захотите добавить в него какую-либо новую функциональность или даже просто сменить оформление элементов панели управления, то сделать это будет не просто, поскольку в SDK не предусмотрено такой возможности. Разработчику остается только реализовать собственный компонент на основе MediaPlayer с нуля или вырезать из находящихся в открытом доступе исходных кодов Android нужные компоненты и внести в них необходимые изменения. Именно так мы и решили поступить при разработке собственного плеера AVideo. В результате получился набор видео классов, совместимых по интерфейсу со стандартными, но реализующий дополнительно следующую функциональность:
- Измененное оформление элементов панели управления воспроизведением видео.
- Управление уровнем звука и кнопка выключения звука.
- Управление уровнем яркости подсветки экрана.
- Корректная работа компонента и контролов при встраивании в сложный layout, когда видео занимает только часть экрана.
- Переключение между обычным режимом отображения в layout-е и полноэкранным режимом по двойному нажатию на плеер с изменением размера элементов панели управления.
- Остановка воспроизведения и восстановление воспроизведения с запомненной позиции при отключении экрана устройства и при выходе из приложения.
Использовать наши видео компоненты в собственном приложении очень просто. Загрузите архив, содержащий код компонентов и пример использования, с сайта github.com. Импортируйте проекты из архива в рабочую область Eclipse и подключите их к своему приложению как библиотеки (Свойства проекта, Android, Library, Add…). Код простейшего видеоплеера с использованием этих компонентов получится абсолютно такой же, как если бы вы использовали стандартные компоненты, единственное, что изменится — это строки импорта соответствующих классов и к названию компонента VideoView в файле layout-а добавится наш package
. Пример простейшего layout-а будет выглядеть так:
Кроме того, для корректного восстановления позиции воспроизведения при выходе из приложения или при повороте экрана, рекомендуется также добавить свойство
к вашей activity и следующий Java-код:
Результат работы тестового приложения в обычном и в полноэкранном режиме вы можете видеть на скриншотах:
Мы надеемся, что наш видеокомпонент пригодится вам в работе, и ждем багрепорты, предложения и пожелания по реализации новой функциональности, а также патчи.
Источник
Путеводитель по видеоплеерам для Android, часть 1
Вслед за обзором аудиоплееров речь пойдет о проигрывателях видео. Смартфоны и планшеты становятся все более привлекательными для просмотра HD-видео, поэтому особое внимание будет уделено настройкам аппаратного и программного декодирования.
Аспекты обзора:
- Поддержка форматов видео (при наличии данных, в ином случае все зависит от установленных кодеков и прошивки Android), а также форматов аудио
- Управление библиотекой: импорт файлов, поиск, доступные разделы
- Настройка видео: аппаратное и программное декодирование
- Поддержка встроенных и внешних субтитров, настройка их отображения
- Интерфейс и навигация: удобство, настройка внешнего вида, поддержка жестов
- Другие функции: интернет-трансляция, синхронизация и другие
Участники обзора:
- MX Player
- BSPlayer
- Video Player Lite
- VLC for Android
- HD Video Player
- Wondershare Player
MX Player
MX Player отлично зарекомендовал на Google Play, лидируя с максимальным рейтингом при количестве установок более 500 млн раз.
Ключевые возможности MX Player: поддержка аппаратного ускорения, встроенный декодер, многоядерная обработка; а также удобное масштабирование, поддержка жестов и даже «защита от неосторожных действий со стороны детей». Вообще говоря, функций и настроек очень много, существует подробная документация для плеера — правда, только на английском языке.
Форматы, поддерживаемые MX Player: 3gp, avi, divx, f4v, flv, mkv, mp4, mpeg, mov, vob, wmv, webm, xvid и другиe. Поддерживается большое количество форматов субтитров, включая ssa, sub, srt, ass — как внешних, так и встроенных.
На ходу можно переключать аудиодорожку или менять режим декодирования, настройки кодека. Другие опции сосредоточены в меню «Инструменты → Настройки». Они разделены на секции «Воспроизведение», «Экран», «Субтитры» и, собственно, «Инструменты». В параметрах декодера можно переключиться между программным и аппаратным методами, в зависимости от того, какой метод эффективнее на определенной прошивке Android или устройстве.
В MX Player удобен файловый менеджмент. В частности, доступен фильтр: отображение папок, в которых находятся файлы читаемых форматов. Возможен просмотр последних файлов, в списке они отображаются альтернативным цветом.
Интерфейс MX Player задуман так, что его практически и не видно. При запуске видео кнопки не отображаются, и нужно коснуться экрана, чтобы увидеть элементы управления. Впрочем, есть даже темы оформления.
Плеер поддерживает жесты: вертикальный слайд справа — для регулировки звука, слева — для настройки яркости, проигрывание в фоне — при длительном нажатии на Play. Наиболее примечательно то, как в MX Player происходит навигация по видеофайлу: она практически мгновенна — в то время как в других проигрывателях для перехода нужно отпустить ползунок.
Доступны 2 версии MX Player: в бесплатной присутствует реклама. По функциональности отличий от платной редакции нет.
[+] тонкая настройка аппаратного декодирования
[+] стабильная работа
[+] множество настроек видео
[+] поддержка жестов
[+] мгновенный переход по временной шкале
BSPlayer
BSPlayer — видеоплеер, созданный разработчиками известного настольного приложения. Аналогично MX Player, позволяет задействовать оптимизацию через аппаратное ускорение. В данном случае речь также идет о 2- и 4-ядерном декодировании. Уточнение: на некоторых моделях HTC и Samsung Galaxy S2 наблюдаются проблемы с воспроизведением.
Медиатека BS Player — это навигатор со списком недавно просмотренных и популярных файлов, доступом к памяти телефона. Для отображения файлов можно настроить вывод только известных типов. Форматы мультимедиа, воспроизводимые BS Player: avi, divx, flv, mkv, mov, mpg, mts, mp4, m4v, rmvb, wmv, 3gp, mp3 и ac3. Читает нескольких аудиодорожек и наиболее известные форматы субтитров — ssa/ass, srt, sub. Для субтитров задаются настройки: язык, цвет, кодировка.
В дополнение к этому, в медиатеке есть вкладка LAN, откуда доступно потоковое воспроизведение (RTMP, RTSP, MMS, HTTP). Из этого раздела осуществляется воспроизведение файлов через Wi-Fi или источники с предоставленным доступом (внешний USB-накопитель, SMB/CIFS, ПК, NAS-серверы).
Возвращаясь к функциям проигрывания — здесь примечательны следующие особенности. Первое — в настройках имеются опции, относящиеся как к аппаратному, так и программному декодированию. Второе — можно указать кодек для воспроизведения.
Интерфейс поддерживает темы оформления. Жесты при навигации стандартны: свайп — настройка яркости и громкости, длинное нажатие — воспроизведение по времени, короткое — пауза, фоновое воспроизведение при длительном нажатии кнопки «Назад» и т. д.
Помимо бесплатной версии, доступна платная ($6,80) — с расширенной функциональностью, поддержкой Chromecast и без рекламы.
[+] Аппаратное и программное декодирование
[+] Интуитивный файловый менеджер
[+] Сетевое воспроизведение
[+] Поддержка популярных форматов видео и субтитров
Video Player Lite
Video Player Lite воспроизводит популярные форматы видео, включая rmvb, avi, flv, mp4, mkv, 3g2, 3gp, 3gp2, 3gpp, iso, mov, mpeg (версий 1—4), mpv2, mts, mtv, ogx, rm, ts, tts, vob, wm, wmv и другие, изначально поддерживаемые ОС Android. Используется аппаратное декодирование и оптимизация — разработчик обещает, что при невысоком расходе памяти воспроизведение будет плавным — за счет «адаптации плеера под каждый формат».
При первом запуске плеер сканирует память телефона и выдает список файлов, доступных для чтения (вкладка «Видео»). Также можно перейти в каталог и самостоятельно добавить файлы в медиатеку. Кроме того, ролики можно искать через историю или поиск.
Рядом с названием файла отображается его продолжительность и разрешение. Среди имеющихся команд в контекстном меню есть два любопытных пункта — «Воспроизвести как аудио» и «Воспроизвести с начала» (по умолчанию Video Player Lite запоминает позицию при закрытии окна с воспроизводимым видео).
Интерфейс плеера прост, в особенности минималистичный экран воспроизведения (без привычной панели с кнопками), никаких настроек внешнего вида не предусмотрено. Оболочка адаптируется под размеры экрана, и при ландшафтном отображении файлы выстраиваются в несколько колонок — что особенно удобно при использовании планшета.
Аппаратное декодирование включается через настройки приложения, при этом никаких опций — в отличие от того же MX Player — пользователю не предоставляется. Есть некоторые параметры, относящиеся к производительности (формат цветности, пропуск кадров). Так или иначе, стандартные ролики, снятые в 1080p, могут воспроизводиться с задержкой, и решить проблему непосредственно через Video Player Lite не удастся. Касательно онлайн-видео — подобная функция так и не была найдена в плеере, хотя в описании на Google Play упоминание о ней есть.
Что касается поддержки субтитров, точной информации о совместимых форматах нет. А проблемы с их отображением имеются: например, встроенные субтитры vob-файла не отобразились.
Зато музыку Video Player Lite воспроизводит без проблем при добавлении файлов через встроенный навигатор или поиск.
[−] нельзя создавать плейлисты
[−] требовательность к аппаратной части
[−] отсутствие ключевых настроек
[+] простой интерфейс медиатеки
[+] аппаратное декодирование
VLC for Android (beta)
VLC для Android поддерживает те же форматы, что и широко известный медиаплеер для настольной платформы (см. таблицу). На момент обзора плеер находился в статусе beta, поэтому возможны проявления нестабильности (хотя по ходу тестирования проблем у нас не возникло). Некоторые функции только планируются к реализации. Например, до недавних пор стриминг не поддерживался по причине «юзабилити и производительности», однако сейчас VLC работает с протоколом HLS (HTTP Live Streaming), позволяет просматривать интернет-трансляции.
На первом этапе VLC выполняет стандартную процедуру — сканирует устройство в поисках файлов мультимедиа и добавляет их в список навигатора. Интерфейс последнего типичен по своему устройству: разделы «Видео», «Аудио», «Каталоги», а также «История». Есть поиск — вполне отзывчивый, ведется с учетом истории.
Экран воспроизведения максимально прост: кнопки управления воспроизведением доступны в центре, также можно узнать время и заряд батареи. Что касается управления, то жесты поддерживаются, можно ознакомиться с «раскладкой» при первом запуске видео. Раскладка эта, опять же, привычна для большинства мобильных плееров. Таким образом удобно управлять воспроизведением, громкостью, яркостью, масштабировать видео. Через контекстное меню переключается звуковая дорожка и активируются субтитры — встроенные или внешние.
VLC предусматривает аппаратное и программное декодирование (на устройствах с Android 4.3 и выше рекомендуется использовать последний вариант), многоядерное декодирование (актуально для процессоров Cortex-A7, A9 и A15). Налажена работа со внутренними и внешними устройствами — к примеру, можно выбрать альтернативный режим вывода для аудио или видео, подключить другой экран.
Как аудиоплеер, VLC хотя и «скромен», но вполне работоспособен: возможен просмотр музыкальной библиотеки по альбомам, исполнителям, композициям, жанрам. Для настройки звука предназначен 10-полосный эквалайзер с предустановками.
[+] Поддержка аудио и видео
[+] Онлайн-трансляция
[+] Потоковое воспроизведение
[+] Оптимизация декодирования
HD Video Player
Из главных особенностей HD Video Player, перечисленных на Google Play — воспроизведение HD-видео и автоопределение видеофайлов на телефоне. Форматы, поддерживаемые плером: avi, m4v, mp4, wmv, flv, mpeg, mpg, mov, rm, vob, asf, mkv, f4v, ts, tp, m3u, m3u8.
Библиотека состоит из 3 секций-вкладок: локальное видео (Local Video), список ранее открытых файлов (Recent Video) и папка с видео (Video Folder). В последней секции отображаются каталоги, в которых содержится видео, совместимое с проигрывателем.
Файловый навигатор поддерживает базовые операции — удалить, переименовать, опубликовать. Помимо размера и названия файла, дополнительной информации не предоставляется — поэтому, скажем, нельзя узнать разрешение видео.
Что касается функций проигрывания, то возможности плеера стандартны: навигация, изменение яркости, громкости, масштабирование с помощью жестов. После закрытия видео HD Video Player запоминает позицию и при повторном открытии начинает воспроизведение с того же места.
Пожалуй, главная проблема этого плеера — отсутствие настроек. В этой связи с заявленной поддержкой HD возникают проблемы: видео подтормаживает на вполне типичной конфигурации, а изменить аппаратные или программные настройки не представляется возможным.
[+] Работает «как есть»
[−] Отсутствие настроек
[−] Нестабильная работа
Wondershare Player
Wondershare Player — проигрыватель с фокусом на сетевых возможностях: имеется поддержка сетевых протоколов HTTP, MMS, RTMP, RTSP/RTP и M3U8. Благодаря поддержке UPnP/DLNA, можно просматривать видео на различных устройствах, реализована передача файлов по Wi-Fi. M3U8-стриминг будет интересен владельцам iOS-устройств.
Контент можно искать на YouTube, Vevo и других площадках — в том случае, если доступ к ним не заблокирован по региону. Также Wondershare Player позволяет просматривать видео с новостных и развлекательных ресурсов вроде CNN, NY Times, Ted Talk, NASA TV, Funny и Die. Скорее всего, данные функции будут интересны только изучающим английский язык, а в целом для русскоязычного сегмента пользы от них мало.
Некоторые функции (например, синхронизация) привязаны к настольным продуктам компании Wondershare — Wondershare Player, AllMyTube, Video Converter Ultima.
Воспроизведение локальных файлов также не оставлено без внимания. Плеер сканирует память устройства, добавляет файлы в список Local. Можно обратиться к ранее открытым файлам, аналогично онлайн-закладкам, искать видео.
Среди поддерживаемых форматов — flv, avi, mkv, wmv, mov, rm, rmvb, asf, m2ts, mp3, wma, aac, flac, m2ts, vob, f4v, 3gp. Что касается субтитров, то в наличии поддержка ssa/ass, smi/sami, srt, sub/txt и др.
Отчасти порадовали настройки: для каждого из форматов можно указать вид декодирования — аппаратное или программное. Тем не менее, плеер не всегда работает стабильно: может «выпадать» даже при открытии директории с неподдерживаемыми форматами — видимо, это как-то связано с обработкой эскизов.
[+] Широкая поддержка сетевых протоколов
[+] Выбор метода декодирования
[−] Привязка к англоязычным сервисам
[−] Нестабильная работа
Заключение
MX Player раскрывает свой потенциал при воспроизведении файлов высокого разрешения. Кроме того, что скорость воспроизведения на высоте, пользователю предоставлена свобода настройки параметров производительности. При изобилии доступных функций пользоваться плеером удобно, поскольку интерфейс не отвлекает, позволяя сосредоточить внимание на изображении.
BSPlayer примечателен тем, что поддерживает аппаратное ускорение и работает с сетевыми протоколами, тем самым позволяя смотреть потоковое видео без загрузки видеофайлов на устройство.
Video Player Lite — достаточно простой видеоплеер с поддержкой стандартных форматов медиа, но без поддержки сетевых протоколов. Отсутствуют важные настройки (субтитры, оптимизация). Будет подходящим решением, если нужен видеоплеер с простым интерфейсом и медиатекой.
VLC для Android — медиаплеер с широкой поддержкой форматов видео, аудио и возможностью просмотра онлайн-трансляций. Не содержит ничего лишнего, но в то же время в программе присутствуют важные настройки (например, декодирования). Учитывая текущий статус плеера, «beta», можно ожидать, что VLC составит конкуренцию известным решениям за счет наращивания функциональности и более гибкой конфигурации.
Рекомендовать HD Video Player можно только для просмотра несложных видеороликов (без надобности в субтитрах или переключении звуковой дорожки). Название свое проигрыватель фактически не оправдывает.
Wondershare Player интересен сетевыми возможностями: это интернет-трансляция и синхронизация с другими устройствами. Плеер, однако, не полностью раскроет свой потенциал — ввиду региональных особенностей. Локальное воспроизведение, в целом, не вызывает нареканий (за исключением редких «падений» программы).
Источник