Добавить в корзинуПозвонить
Найти в Дзене
Кодовые решения

Я устал от видеоплееров на Android — и сделал свой на Kotlin и ExoPlayer

Если коротко: я не планировал писать видеоплеер. Но чем больше я пользовался существующими решениями, тем чаще сталкивался с одним и тем же: — IPTV отдельно
— локальные файлы отдельно
— на телефоне одно приложение, на ТВ другое
— интерфейсы не совпадают
— UX на телевизорах часто откровенно слабый В какой-то момент стало очевидно: проблема не в том, что «нет плееров», а в том, что нет единого нормального решения под реальные сценарии. Так появился Vidra. Vidra — это универсальный медиацентр для: — смартфонов
— планшетов
— Smart TV Он объединяет:
— IPTV (M3U / M3U8)
— локальные видео
— музыку
— фото Без встроенного контента — только пользовательские данные. Раз уж блог про разработку — коротко по стеку: — Kotlin — основной язык
— Jetpack Compose — весь UI
— ExoPlayer — воспроизведение медиа Kotlin — очевидный выбор для современного Android-разработки. Jetpack Compose позволил решить одну из ключевых задач — адаптивный интерфейс под разные устройства без дублирования UI. ExoPlayer — пот
Оглавление

Если коротко: я не планировал писать видеоплеер.

Но чем больше я пользовался существующими решениями, тем чаще сталкивался с одним и тем же:

— IPTV отдельно
— локальные файлы отдельно
— на телефоне одно приложение, на ТВ другое
— интерфейсы не совпадают
— UX на телевизорах часто откровенно слабый

В какой-то момент стало очевидно: проблема не в том, что «нет плееров», а в том, что нет единого нормального решения под реальные сценарии.

Так появился Vidra.

-2

Что это за приложение

Vidra — это универсальный медиацентр для:

— смартфонов
— планшетов
— Smart TV

Он объединяет:
— IPTV (M3U / M3U8)
— локальные видео
— музыку
— фото

Без встроенного контента — только пользовательские данные.

-3

Технологии, которые я использовал

Раз уж блог про разработку — коротко по стеку:

Kotlin — основной язык
Jetpack Compose — весь UI
ExoPlayer — воспроизведение медиа

Почему именно так

Kotlin — очевидный выбор для современного Android-разработки.

Jetpack Compose позволил решить одну из ключевых задач — адаптивный интерфейс под разные устройства без дублирования UI.

ExoPlayer — потому что писать свой плеер в 2026 году — плохая идея.
Он уже решает:
— буферизацию
— потоковое воспроизведение
— работу с форматами

И делает это стабильно.

-4

Одна из ключевых фич — встроенный HTTP-сервер

Я хотел избавиться от постоянной возни с файлами.

В итоге добавил встроенный сервер прямо в приложение.

Как это работает:

  1. Включаешь сервер в настройках
  2. Получаешь адрес вида: 192.168.1.10:8080
  3. Открываешь его в браузере

Дальше можно:
— загружать файлы
— управлять медиатекой
— редактировать IPTV-плейлисты

Без облаков и сторонних сервисов.

Важный момент

Сервер работает только внутри одной сети:

— оба устройства должны быть в одном Wi-Fi
— VPN может мешать подключению

-5

Адаптивный UI: телефон vs телевизор

Одна из самых интересных задач была в интерфейсе.

Я не хотел делать «один UI на всё», поэтому:

Смартфоны и планшеты:
— touch-интерфейс
— нижняя навигация

Smart TV:
— отдельный режим (Leanback)
— управление с пульта
— крупные элементы

Jetpack Compose здесь сильно упростил жизнь — можно гибко переключать layout под устройство.

-6

Производительность и воспроизведение

За воспроизведение отвечает ExoPlayer, что даёт:

— стабильную работу со стримингом
— нормальную перемотку
— поддержку тяжёлых файлов

Я сознательно не пытался оптимизировать «всё сам», а опирался на готовый движок.

-7

Для кого это

Если коротко:

— используете IPTV
— храните локальные медиа
— хотите одно приложение под все устройства

→ это тот сценарий, под который всё делалось.

Что ещё в планах

Сейчас в работе:

— расширение управления (включая голосовые команды)
— доработка UI
— улучшение стабильности

-8

Где посмотреть

https://www.rustore.ru/catalog/app/com.websage.vidra

Если вы разработчик — особенно интересно услышать мнение:

— по архитектуре
— по UX
— по выбранному стеку

А если просто пользователь — тоже пишите, что не так.

Это как раз тот этап, когда фидбек влияет на дальнейшее развитие.