Просмотр фильмов на android-устройствах с домашнего сервера

Здравствуйте, уважаемые читатели.

Вместо предисловия

Есть у меня скромненький 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
  • Отсутствие перемотки — легко решается несколькими строками кода и подстановкой времени старта в параметры транскодирования
  • Отсутствие выбора параметров при наличии нескольких разных андроид устройств с разными экранами — решается несколькими строками кода

Я не претендую на гениальность и, что вполне вероятно, посмотрев на код вы скажете что я идиот. Но кому-нибудь этот опыт может пригодиться.
Исходники для ознакомления доступны здесь.

Share

Добавить комментарий