Здравствуйте, уважаемые читатели.
Вместо предисловия
Есть у меня скромненький hand-made домашний сервер:
- Файлопомойка
- Торрентокачалка
- Архив фотографий и видео
Работает все это под убунтой и имеет примерно такой конфиг: Intel Core Quad, 4Gb памяти и RAID 5 из 4-х 2TB дисков.
Контент с этого сервера забирают домашние компы (samba), медиаплеер (samba), телевизоры (DLNA). И все не давала мне покоя идея смотреть вновь вышедшие серии сериалов, да и некоторые фильмы, на телефоне, лежа в кровати на сон, так сказать, грядущий. Ноутбук – неудобно ввиду его размера и опасности уронить с кровати в момент непредвиденного засыпания. Перерыл много форумов, программ и т.п., но решения так и не нашел.
Решение пришло в голову достаточно очевидное и простое – надо транскодировать видео на сервере и отдавать поток в понятном плееру формате.
Плеер я выбрал – MX Video Pleer
Формат видео – flv
Транскодировать видео будет – mencoder
Устанавливаем apache
С этим проблем нет:
>apt-get install apache2 php5
Установка mencoder
В первую очередь добавляем репозиторий medibuntu:
>sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && sudo apt-get --quiet update && sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && sudo apt-get --quiet update
И устанавливаем пакет mencoder:
>apt-get install mencoder
И немного кода
1-я страница – index.php, файловый браузер.
В начале файла задаем базовый путь для поиска. Выглядит в браузере это так:

2-я страница – конвертер видео.
Берет передаваемый в URL’e путь, запускает mencoder через popen и отдает результат плееру.
Опции для конвертации подбираются экспериментальным путем. Я для своего desire подобрал.
И еще один тонкий момент – при запросе с параметрами ни один плеер на телефоне видео воспроизводить не захотел, поэтому пришлось использовать rewrite engine у апача.
Итоги
При минимальных трудозатратах я получил желаемый результат:
- Просмотр видео дома на телефоне
- Отсутствие предварительного транскодирования
- Просмотр контента с практически любыми входными параметрами (кодеки, контейнеры и т.п.)
- Транскодируется и прекрасно просматривается все вплоть до BDRemux (>20 GB)
Недостатки:
- Отсутствие выбора звуковой дорожки – легко решается несколькими строками кода и замечательной утилитой mediainfo
- Отсутствие перемотки – легко решается несколькими строками кода и подстановкой времени старта в параметры транскодирования
- Отсутствие выбора параметров при наличии нескольких разных андроид устройств с разными экранами – решается несколькими строками кода
Я не претендую на гениальность и, что вполне вероятно, посмотрев на код вы скажете что я идиот. Но кому-нибудь этот опыт может пригодиться.
Исходники для ознакомления доступны здесь.
Метки: android, home server, multimedia, video, андроид, видео, демашний сервер, потоковое вещание, сеть