Pull to refresh

Домашний медиа-сервер: настройка и аспекты применения

Reading time6 min
Views253K

Преамбула


Наверное, у каждого из нас дома немало цифровых медиа-устройств, общающихся по WiFi или подключённых к сети с помощью обычной витой пары. У меня, к примеру — КПК, нетбук, пара ноутбуков, пара компьютеров и ещё пара смартфонов. Последние (парочка Nokia 5800 Xpress Music), благодаря тому, что даже в ванной или в постели постоянно находятся под рукой, оказались самыми часто используемыми девайсами. Благо и серфинг, и общение через GTalk/Skype, и простенькие игрушки-убийцы времени — всё доступно. Вот только памяти у девайсов всего по 8 Гб, так что фильмов туда не шибко накидаешь, да и конвертировать, а потом заливать на смартфон каждый фильм — на это нужно время, а ведь есть ещё такая штука, как лень! Одним словом, захотелось иметь возможность как-то просматривать медиаконтент (и в первую очередь — видео) с домашнего сервера в любой момент, не конвертируя и не совершая лишних телодвижений.

Фабула


В принципе, если бы не то, что мне попалась именно Nokia 5800XM, я бы давно эту проблему решил — роутер ASUS WL-500g поддерживает UPnP, так что достаточно было бы только воткнуть флешку. Беда в том, что не смотря на порой встречающиеся спецификации в онлайн-магазинах, но Nokia 5800XM не поддерживает UPnP/DLNA и сторонней реализации клиента тоже не существует. Так что же, спрашивается, делать? Поставить жирный крест на идее просмотра удалённого контента?

Первой попыткой выйти из тупика было потоковое вещание видео. Судя по спецификации протокола RTSP (RFC 2326) он должен поддерживать управление воспроизведением при вещании: PLAY, PAUSE, и TEARDOWN. К сожалению, после того, как VLC был настроен на потоковое вещание, оказалось, что запрос паузы либо не обрабатывается этим сервером и работает только со стороны сервера, либо не отсылается клиентом смартфона. К тому же, в любом случае, таким образом оказывался доступен только выбранный на сервере для вещания видеофайл, а не целая медиа-библиотека.

Но первое разочарование не охладило пыл, поиски продолжались.

Следующим на очереди стал Home Media Server, больше известный как Домашний медиа-сервер — программа, предоставляющая медиа-ресурсы (фотографии, аудио и видео-файлы) вашего компьютера другим UPnP (DLNA) устройствам в домашней сети. После установки он порадовал меня богатством опций, удобством настройки, но… полностью разочаровал в виду того, что UPnP/DLNA, как было упомянуто выше, Nokia 5800 не поддерживала, а через HTTP видео напрочь отказывалось проигрываться…
Нужна была работающая альтернатива. Вот тут как раз мне и попался на глаза медиа-сервер TVersity — название проскочило в чьём-то комментарии при обсуждении DLNA медиа-серверов.

Итак...

TVersity Media Server (free edition) — ещё более простой в освоении медиа-сервер, опять таки предлагающий нам UPnP, DLNA и HTTP. Если с первыми двумя протоколами всё понятно, то вот HTTP, как оказалось, не так прост — доступ к медиа-библиотеке оказался реализован двумя способами: классическим и через флеш. Но обо всём по порядку.

Для начала — интерфейс. Дружественный, и я даже сказал бы довольно упрощённый. Первым делом сразу полез в настройки. Хинты к каждой опции (пусть и на английском) упрощают конфигурирование сервера «под себя».

General Settings

Самым главным для меня, конечно, было перекодирование видео. Настройки сервера, к сожалению, ориентированы на рядового пользователя, так что поиграться с тонким конфигурированием кодеков не получится, но лучше хоть что-то, чем совсем ничего, не так ли?

Transcoder Settings

Настройка медиа-библиотеки тоже довольно проста (и в отличии от вышеупомянутого Home Media Server не требует длительного рестарта при своём обновлении), при добавлении источника с помощью специальных чекбоксов можно указать тип его контента: аудио, видео, и/или изображения. Я говорю именно «источника», а не «папки», потому что таким образом можно добавить внешний контент: к примеру Video RSS или Internet Radio, а также некоторые сервисы, как Youtube и Flickr. Кстати, обратите внимание — при выборе папки с помощью кнопки «Browse...» вместо кириллических имён получите кракозябры, так что лучше вписать имя вручную или скопипастить пусть из файлового менеджера.

Library

Ну что же, с тем, как настроить библиотеку разобрались. Теперь — о том, как же с ней работать. И начнём с того, ради чего всё это затевалось: просмотр видео со смартфона. Счастливым обладателям Nokia 5800 известно, что смартфон принципиально не умеет открывать AVI контейнер, и изначально это было большой проблемой, т.к. локальный просмотр фильма требовал конвертировать видео в MP4, но потом всё же появились сторонние плееры с поддержкой этого контейнера. В данном случае это не имеет значения — нужна лишь поддержка FLV, что для него не проблема. Итак, как уже упоминалось раньше, доступ к медиабиблиотеке реализован двумя способами. Для просмотра HTML-страниц в адресной строке нужно указать http://server-address:port/lib, а для загрузки интерактивного флеш-приложения — http://server-address:port/flashlib. В данном случае последний вариант как раз то, что нужно, посему в браузере смартфона создаётся закладка с адресом

http://192.168.1.33:41952/flashlib. Ну что же, теперь можно проверить, что получится.

Nokia BrowserNG - add bookmark

А получается такая вот картина: после непродолжительной загрузки флеш-приложения на экране появляется каталог библиотеки с вполне удобной навигацией:

FlashLib

Browsing media

Для гладкого видеовоспроизведения пришлось таки поиграться с настройками перекодировщика, но в конце-концов удалось добиться приемлемой картинки. Правда, позиционирование существенно подтормаживает, но это не столь существенная беда — можно мириться.

Playing video

В самом медиа-сервере можно посмотреть статус вещания, список адресов подключенных к нему устройств, статус перекодирования видео, а также лог работы и подключений.

Status

DLNA/UPNP

Казалось бы всё. Да ещё нет: всё-таки медиа-сервер штука удобная, и, конечно же, хочется использовать его по-полной, а значит не только через HTTP. Кроме смартфонов в наличии также имеется ноутбук с Windows 7 и нетбук — там установлена lubuntu. С первым всё оказалось проще простого — при запуске Windows Media Player 12 он с ходу обнаружил библиотеку DLNA медиа-сервера и без проблем начал её просмотр.



С линуксом всё оказалось немного сложнее. Из списка кроссплатформенных UPnP/DLNA медиа-клиентов XBMC мне установить попросту не удалось — у него отсутствовали в репозиторие бинарники для Ubuntu 11.04 Natty Narwhal, а установленный VLC — под линуксом он таки поддерживает UPnP — не всегда находил сервер, хотя в то же время я замечательно заходил на него через браузер. В итоге решено было искать другой путь.

В итоге была найдена одна замечательная вещь под названием djmount — основанная на FUSE утилита для монтирования ресурсов UPnP-серверов. Так как программа уже находилась в репозиторие, установка не отняла много времени. Теперь оставалось только создать точку монтирования да прописать автомонтирование. После непродолжительного исследования и наступания на грабли это таки удалось осуществить. Все нижеследующие команды выполняются исключительно из-под рута, так что не забудьте выполнить:

sudo -s<br>

Для начала нужно создать папку, которая будет являться точкой монтирования:

cd /media
mkdir upnp
chmod 777 upnp


Теперь, собственно, запуск FUSE и само монтирование:

modprobe fuse
djmount -o iocharset=UTF-8,allow_other /media/upnp


После этого уже можно заходить в библиотеку как в обычную папку и открывать её содержимое в любых удобных программах как обычные файлы.

Кстати сказать, я нигде не нашёл упоминаний о найденных мной пренеприятнейших граблях в работе с djmount, выражающихся в неправильной кодировке файлов. По спецификации DLNA имена файлов должны быть исключительно в UTF-8 формате, посему TVersity Media Server даже не имеет настройки кодировки имён файлов. Cудя по сообщении при монтировании djmount тоже по-умолчанию использует именно эту кодировку — UTF-8. Но файловый менеджер, равно как и консоль, упорно отказывались отображать в именах файлов привычные буквы, повсеместно заменяя их вопросительными знаками. Попытки указать кодировку CP1251 или IBM-866 к полному успеху не привели, хотя теперь в кириллические папки можно было хоть заглянуть. К моей полной неожиданности, выходом из ситуации стало прямое указание на использование кодировки UTF-8 — уж не знаю, почему я решил её испробовать, но это сработало!



Автозапуск тоже оказался делом не простым, но тут пришёл на помощь гугл, и как оказалось, проблема с невозможностью автомонтирования из fstab уже была решена. В результате монтирование происходит при каждом поднятии сети. Сделано это следующим образом. Создаём скрипт:

cd /etc/network/if-up.d
nano djmount<br>


Содержимое скрипта:

#!/bin/sh

# Not for loopback!
[ "$IFACE" != "lo" ] || exit 0

modprobe fuse
fusermount -u /media/upnp
djmount -o iocharset=UTF-8,allow_other /media/upnp<br>


Выставляем ему аттрибуты:

chmod 755 djmount
chown root djmount
chgrp root djmount


Вот теперь действительно всё. Медиа-библиотека доступна с любого устройства любым для него возможным/удобным способом.

Ссылки


UPnP, DLNA, UPnP client under Ubuntu: djmount
Tags:
Hubs:
+38
Comments19

Articles