Здравствуйте, уважаемые хабрачитатели.
Есть у меня скромненький hand-made домашний сервер:
Работает все это под убунтой и имеет примерно такой конфиг: Intel Core Quad, 4Gb памяти и RAID 5 из 4-х 2TB дисков.
Контент с этого сервера забирают домашние компы (samba), медиаплеер (samba), телевизоры (DLNA). И все не давала мне покоя идея смотреть вновь вышедшие серии сериалов, да и некоторые фильмы, на телефоне, лежа в кровати на сон, так сказать, грядущий. Ноутбук — неудобно ввиду его размера и опасности уронить с кровати в момент непредвиденного засыпания. Перерыл много форумов, программ и т.п., но решения так и не нашел.
Решение пришло в голову достаточно очевидное и простое — надо транскодировать видео на сервере и отдавать поток в понятном плееру формате.
Плеер я выбрал — MX Video Pleer
Формат видео — flv
Транскодировать видео будет — mencoder
С этим проблем нет:
В первую очередь добавляем репозиторий medibuntu:
И устанавливаем пакет mencoder:
1-я страница — index.php, файловый браузер.
В начале файла задаем базовый путь для поиска. Выглядит в браузере это так:
2-я страница — конвертер видео.
Берет передаваемый в URL'e путь, запускает mencoder через popen и отдает результат плееру.
Опции для конвертации подбираются экспериментальным путем. Я для своего desire подобрал.
И еще один тонкий момент — при запросе с параметрами ни один плеер на телефоне видео воспроизводить не захотел, поэтому пришлось использовать rewrite engine у апача.
При минимальных трудозатратах я получил желаемый результат:
Недостатки:
Я не претендую на гениальность и, что вполне вероятно, посмотрев на код вы скажете что я идиот. Но кому-нибудь этот опыт может пригодиться.
Исходники для ознакомления доступны здесь.
Есть у меня скромненький 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 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
- Отсутствие перемотки — легко решается несколькими строками кода и подстановкой времени старта в параметры транскодирования
- Отсутствие выбора параметров при наличии нескольких разных андроид устройств с разными экранами — решается несколькими строками кода
Я не претендую на гениальность и, что вполне вероятно, посмотрев на код вы скажете что я идиот. Но кому-нибудь этот опыт может пригодиться.
Исходники для ознакомления доступны здесь.