Найти тему

MiniDLNA — медиа сервер на Ubuntu

Оглавление

Надоело мне перекачивать на флешки фильмы, чтобы посмотреть их на телевизоре. Кто придумал размещать USB разъёмы на телевизорах сзади? Юзабилити на нуле. Пропихивая руку в узкую щель за телевизором и пытаясь в очередной раз воткнуть куда-нибудь на ощупь флешку, я подумал: "Зачем я всем этим занимаюсь?"

У меня есть сервер с операционной системой Ubuntu 18. Телевизоры LG в комнате и Philips на кухне подключается к сети по Ethernet + Wi-Fi и поддерживают технологию DLNA. Почему бы не развернуть на Ubuntu простой медиа сервер с поддержкой DLNA, чтобы из папки раздавать фильмы?

DLNA (Digital Living Network Alliance) — набор стандартов, которые позволяют передавать и воспроизводить в реальном времени фото, видео и аудио файлы по домашней сети. Поддерживается проводная (Ethernet) и беспроводная (Wi-Fi) связь.

Медиа сервер с поддержкой DLNA позволит:

  • Хранить все фильмы, фотографии и музыку централизовано в одном месте.
  • Воспроизводить контент на любом устройстве в доме с поддержкой DLNA: телевизоры, приставки, телефоны, проигрыватели.
  • Полноценная поддержка DLNA позволяет на лету сжимать и кодировать видео в формат, понятный конечному устройству.
  • Если постараться, то потом всё это можно организовать в единую систему с торрент-клиентом, веб-интерфейсом и удалённым доступом.
  • Не бегать с флешками по всему дому.
  • Да мне уже этого достаточно.

MiniDLNA

После недолгих поисков был найден кандидат на установку — minidlna. Сейчас проект носит название ReadyMedia, но пакеты в Ubuntu носят прежнее название. Это легковесный DLNA/UPnP медиа сервер. По сути осуществляет единственную функцию: предоставляют сетевой доступ к медифайлам по протоколу DLNA/UPnP. Обладает рядом достоинств и недостатков, выявленных в процессе эксплуатации.

Достоинства minidlna:

  • Потребляет мало ресурсов. При формировании базы грузит процессор, после работает почти незаметно.
  • Простота настройки. Есть пакеты под разные ОС, NAS, DD-WRT/OpenWRT.
  • Возможность работы под любым указанным пользователем в качестве демона.
  • Ничего лишнего.

Недостатки minidlna:

  • DLNA поддерживается не в полной мере. Может не обнаруживаться некоторыми устройствами.
  • Не производит перекодирование на лету. Если телевизор не может распознать файл, то проиграть не сможет.
  • Проблемы с автоматическим обновлением базы. Подробности в статье.

Особенности minidlna:

  • Нет GUI и web. Это для кого-то недостаток, а для кого-то достоинство.

Ссылки

https://sourceforge.net/projects/minidlna/

Установка MiniDLNA в Ubuntu 18

Устанавливаем пакет из репозитория:

apt-get install -y minidlna
-2

На Ubuntu Server 18.04.4 LTS установилась версия minidlna 1.2.1. Её и будем тестировать.

-3
На сайта проекта доступна более новая версия 1.3.0, но из-за зависимостей её не удалось просто так установить, а устанавливать все необходимые пакеты не было времени.

Конфигурационный файл находится по адресу: /etc/minidlna.conf.

-4

Комментарии понятны, давайте что-нибудь настроим. Сервис у меня будет работать от пользователя sf. Создадим рабочую папку для базы и логов:

mkdir /opt/minidlna
chown sf\: /opt/minidlna

Настроим /etc/minidlna.conf:

#user=sf media_dir=V,/home/sf/Films media_dir=A,/home/sf/Music media_dir=P,/home/sf/Photo merge_media_dirs=yes db_dir=/opt/minidlna/cache/minidlna log_dir=/opt/minidlna/log root_container=V port=8200 friendly_name=MiniDLNA Media Server model_name=MiniDLNA inotify=yes notify_interval=895

media_dir — директория, к которой будем предоставлять доступ. Можно указать несколько. Указывается тип контента и, через запятую, путь к папке. Типы контента:

  • "A" для аудио (например, media_dir=A,/var/lib/minidlna/music)
  • "P" для картинок (например, media_dir=P,/var/lib/minidlna/pictures)
  • "V" для видео (например, media_dir=V,/var/lib/minidlna/videos)
  • "PV" для картинок и видео (например, media_dir=PV,/var/lib/minidlna/digital_camera)

merge_media_dirs — объединять медиа директории.

db_dir — директория, в которой формируется база данных DLNA.

log_dir — директория, в которой находится log файл. Мне кажется, переопределяется в /etc/defaults/minidlna

root_container — контейнер для корневой директории. Варианты:

  • "." стандартный контейнер
  • "B" Browse
  • "M" Music
  • "P" Pictures
  • "V" Video
  • Можно использовать ObjectID, например, 1$F для Music/Playlists

port — порт, по умолчанию 8200.

friendly_name — название сервера, которое будет отображаться на телевизоре, клиенте DLNA.

model_name — модель, тоже для DLNA клиента/

inotify=yes — важный параметр, который включает возможность автоматического отслеживания добавление и удаления контента в директории. Вот только данный функционал не работает в примонтированных директориях типа cifs или виртуальных папок fuse, они просто не формируют уведомления inotes для операционной системы.

notify_interval — интервал в секундах, через который minidlna броадкастом уведомляет по сети о своём существовании всем устройствам. По умолчанию примерно 15 минут (895 секунд).

user — здесь можно указать пользователя, под которым будет работать minidlna, однако, в Ubuntu данный параметр (вместе с группой) переопределяется в файле /etc/defaults/minidlna, поэтому его нужно указать там в параметрах USER и GROUP:

-5

Здесь же указывается запуск в режиме демона:

START_DAEMON="yes"

Обращаем внимание на опцию:

DAEMON_OPTS="-r"

Опция применяет параметр при запуске службы:

  • -r — добавляет новые объекты в базу, удаляет несуществующие. На виртуальной папке fuse работало только удаление.
  • -R — удаляет базу и формирует заново. Работает без нареканий.

Перезапускаем службу:

systemctl restart minidlna

Или:

service minidlna restart

Проверяем, работает ли служба, также смотрим параметры запуска:

service minidlna status
-6

Проверяем порт:

netstat -tanu | grep 8200

-7

Ого, уже телевизоры набросились на сервер.

Настройка MiniDLNA медиа сервера завершена.

Исправление ошибок

В логах ошибка:

[2021/10/25 12:53:17] monitor.c:218: warn: WARNING: Inotify max_user_watches [8192] is low or close to the number of used watches [92] and I do not have permission to increase this limit. Please do so manually by writing a higher value into /proc/sys/fs/inotify/max_user_watches

Правим /etc/sysctl.conf, дописываем:

#MiniDLNA warning fix fs.inotify.max_user_watches = 100000

Главное, чтобы значение было не меньше 65536.

-8

Изменение применится после перезагрузки системы.

В браузере http://адрес_сервера:8200, видим количество файлов в библиотеке и список подключенных клиентов.

-9

Порты

Для работы используются порты по умолчанию:

  • ssdp (1900/udp)
  • trivnet1 (8200/tcp)

Сканирование библиотеки

При запуске демона minidlna сканирует подключённые медиа директории. Сканирование задано параметром "-r" в файле /etc/defaults/minidlna опцией:

DAEMON_OPTS="-r"

Опция добавляет новые объекты в базу, удаляет несуществующие. Если указать опцию "-R", то при запуске демона база удалится и сформируется заново. Сканирование больших библиотек может длиться несколько минут.

Перезапустить сканирование библиотеки можно вручную:

rm /opt/minidlna/cache/minidlna/files.db
systemctl restart minidlna

Или:

minidlnad -R && systemctl restart minidlna

Автоматическое обновление данных с помощью inotify на виртуальных папках не работает. Единственный вариант полного обновления библиотеки — запуск команды вручную или с помощью crontab по ночам.

Источник:
https://internet-lab.ru/minidlna_ubuntu18

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.