Разработка Android видео приложений

This post is also available in: Английский

Android Video приложения

С ростом популярности Android устройств для  многих Интернет проектов встает вопрос выпуска специальных приложений для счастливых обладателей Android’ов (смартфоны и планшетники). На рынке смартфонов в США Android уже опережает iOS, но среди планшетников успех не так велик и iPad лидирует с большим отрывом. С другой стороны, практически любой Интернет ресурс обладает некоторой библиотекой видео контента, которую желательно сделать доступной для пользователей с разными устройствами. В этой статье мы рассмотрим особенности разработки приложений, предоставляющих возможности просмотра видео контента, разные подходы в реализации видео плееров, плюсы и минусы технологий.

Для включения видео в Android приложение есть несколько доступных механизмов:

  • Native App — класс VideoView (или более низкоуровневый MediaPlayer), входящий в Android SDK
  • Web App — Flash Player видео плеер, включенный в WebView элемент
  • AIR видео плеер, скомпилированный в приложении — Flash App

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

Native App
Для создания видео плеера нужно при разработке макета выделить область для VideoView элемента, а для начала воспроизведения указать приблизительно следующий код:

1
2
3
4
5
6
7
8
video = (VideoView) findViewById(R.id.videoview);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(video);
video.setMediaController(mediaController);
video.setKeepScreenOn(true);
video.setVideoPath("http://www.denivip.ru/trailer.mp4");
video.start();
video.requestFocus();

При запуске приложения вы получите что-то похожее на следующий скриншот (сделано с Motorola Xoom на базе Android 3.1):
Android video player
В этом случае в качестве панели управления видео плеером используется MediaController класс, который не позволяет реализовать уникальный дизайн своего видео плеера. В случае если вам нужен уникальный видео плеер по вашему дизайну, то лучшим вариантом будет реализовать воспроизведение контента при помощи MediaPlayer класса. В этом случае придется хорошенько повозиться с особенностями использования MediaPlayer и видео экрана SurfaceHolder в Android среде, но в результате вы получите существенно больше контроля над процессом отображения видео.

Преимущества:

  • Простота встраивания в существующее приложение
  • Гибкость управления воспроизведением видео
  • Поддержка всех видео форматов, доступных в платформе
  • Максимально эффективное использование возможностей платформы

Недостатки:

  • Сложность разработки нестандартных интерфейсов
  • Фрагментация технических параметров разных устройств
  • Мало сотрудников с опытом разработки Android видео приложений
  • Проблемы с защитой контента
  • Очень специфично для разных платформ: Android (Java), iOS (Objective C)

Web App
Web приложения — это особый способ разработки и запуска приложений для Android (да и других платформ). Суть метода заключается в создании приложения обертки, отображающего специально подготовленный веб контент. Web App приложение — это специальный браузер на базе WebView элемента, логика работы браузера и внешний вид определяется разработчиком приложения. Официальная документация по Web App здесь. Для создания такого приложения требуется незначительное количество времени на разработку приложения обертки и стандартный процесс HTML верстки страниц / экранов приложения под нужные размеры экрана устройств. Такой подход позволяет по максимуму использовать существующие web наработки.
Важной особенностью при разработке видео приложений для Android является возможность включения HTML5 видео плеера и Flash видео плеера в интерфейс пользователя. Если у вас уже есть видео плеер, используемый в web сайте, то вы легко сможете его адаптировать под размеры экрана Android устройства, скорее всего вам даже не потребуется транскодировать контент к новым форматам. Хотя конечно очень важно не забыть про адаптацию инструментов управления под возможности устройств — пользователи смартфонов и планшетников используют пальцы для управления, а не мышки.
Использование веб приложений является очень эффективным способом поддержки всего разнообразия новых платформ (смартфоны, планшетники и даже ТВ). Из сложностей можно лишь отметить необходимость трудоемкой оптимизации веб приложений для наиболее приятного использования приложения пользователями в случае медленного Интернет соединения (динамическая подгрузка контента).

Преимущества:

  • Скорость и простота разработки
  • Использование существующего опыта веб разработки
  • Гибкость интерфейса приложения — серверная HTML верстка
  • Преемственность дизайна видео плеера
  • Эффективное использование существующей видео библиотеки
  • Дополнительная кросс-платформенность HTML

Недостатки:

  • Особенности работы Flash Player под Android
  • У пользователя может быть не установлен Flash Player
  • Ограничение поддерживаемых видео форматов

Flash App
Альтернативный способ разработки приложений для мобильных платформ — использование Flash платформы для компиляции Android и iOS приложений. В этом случае вы разрабатываете все приложение как Flash компоненту для обычного сайта и лишь в самом конце указываете компиляцию с параметрами нужных устройств. Это особенно эффективно если у ваш основной проект также по большей части состоит из Flash — например, при наличии большого числа анимационных эффектов. В конечном итоге вы можете встроить любой видео плеер с абсолютно любым дизайном. Так никто не мешает использовать популярный StrobeMediaPlayback видео плеер для реализации основного интерфейса видео плеера.
Для работы вам потребуется Flash Builder 4.5

Преимущества:

  • Adobe берет на себя все особенности разработки приложений под разные платформы: Android, iOS
  • Использование существующих наработок Flash приложений
  • Хорошая доступность Flash разработчиков на рынке труда
  • Возможность защиты контента при помощи RTMPE
  • Возможность защиты контента при помощи Flash Access в ближайшем будущем

Недостатки:

  • Поддержка только поддерживаемых во Flash видео форматов
  • Трудоемкость Flash разработки как правило существенно выше HTML верстки

Подготовка видео для Android
В большинстве случаев Android девайс справится с вашим существующим видео контентом и его не потребуется перекодировать для новых девайсов. Но если вам нужно оптимальное качество, доступное на устройстве, и вам не жалко дополнительного дискового пространства под хранение все видео библиотеки в дополнительном формате, то конечно стоит задуматься об этой задаче. Особенности подготовки видео контента для Android устройств хорошо описаны в документации Adobe здесь и здесь. При наличии фермы транскодирования видео контента задача сведется к созданию нескольких дополнительных профилей подготовки видео.

Какие сложности вы встречали при разработке мобильных приложений? Что получалось не так как хотелось и какие ограничения больше всего мешают реализовать вам потенциал? Будем рады вашим комментариям.
Мобильного успеха вашим приложениям!