DLNA - набор стандартов для быстрой передачи медиа-контента между устройствами. DLNA привлекает внимание простотой в использовании и широкой распространённостью: такие технологии как AllShare от Samsung, SmartShare от LG и AirPlay от Apple по сути своей являются реализациями DLNA со своими маркетинговыми названиями.
Разработкой стандартов занимается альянс DLNA. Он же проводит сертификацию устройств, проверяя их совместимость со стандартом. На устройствах прошедших такую сертификацию обычно размещается логотип альянса:
Далее будет показано как можно быстро развернуть на домашнем сервере DLNA-сервер для использования совместно с устройствами на базе Android.
Начальные условия: домашний сервер под управлением Ubuntu 16.04, коллекция фильмов, которую мы хотим смотреть на Smart TV под управлением Android, находится в директории /home/ubuntu/Films. По DLNA мы собираемся отдавать только видео-файлы.
Среди всего множества реализаций DLNA мы выберем minidlna от разработчиков из компании Netgear. Некоторое время назад он был переименован в ReadyMedia, однако в репозитории Ubuntu пакет пока ещё по прежнему называется minidlna. Одной из интересных особенностей minidlna является возможность работы сразу на нескольких сетевых интерфейсах, хотя это нужно далеко не всем. Установим пакет:
apt-get install minidlna
Далее открываем в редакторе файл /etc/minidlna.conf и приступаем к настройке. Первым делом надо указать директорию с медиа-файлами. Поскольку мы собираемся отдавать только видео то надо так же явно это обозначить:
#media_dir=/var/lib/minidlna media_dir=V,/home/ubuntu/Films
Чтобы упростить клиентам навигацию укажем начальный путь обзора на сервере:
#root_container=. root_container=V
В параметре "network_interface" перечислим через запятую интерфейсы, на которых будет слушать наш сервер:
network_interface=eth1,wlan0
Ну и напоследок в параметре "friendly_name" укажем имя нашего сервера, которое будут видеть все клиенты:
friendly_name=Home Collection
На этом настройка сервера заканчивается и остаётся только перезапустить сервис для применения настроек:
service minidlna restart
Если что-то пойдёт не та то первым делом надо смотреть файл журнала "/var/log/minidlna.log". Статус сервера и список подключенных клиентов можно смотреть на веб-странице "http://<IP_вашего_сервера>:8200". Выглядит эта страница примерно так:
С клиентскими устройствами так же всё должно быть просто. Многие устройства из коробки поддерживают протокол DLNA. Если у вас устройство на базе Android и штатного приложения для работы с DLNA у вас нет то можно поставить DLNA-браузер, коих очень много в Google Play. Например у автора этих строк хорошо зарекомендовали себя AnDLNA и GinkgoDlna.
Интересную задачку "подкинул" недорогой Smart TV от Akai (Akai LES-32А64М): он был подключен к локальной сети через Ethernet и не имел штатного DLNA-браузера. Казалось бы что задача решается просто: достаточно установить любой DLNA-браузер из Google Play, однако большинство из них (включая указанные выше AnDLNA и GinkgoDlna) работают только с WiFi-соединением и оказывались не способы "найти" DLNA-сервер через Ethernet соединение.
Перебор нескольких десятков приложений привёл к MediaHouse UPnP / DLNA Browser. Это приложение оказалось "всеядным" и спокойно заработало с DLNA-сервером, будучи подключенным к сети через Ethernet-порт:
Для просмотра видео почти все DLNA-браузеры используют внешний плеер. Как оказалось штатный плеер Android на большинстве устройств поддерживает ограниченный набор кодеков. Если возникает проблема при воспроизведении (нет звука и/или видео) то стоит установить сторонний плеер с большим набором кодеков. Хорошим выбором может быть MX Player.
На этом всё. Приятной работы!