- DLNA-сервер для дома и семьи
- DLNA — его место в домашней сети
- На что ставить
- Личный опыт, оценка программ
- DLNA сервер для Linux Debian / Ubuntu на базе MiniDLNA
- Содержание
- Установка MiniDLNA
- Установка Sudo
- Настройка MiniDLNA
- Запуск MiniDLNA
- Сканирование медиа-библиотеки MiniDLNA
- Установка MiniDLNA из исходников
- Сборка стабильной версии MiniDLNA
- Сборка текущей разрабатываемой версии MiniDLNA из Git-репозитория
- Установка
- Отключение запроса способа отображения файлов: All Files, Folders
- Отключение виртуальных папок в MiniDLNA версии 1.1.4 и выше
- Отключение виртуальных папок в MiniDLNA версии 1.1.3 и ниже
- Ссылки
DLNA-сервер для дома и семьи
Как-то так сложилось, что тег DLNA сервер чаще встречается в постах-вопросах, чем в ответах. И если в вопросах установки на домашний Windows-ПК какой-то пользовательский опыт накоплен, то определиться с выбором ПО для домашнего сервера/NAS-а/медиацентра — оказалось непросто. Распределившись по песочницам народ обособленно решает проблемы каждой программы в отдельности. А понять что из них чего стоит и нужно ли оно вообще — лично мне не удалось.
И вот, я вооружившись ссылкой с Википедии Как выбрать DLNA-сервер под Windows, Mac OS X или Linux — опробовал почти всё, что есть под Linux.
DLNA — его место в домашней сети
Наверное этот путь уже проходило большинство — в доме появляются новые медиа-устройства, растет количество членов семьи потребляющих медиа-контент, распухает сама база фильмов, музыки и фотографий.
При этом каждый строит медиа-инфрастуктуру по-своему. У кого-то это компьютер с TV-OUT, у кого-то нетбук или HTPC. Кто-то расшаривает папки с NAS-а по NFS, кто-то подключает HDD к медиаплееру, кто-то использует возможности Sony PS…
Появляется неразбериха в местах хранения, форматах, кодеках и т.п.
Так, в моем случае оказалось:
- плазме в гостинной лучше подавать 720p чем FullHD
- телевизору Sony в детской подключеному по Wi-Fi больше 15Mbit/s лучше не скармливать, H.264 ему нужен максимум Profile 4.1, а файлы на сетевых хранилищах он не видит вообще
- спутниковый ресивер Openbox не умеет играть звуковые дорожки в DTS, по SMB не тянет больше 30Mbit/s, по NFS-не отображают кириллицу
- Nokia Lumia и iPhone вообще ограниченны везде и всюду
В общем, единственным вариантом сдружить весь этот зверинец между собой — это использование DLNA сервера.
Теоретически — он и контент из разных мест в одиное дерево папок сведет, и разрешение подгонит и совместимость кодеков проверит и при необходимости перекодирует. Красота…
На что ставить
Домашний компьютер — как правило это Windows-машина. Смотреть фильм с перекодированием пока кто-то играет — не получиться; режима 24/7 нет и близко. На роль не подходит. Поэтому Windows версии программ я даже не рассматривал.
Роутер, прошитый DD-WRT/OpenWRT — есть пакеты для этих прошивок и они работают. Аппаратные ресурсы очень ограничены — транскодирование малореально, скорость доступа к USB порту и сетевым папкам сильно ограничена. Тем не менее — многим и такое подходит.
NAS или домашний сервер с Linux — самое универсальное решение. Программ много. Ограничений по протоколам нет. Производительности x86 процессоров 5-летней давности (в моем случае это Athlon X2-6000) хватает для одновременного перекодирования на-лету двух фильмов любого формата.
Личный опыт, оценка программ
MiniDLNA, uShare и xupnpd
Это разные проекты, но в сущности — одно и то-же. Легковесные и быстрые. Единственная функция, которую они выполняют — предоставляют сетевой доступ к медифайлам по протоколу DLNA/UPnP. Всё остальное плеер или телевизор должны уметь сами. DLNA поддерживается не в полной мере и многие устройства эти серверы просто не видят.
Очень массовые. Работают везде. Пакеты существуют под всевозможные дистрибутивов Linux, маршрутизаторы с прошивками DD-WRT/OpenWRT и NAS-ы. Процедура установки простейшая и хорошо расписана на профильных форумах. Никаких GUI нет
Если Вы, и только Вы (иначе неизбежны жалобы членов семьи):
- смотрите/слушаете только с одного всеядного устройства (такого как телевизор Samsung)
- Ваше устройство не умеет напрямую брать файлы с сетевых папок или делает это слишком медленно (такое как телевизор Sony Bravia)
- храните фильмы/музыку на недорогом NAS-е или маршрутизаторе с USB-диском
- заранее отбираете контент в нужном формате или не ленитесь перекодировать вручную
- медиа-файлы уже хорошо отсортированы по папкам или Вас это вообще не беспокоит
— то Вам можно ограничиться и таким DLNA-сервером. Выбирать из них тот, который есть в пакетах под вашу железяку и будет увиден рендером.
MediaTomb
Разработчики однозначно пишут, что «это не DLNA-сервер, он лишь поддерживает часть его функций». И хотя некоторые проблемы совместимости могут быть, это вполне себе достойный внимания проект.
Здесь уже есть работающий через встроенный http-сервер GUI — в нем можно управлять папками с контентом. Добавлять новые, создавать ярлыки к существующим, задавать интервалы сканирования и т.п.
Хорошо распространен — нет проблемы установить в любом дистрибутиве Linux, тяжелых зависимостей за собой не тянет. Настраивается единственным текстовым файлом. Очень стабилен в работе, не ресурсоемк.
Можно использовать транскодирование, но оно реализовано в простешем виде. Так, привязка профилей осуществляется к формату входного файла, а не к устройству вывода. Сервер вообще не различает кто к нему подключился. Соответственно готовых профилей под устройства нет — все нужно настраивать вручную:
- какие форматы транскодировать, а какие передавать напрямую
- задать кодировщик по ситуации: ffmpeg, vlc, mplayer или что-то ещё
- задать bitrate, количество аудио-каналов, профиль H.264 и прочие опции кодирования
- наложить видеофильтр, такой как обрезание полей или crop
В моем случае пришлось писать отдельный скрипт для задания аргументов ffmpeg исходя из формата аудиодорожки (DTS или AC3).
При этом, при просмотре транскодированного потока на телевизоре не будет работать перемотка и выбор адуиодорожки. Прикрутить субтитры — тоже отдельная песня.
В общем — MediaTomb — весьма брутальные инструмент для true линуксоидов. Универсальным его не назовешь, но под себя и свое железо можно настроить идеально.
Rygel
Массовый, есть почти везде. Но очень криво ставится в режим демона (нужно самому писать init-скрипт, создавать папки и пользователя). Является частью проекта gnome и тянет за собой gstreamer (а то и pulseaudio). Если у кого на компьютере стоит KDE или что-то другое — совсем неудобен. Иконки для видео генерирует через tumbler из проекта XFCE, да и то с нюансами. Регулярно падает.
До изучения особенностей транскодирования у меня руки не дошли. Мой вердикт — «не годен«.
PS3 Media Server
Очень старый проект. И хотя от своего начального применения: «Раздавать фильмы/музыку с домашнего Windows ПК на Sony PS», — проект сильно развился. Но JAVA-код и требования для запуска X-сервера меня от него отвернули.
DLNA-сервер в нём есть. Но держать этот комбайн ради одного лишь модуля глупо.
Тем более, что именно из XBMC родился отдельный проект медиа-сервера Plex.
Universal Media Server
Кривой он какой-то. Показывал мне все дерево каталогов вместо выбранной папки. Файлы открывал лишь некоторые и регулярно сыпал ошибками в консоль. С transconding-ом я вообще не разобрался.
Весьма тяжелый из-за JAVA-кода. Обязательно нужен запущенный X-сервер — демоном его не поставишь. «Не годен.«
GMediaServer
Проект заброшен. Внимания не достоин.
LXiMedia
Простая и удобная реализация DLNA-сервера. Достаточно выбрать папки с файлами, жестко задать параметры транскодирования, аудиодорожку, субтитры. Никаких пофилей, настроек. К тому-же это GUI-приложение, демоном не ставиться.
На мой взгляд он в таком виде бесполезен — один из многих и далеко не лучший.
Serviio
Пожалуй самый быстроразвивающийся проект сейчас. Регулярно обновляется. Активно обрастает плагинами, профилями и приложениями под мобильные OS.
Представляет из себя JAVA-приложение работающее демоном. Поддержка DLNA-протокола — полная. Довольно умело разбрасывает контент по папкам и категориям. Умеет создавать превьюшки к фильмам. Легко подключаются разные каналы on-line вещания.
Транскодирует при помощи ffmpeg. База профилей устройств уже достаточно большая (и продолжает пополнятся) — сервер корректно подбирает параметры кодирования для любого из домашних железок. Что не распознал — подобрать профиль или написать свой не сложно.
Из-за того, что используется ffmpeg — та-же проблема, что и в mediatomb — нет перемотки в транскодированном потоке и не меняется аудиодорожка.
Управляется это все либо из JAVA-клиента, либо web-морды, написанной на PHP, либо смартфона (есть приложения под Android и WP).
К сожалению недоступен в виде .deb или .rpm пакета. Нужно ставить вручную: создать папки, пользователя, распаковать, взять на форуме поддержки init-скрипт, прописать в автозапуск». Под Synology NAS есть готовый пакет.
В целом — вполне может стать единой точкой доступа к медиа-контенту дома. Все, что нужно — он умеет.
Skifta
Не включен в Linux-репозитории, а потому редок. Но он имеет графический инсталлятор и несет с собой jre, а потому станет почти в любой системе. Неудобен тем, что запускается в два шага — вначале утилитка в SystemTray, потом — сам media-server. Без иксов и демоном не пойдет. Очень прост и лаконичен, но сильно грузит систему (JAVA-код).
TVMOBiLi
Стоит 30$ (или абонентская плата 1,5$/мес). Доступен в виде .deb и .rpm пакетов. Не в Ubuntu/Fedora установить довольно сложно — встроенные vlc и ffmpeg наверняка найдут недостающие библиотеки и откажутся работать. У меня не получилось подобрать в Gentoo USE-флаги для vlc. Не работал совсем, пришлось переделывать профили, что-бы использовался только ffmpeg.
В целом профили транскодирования — его сильная сторона. Можно задать любую логику и любые параметры.
Управляется через симпатичную WEB-морду. Имеет богатую базу профилей транскодирования. Есть проигрывать файлов через встроенный http-сервер. Превьюшки генерировать не умеет.
Работает быстро и красиво. Хороший кандидат.
TwonkyServer
Устанавливается распаковкой tar.gz. или через инсталлятор. В Linux репозиториях его нет. Очень быстрый код, мгновенный запуск, удобный web-интерфейс. Хорошо и грамотно раскидывает контент по папкам. Есть готовые init-скрипты. Умеет извлекать из файлов meta-данные и генерировать превьюшки. Все понравилось. Одна беда — $19.95.
И все же: «Рекомендую«.
Как пишут разработчики — «A complete Media Solution». Подтверждаю.
Этот монстр вырос из XBMC и умеет все и даже больше. К фильмам найдет постеры, рейтинги и кучу данных. Сериалы к тому-же ещё и распределит по сезонам и эпизодам. Музыкальную коллекцию упорядочит из любого исходного вида.
Транскодирование делает из всего под всё. Параметрами можно управлять прямо из экранного меню телевизора. Для умных устройств вроде телевизоров LG Smart TV и Apple TV поддержка выходит далеко за пределы протокола DLNA.
Есть поддержка собственного облачного сервиса, что позволяет смотреть домашнее видео удаленно — сервер подстроит параметры отправляемого видео под возможности устройства и канала связи.
Есть отдельно написанные клиенты под мобильные OS и плитки Windows 8.
Для Ubuntu, Fedora, CentOS и массовые модели NAS есть готовые пакеты. Под все остальное — устанавливается простой распаковкой. Из зависимостей требует лишь Avahi-daemon.
К сожалению механизм транскодирования слабо допускает вмешательства в работу — профили подправить можно, но возможности сильно ограничены.
Способен решить любые задачи в рамках темы, при этом бесплатен, стабилен и как ни странно — быстр.
Очень хотелось бы, что-бы кто-то этот список дополнил и/или внес изменения.
Источник
DLNA сервер для Linux Debian / Ubuntu на базе MiniDLNA
Настраиваем домашний DLNA-сервер на базе MiniDLNA, он же ReadyMedia в Linux Debian или Ubuntu Server.
Содержание
Установка MiniDLNA
Простейшим способом установки является, установка пакета из репозитория вашего дистрибутива:
Установка Sudo
Если в вашей системе отсутствует команда sudo, желательно ее установить. Sudo нам потребуется в процессе настройки, для тестирования прав доступа к папкам с медиа-файлами.
Добавляем пользователя в группу sudo:
Выходим из системы и входим заново, чтобы изменение группы вступило в силу.
Настройка MiniDLNA
Правим файл конфигурации:
Как минимум, потребуется задать путь к папке с медиа-файлами, параметр: «media_dir». Также можно задать имя сервера, отображаемое клиентом, параметр: «friendly_name».
В случае если наш DLNA-сервер по совместительству является интернет-шлюзом, также необходимо задать внутренний сетевой интерфейс, параметр: «network_interface».
Параметры в комментариях файла конфигурации содержат значения по умолчанию.
Проверяем параметры init-скрипта /etc/default/minidlna:
Обычно корректировка не требуется. Если файл отсутствует, при первичной установке из исходников, копируем листинг:
Поскольку служба работает под пользователем с ограниченными правами, публикуемые папки и файлы должны быть доступны на чтение для всех пользователей, следовательно, иметь разрешения 644: » rw- r— r— «, для файлов и 755: » rwx r-x r-x «, для папок.
Проверяем доступность для каждой папки, заданной в minidlna.conf, командой:
Если папка недоступна, задаем права доступа:
Вышестоящие папки также должны быть доступны на чтение всем пользователям. Проверяем доступность на чтение каждой папки, указанной в пути. Для вышестоящих папок используем chmod без ключа -R, если не требуется сброс разрешений для всех дочерних файлов и папок.
В качестве альтернативы смене разрешений, можно запустить MiniDLNA от имени пользователя или группы-владельца файлов. Для этого необходимо задать параметры USER и GROUP в /etc/default/minidlna, и сменить владельца папки /var/lib/minidlna командой:
Запуск MiniDLNA
Проверяем, работает ли служба, также смотрим параметры запуска:
Проверяем, слушается ли порт:
В случае успешного старта, лог должен быть примерно следующим:
Если видим: » WARNING: Inotify max_user_watches [8192] is low. «, необходимо увеличить число дескрипторов слежения inotify до 100 000. Для этого в файл /etc/sysctl.conf добавим строки:
Или копипастом команды:
Изменение параметра вступит в силу после перезагрузки системы.
Открываем в браузере http://адрес.сервера:8200, видим количество файлов в библиотеке, начиная с версии 1.1.2, также отображается список подключенных клиентов.
Настройка DLNA/UPnP-AV сервера завершена.
Если вместо сообщений и папок-контейнеров MiniDLNA отображаются знаки вопроса, отключаем локализацию.
Если был установлен пакет:
При установке из исходников:
Перезапускаем MiniDLNA с повторным сканированием библиотеки.
Сканирование медиа-библиотеки MiniDLNA
При появлении ошибок в каталоге, необходимо выполнить повторное сканирование файлов.
Для этого удалим базу Minidlna и перезапустим службу:
Для сканирования медиа-библиотеки при каждом старте системы можно задать ключ запуска: «-R» в параметре DAEMON_OPTS в файле /etc/default/minidlna. Сканирование большой медиа-библиотеки существенно нагружает диск, что может замедлить загрузку системы.
Полное формирование каталога может занять несколько минут. Сканирование папок выполняется в порядке их объявления в конфиге. Файлы из небольших папок, объявленных в конфиге выше, появятся в каталоге в самом начале процесса сканирования. Крупные папки с редко воспроизводимым контентом имеет смысл размещать в конфиге последними.
Установка MiniDLNA из исходников
Дальнейший материал был написан во времена Debian 7 и не тестировался на современных версиях.
Как минимум, инит-скрипты и юнит-файлы берем из deb-пакета.
Устанавливаем сборочные зависимости:
Если при установке зависимостей возникает ошибка: «Невозможно найти пакет с исходным кодом для minidlna». Значит, пакет MiniDLNA отсутствует в вашей версии дистрибутива. В этом случае придется установить зависимости вручную:
Создаем папку для исходников в профиле пользователя и переходим в нее:
Сборка стабильной версии MiniDLNA
Загружаем исходники последней стабильной версии:
С ключом —trust-server-name, будет сохранено исходное имя файла: «minidlna-1.1.4.tar.gz», номер версии может отличаться. Если ключ не указан, файл будет сохранен под именем: «download».
Переходим в папку с исходниками:
Сборка текущей разрабатываемой версии MiniDLNA из Git-репозитория
Для сборки из Git-репозитория, потребуются дополнительные пакеты:
Переходим в папку с исходниками:
Создаем скрипт автоконфигурации:
Установка
Удаляем пакет, если он был установлен ранее:
Устанавливаем собранную версию:
При первичной установке, копируем minidlna.conf в папку /etc:
Если скрипт остался от оригинального пакета Debian, достаточно исправить путь к исполняемому файлу, выделенный красным. Если файл отсутствует, копируем следующий листинг:
Для дистрибутивов на базе Debian 6 в init-скрипте необходимо скорректировать параметр PIDDIR, для современных дистрибутивов корректировка не требуется.
Разрешаем запуск скрипта:
Активируем запуск init-скрипта в rc.d:
По умолчанию служба запускается под пользователем minidlna, создаем учетную запись:
Также, при первичной установке, потребуется создать файл параметров init-скрипта (/etc/default/minidlna), рассмотренный далее, в процессе настройки.
При установке из исходников, minidlna.conf требует дополнительной корректировки. В пакете Debian пути по умолчанию были изменены, теперь их необходимо прописать явно.
Задаем путь для хранения базы данных, используем домашнюю папку пользователя minidlna, созданного на предыдущем шаге:
Задаем путь к лог-файлу:
Отключение запроса способа отображения файлов: All Files, Folders
Настраиваем отображение содержимого папок Music, Pictures, Video без промежуточного запроса способа их отображения.
Частично вопрос можно решить установкой параметра: «root_container=B» в minidlna.conf. При этом сам запрос не отключается, но содержимое папок отображается непосредственно в корневом контейнере.
В случае если устройство, в качестве корневого контейнера, отображает свой собственный стартовый экран, корректировка файла конфигурации не даст результата. Для полного отключения запроса способа отображения файлов, придется внести изменения в код программы.
Отключение виртуальных папок в MiniDLNA версии 1.1.4 и выше
Для версии 1.1.4 применяем патч, и добавляем параметр disable_extended_directories=yes в minidlna.conf. Данный патч войдет в состав следующей версии MiniDLNA, для более поздних версий достаточно задать параметр в файле конфигурации.
Получаем и устанавливаем пакет с исходниками, как описано в разделе: «Установка или обновление MiniDLNA из исходников».
Переходим в папку с исходниками:
Загружаем и применяем патч:
Собираем и устанавливаем исправленную версию:
Редактируем файл конфигурации:
Перезапускаем службу с повторным сканированием медиа-библиотеки:
В системах на базе systemd для повторного сканирования потребуется удалить базу данных вручную:
Отключение виртуальных папок в MiniDLNA версии 1.1.3 и ниже
Получаем и устанавливаем пакет с исходниками, как описано в разделе: «Установка или обновление MiniDLNA из исходников».
Переходим в папку с исходниками:
Необходимые константы идентификаторов папок объявлены в scanner.h
Нам необходимо при запросе папок MUSIC_ID, VIDEO_ID и IMAGE_ID, перенаправить клиента в MUSIC_DIR_ID, VIDEO_DIR_ID и IMAGE_DIR_ID соответственно.
Обработка запросов клиента реализована в файле upnpsoap.c.
Сохраняем резервную копию файла:
Активируем поиск (F6), ищем процедуру: «BrowseContentDirectory».
В начале процедуры выполняется разбор SOAP/XML-запроса, затем его обработка и возврат результата.
Разбор запроса завершается формированием отладочного сообщения:
Далее реализован выбор корневого контейнера в зависимости от конфигурационного параметра root_container:
Сразу после этого блока и перед блоком с запросами к БД добавляем код перенаправления папок для видео, музыки и изображений:
В итоге правленный фрагмент должен выглядеть следующим образом:
Собираем и устанавливаем исправленную версию:
Проверяем результат. Папки должны открываться без запроса способа отображения.
Ссылки
Список DLNA-серверов и клиентов в Википедии.
Источник