Как оживить старый планшет или сделать из Android TV конфетку с помощью NOVA
Помните времена, когда Archos выпускали свои медиаплееры? Это были монструозные железки, которые «переваривали» любой формат видео, когда смартфоны еще только учились открывать mp4. Со временем компания ушла в тень, но их софт не пропал даром. На базе их наработок вырос NOVA Video Player — проект с открытым исходным кодом, который превращает любое Android-устройство в полноценный домашний кинотеатр.
Я наткнулся на этот репозиторий, когда искал замену тяжеловесному Kodi и платному Plex. Оказалось, что NOVA — это тот редкий случай, когда опенсорс выглядит и работает лучше коммерческих аналогов.
Что это за зверь
NOVA (opeN sOurce Video plAyer) — это форк оригинального Archos Video Player Community Edition. Разработчики взяли за основу проверенный временем движок и адаптировали его под современные реалии: поддержку новых кодеков, работу на Android TV и интеграцию с онлайн-сервисами.
Проект живет на GitHub и разбит на несколько модулей. Основной репозиторий aos-AVP служит точкой входа. Если решите собрать его сами, приготовьтесь выкачивать целую пачку связанных либ: от интерфейсной части до низкоуровневого движка на C, использующего ffmpeg.
Почему он лучше стандартных плееров
Большинство плееров в Google Play — это просто «окно с видео». NOVA работает иначе. Это полноценный каталогизатор.
Автоматический сбор метаданных
Как только вы скармливаете плееру папку с фильмами (локально или по сети), он лезет в TMDb и подтягивает постеры, описания, рейтинги и актерский состав. В итоге вместо списка файлов film_final_v2_1080p.mkv вы видите красивую библиотеку. Кстати, для этого нужно прописать свои API-ключи в ресурсах при сборке или просто использовать готовый билд, где базовые функции уже настроены.
Всеядность по сети
Плеер отлично дружит с сетевыми протоколами. SMB (v1, v2, v3), FTP, SFTP, NFS, UPnP/DLNA — он видит всё. Я проверял его в связке со стареньким NAS, и индексация прошла на удивление шустро.
Синхронизация с Trakt
Если вы маньяк статистики и отмечаете каждый просмотренный эпизод сериала, NOVA умеет «скробблить» данные в Trakt.tv. Посмотрели серию на планшете в дороге — дома на Android TV она уже отмечена как прочитанная.
Техническая изнанка
Архитектура проекта довольно ветвистая. Разработчики используют инструмент repo от Google (тот самый, что нужен для сборки Android), чтобы управлять зависимостями.
Вот основные части пазла:
- Video: здесь живет весь UI.
- MediaLib: мозг, отвечающий за базу данных и сканирование файлов.
- FileCoreLibrary: прослойка для работы с файловыми системами и сетевыми протоколами.
- avos: сердце плеера, написанное на C. Внутри крутится ffmpeg и dav1d для декодирования видео.
Интересно, что авторы закоммитили пребилд-бинарники некоторых библиотек (torrentd, ffmpeg), чтобы ускорить сборку для новичков. Если вы захотите пересобрать всё с нуля под свою архитектуру, в репозитории есть Docker-образ — это избавляет от мучений с настройкой окружения и версиями NDK.
Как собрать проект под себя
Если вам не хватает какой-то специфической фичи или вы хотите вырезать лишнее, сборка выглядит примерно так:
mkdir aos; cd aos
repo init -u https://github.com/nova-video-player/aos-AVP -b nova
repo sync -j4
repo forall -c 'git checkout -t $REPO_REMOTE/$REPO_RREV'
make
Для тех, кто не хочет возиться с make и системными зависимостями, есть вариант через Gradle прямо из папки Video. Но имейте в виду, что проект требует установленных JDK 8 и JDK 17 одновременно для разных этапов сборки.
Кому это пригодится
В первую очередь — владельцам Android TV и ТВ-приставок. Интерфейс NOVA идеально заточен под пульт. Он легкий, не перегружен рекламой и не пытается продать вам подписку на очередной стриминг.
Также это отличный вариант для «оживления» старых планшетов. Плеер эффективно использует аппаратное ускорение, поэтому даже на слабом железе 1080p крутится без лагов.
Если вы разработчик и хотите покопаться в том, как устроена работа с медиа в Android на низком уровне, aos-AVP — это золотая жила. Здесь можно подсмотреть реализацию работы с SMB или то, как JNI связывает Java-код с нативным ffmpeg.
NOVA Video Player — это честный проект от сообщества для сообщества. У него есть свои шероховатости, вроде огромного количества открытых issue (более 800 на момент написания), но он стабилен в работе и выполняет свою главную задачу: просто воспроизводит видео из любого источника.
Если вам надоело, что стандартные плееры не видят субтитры или тормозят на сетевых шарах, дайте NOVA шанс. А если вы Android-разработчик — загляните в исходники MediaLib, там много полезных приемов по работе с SQLite и фоновым сканированием файлов.
