Как сделать сервер DLNA

Логотип компании
Как сделать сервер DLNA
Создание DLNA-сервера может пригодиться как дома, так и для демонстрации рекламного, развлекательного или информационного контента, например, в кафе.

Идея обзавестись DLNA-сервером появилась у меня в тот момент, когда в очередной раз пропало кабельное ТВ вместе с доступом в Интернет (строители повредили кабель), а флеш-накопитель, куда я сохранил любимое видео о рыбацких хитростях, внезапно оказался «мертвым». Надежда провести вечер в созерцании прекрасного, таким образом, накрылась, и со свободным временем надо было что-то решать. Перспектива крутить то самое видео на мониторе ПК не прельщала, равно как и попытка достучаться смартфоном до общей папки в локальной сети… И тут появилась идея: если на ресивере, подключенном к телевизору, есть DLNA-клиент, а в соседней комнате простаивает почем зря неттоп под управлением Ubuntu, то почему бы не поднять соответствующий сервер? Дело за малым: разобраться, как это сделать, и воплотить задуманное в реальность.

DLNA, IP, UPnP, Wi-Fi и другие

Сперва немного о самой технологии. DLNA (Digital Living Network Alliance) создавалась как средство передачи медиаданных по обыкновенной локальной сети посредством стандартного протокола TCP/IP. Суть идеи в том, чтобы максимально упростить процедуру сопряжения устройств – источников видео-, фото- и аудиоматериалов и средств воспроизведения и отображения информации. В последнюю категорию входят, кстати, не только телевизоры, но и принтеры. А в первую – мобильные гаджеты, от смартфонов до видеокамер. Но, конечно же, в быту наиболее часто DLNA используют для передачи контента между компьютером или сетевым хранилищем (NAS) и телевизором.

Если в качестве телевизора выступает SmartTV, то речь идет о прямой связке «компьютер – телевизор». В противном случае в цепочке появится посредник: медиасервер, игровая консоль, спутниковый тюнер, ресивер кабельного телевидения, словом, любая многофункциональная приставка к устройству отображения. Главное, чтобы она умела работать в качестве DMP (Digital Media Player), то есть позволяла искать сервер и управлять предоставленным им контентом. В моей ситуации в роли проигрывателя выступил спутниковый тюнер с встроенной ОС на базе Linux – у него был полный набор средств для работы в качестве DLNA-приемника.

Что еще? Ах да, нужно, чтобы роутер, к которому будут подсоединяться все устройства, поддерживающие DLNA, поддерживал технологию UPnP (Universal Plug and Play) – именно она позволит этим устройствам легко находить друг друга, устанавливать и поддерживать связь. Но и этого мало – важна активность самой UPnP (попросту убедитесь, что в настройках эта опция включена).

Вот, собственно, и все, что требуется для предварительной подготовки. Какие-то особенные требования на пропускную способность не оговариваются, но на практике рекомендуется использовать протокол Wi-Fi не ниже 802.11n, а лучше – кабельное подключение от 100 Мбит/. Так что постарайтесь подсоединить к маршрутизатору кабелем хотя бы сервер, особенно если планируется смотреть видео с нескольких устройств одновременно.

Как сделать сервер DLNA. Рис. 1

Устанавливаем сервер DLNA

В качестве серверной части я решил воспользоваться minidlna (можно было взять uShare или xupnpd) – эта утилита проста в настройке и весьма надежна. Возможно, некоторых пользователей, привыкших решать такие задачи посредством графического интерфейса, отпугнет необходимость работать ручками, то есть править конфигурационные файлы в текстовом редакторе, но на самом деле это несложно. Здесь и далее я буду приводить примеры, которые работают под Ubuntu Linux, но большинство действий также сработает и на других сборках.

Перед тем как устанавливать основной пакет ПО, следует установить требуемый набор библиотек. Возможно, в вашей системе они уже имеются, но рисковать не стоит: удовлетворение зависимостей – гарантия работоспособности продукта. Итак, открываем терминал, и вводим следующую команду:

sudo apt-get install gcc debhelper libavcodec-dev libavformat-dev libavutil-dev libexif-dev libflac-dev libid3tag0-dev libjpeg-dev libogg-dev libsqlite3-dev libvorbis-dev

Затем устанавливаем сам minidlna. Для Ubuntu проще всего обратиться к репозиторию:

sudo apt install minidlna

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

1. sudo apt-get install checkinstall

2. Загружаем и распаковываем исходники актуальной версии (на момент написания статьи – 1.2.1):

wget http://downloads.sourceforge.net/project/minidlna/minidlna/1.2.2/minidlna-1.2.1.tar.gz

3. Распаковываем загруженный тарбол:

tar -xf minidlna-1.2.1.tar.gz

4. Переходим в созданную папку:

cd /minidlna-1.2.1

5. Запускаем конфигуратор:

./configure

6. И наконец, финальная часть – собираем пакет:

sudo checkinstall -D

На этом установочная суета прекращается – если, конечно, все прошло без ошибок. Осталось выполнить настройки.

Как сделать сервер DLNA. Рис. 2

Настраиваем сервер minidlna

Первым делом проверяем наличие скрипта init в папке /etc/init.d/minidlna. Если там нет, придется отыскать его содержимое в Интернете и создать файл вручную. Затем надо выдать скрипту требуемые полномочия командой:

sudo chmod 755 /etc/init.d/minidlna

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

sudo update-rc.d minidlna defaults

Следующий шаг – создание пользователя, под которым и будет работать сервер:

sudo adduser – system – home /var/lib/minidlna – group – gecos "MiniDLNA server" minidlna

И наконец, открываем любимым редактором (у меня это nano) конфигурационный файл:

sudo nano /etc/default/minidlna

и вносим в него обязательные правки. Обязательно укажите каталоги, в которых размещены ваши медиафайлы:

#

media_dir=A,/home/Аудио

media_dir=V,/home/Видео

media_dir=P,/home/Фото

#

По возможности располагайте каталоги на тех дисках, к которым есть разрешенный доступ. В частности, идея разместить информацию на подключаемых дисках Windows не самая лучшая, откажитесь от нее сразу. Также не стоит связываться с дисками, размеченными в формате ntfs или fat32. Из-за невозможности корректно назначить права доступа к файлам этих файловых систем придется привязывать minidlna к суперпользователю, а это серьезная дыра в безопасности. Идеальный вариант – переместить медиафайлы в каталоги по адресам:

/var/lib/minidlna/video

/var/lib/minidlna/audio

/var/lib/minidlna/photos

А на нативных жестких дисках Linux достаточно прописать полномочия командой:

sudo chmod -R 0777 /имя папки/

Не помешает сменить и имя своему серверу, поскольку по умолчанию присваивается “$HOSTNAME:$USER”, то есть имя_компьютера:пользователь. Достаточно добавить в конфигурационный файл строчку вида:

friendly_name=Домашний_DLNA,

чтобы отображаемое имя ресурса стало красивым и удобочитаемым.

Как сделать сервер DLNA. Рис. 3

Запуск и управление сервером

После переноса библиотек медиафайлов на их законное место и прописывания прав требуется запустить DLNA-сервер командой:

sudo service minidlna force-reload

К слову, ею же выполняется перезапуск демона в случае возникновения проблем. Для того чтобы убедиться в работоспособности процесса, выполняем команды:

ps ax | grep minidlna

sudo ss -4lnp | grep minidlna

cat /var/log/minidlna.log

Результат должен быть примерно такой, как на скриншоте: программа «слушает» порт и ожидает распоряжений от «клиента». К слову, демону требуется некоторое время на сканирование контента и добавление его в базу, так что все содержимое будет отображено не сразу. Посмотреть, сколько элементов найдено, можно уже в графическом режиме, через браузер, воспользовавшись командой:

http://localhost:8200/

У меня вся операция по запуску и настройке DLNA-сервера заняла около получаса, причем значительную часть этого времени пришлось потратить на копирование медиафайлов и создание ссылок. Одним словом, ничего трудоемкого.

Как оказалось, смотреть видео без проблем можно с трех устройств одновременно – для машинки с процессором частотой 1,1 ГГц и ОЗУ емкостью 4 Гбайт это не составило затруднений. Так что флешка отправилась в утиль, общие папки для видео-аудио-музыки были удалены и беготня между компьютером и телевизором наконец-то предана забвению. Чего, собственно, желаю всем ленивым двигателям прогресса!

Опубликовано 16.05.2018