В нашей организации есть много видеоэкранов развешенных по коридорам на которых целый день демонстрируются различные информационные и рекламные видеоролики. В большинстве своем видеоэкраны это старые телевизоры большой диагонали в которых нет SmartTV, видео проигрывается с флэшки подключенной по USB. Чтоб добавить очередное видео на любой экран нужно идти, отключать флэшку, добавлять видео из планшета или как-то еще и подключать обратно. Это все долго и неудобно. Для автоматизации процесса решено было докупить ТВ-приставки подключающиеся в компьютерную сеть и транслировать на них видео из сервера. О том как это все реализовано написано далее.

DLNA (англ. Digital Living Network Alliance) — набор стандартов, позволяющих совместимым устройствам передавать и принимать по сети различный медиаконтент , а также отображать его в режиме реального времени. DLNA сервер работает внутри одной локальной сети. Если сеть поделена на сегменты, то для DLNA трансляции нужно дополнительно настроить туннели между подсетями.

Принцип работы DLNA.

DLNA-сервер использует протокол UPnP (Universal Plug and Play), который работает на основе SSDP (Simple Service Discovery Protocol). При старте – сервер отправляет многоадресные (multicast) сообщения по UDP на адрес 239.255.255.250, порт 1900. Это объявляет его присутствие в сети. Возможна работа по запросу клиента – клиенты могут отправлять многоадресный SSDP-запрос, и сервер ответит им unicast-сообщением. Периодически – сервер повторяет объявления о себе, чтобы клиенты знали, что он еще активен. При завершении работы – сервер отправляет «byebye»-сообщение, чтобы клиенты удалили его из списка доступных устройств. Таким образом, это не совсем классическое широковещание (broadcast), а скорее многоадресная (multicast) и одноадресная (unicast) связь, завязанная на SSDP.

​

Сервер.

В процесс создания системы видеотрансляции в роли сервера протестировались три разные операционные системы: Windows, Ubuntu и RouterOS. У всех ОС есть свои плюсы и минусы.

 

DLNA-Windows.

Сервер может быть установлен на физический ПК или виртуальную машину. В данном случае используется гипервизор Windows Server 2019 Hyper-V и гостевая ОС Windows 10 22H2. Ресурсы зависят от количества клиентов: минимум двух-ядерный процессор и 4Гб ОЗУ. Место на диске с расчетом под необходимый размер и количество видеороликов +небольшой запас.

 

Переходим в настройки сети Windows этой виртуальной машины.

Win+R >> control /name Microsoft.NetworkandSharingCenter

или Панель управления >> Сеть и Интернет >> Центр управления сетями и общим доступом >> Параметры потоковой передачи мультимедиа.

 

Активируем потоковую передачу.

 

Очень часто активация заканчивается таким сообщением: Потоковая передача мультимедиа не включена.

 

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

Активация потоковой передачи.

Проверяем общий доступ и сетевое обнаружение. Они должны быть включены.

 

Пробуем включить потоковую передачу еще раз.

Переходим в службы  нажав на ссылку «Средство администрирования служб Windows или Win+R >> services.msc

Включаем службу «Служба общих сетевых ресурсов проигрывателя Windows Media».

 

Иногда запуск службы может завершиться ошибкой 1068.

В этом случае нужно запустить вспомогательные службы для этой службы.

Проверяем службы по очереди и включаем, если они остановлены.

Plug and Play.

Сетевые подключения.

Служба шлюза уровня приложения.

Служба сведений о подключенных сетях.

Удаленный вызов процедур (RPC).

Диспетчер автоматических подключений удаленного доступа.

Диспетчер подключений удаленного доступа.

​

После успешной активации откроется окно настроек.

Тут можно указать название этого сервера, задать разрешения для конкретных сетевых устройств и другие настройки. Нажимаем ОК.

 

Размещаем видеофайлы в папке «Видео».

 

Проверяем работу по сети.

На соседнем компьютере в той же сети открываем проигрыватель Windows Media. В списке находим DLNA-сервер по названию и в папке «Видео» размещенные видеофайлы.

Если все работает переходим к настройкам на ТВ-приставке (в конце страницы).

 

В процессе работы выявились недостатки этого сервера:

-видео на ТВ-приставках загружается очень долго;

-1 раз в два-три дня может зависнуть и остановится воспроизведение;

-можно долго пытаться найти службу которая мешает запуску потоковой передачи.

 

DLNA-Ubuntu.

Сервер установлен на гипервизор Windows Server 2019 Hyper-V, гостевая ОС Ubuntu 22. Много ресурсов не требуется: двух-ядерный процессор, 4Гб ОЗУ. Место на диске для видеороликов 10Гб (у каждого свой объем). Сервер подключен в сеть, ему назначен IP-адрес, есть доступ в Интернет.

Настройка выполняется по сети из ПК с ОС Windows. Подключаемся к ВМ через cmd по SSH или другим удобным способом.

Установка и подключение по SSH.

Подключаемся в Ubuntu (не по ssh).

Запускаем терминал Ctrl+Alt+T.

Выполняем обновление.

 

Устанавливаем сервер ssh.

 

В Windows 10 ничего устанавливать не нужно, так как есть встроенный OpenSSH клиент.

Подключаемся из Windows в Ubuntu. Открываем cmd и вводим команду.

user – это имя пользователя, у каждого свое;

IP-адрес своего Ubuntu.

Вводим пароль.

Подтверждаем подключение – yes.

Далее логинимся с правами root.

пароль

​

Установка DLNA-сервера.

Для сервера выбрана программа miniDLNA. Выполним её установку.

Актуализируем базы и обновляем пакеты до последней версии.

 

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

 

Отредактируем конфигурацию с помощью редактора nano.

 

Расположение медиафайлов. Можно указать любую папку. В данном случае выбрана папка Videos.

(V – означает видеоконтент)

 

Отображаемое имя сервера.

Сохраняем, выходим.

 

Копируем тестовое видео в папку Videos.

 

Теперь нужно назначить права на папку Videos и файлы в ней. Если не назначить, то при проверке статуса службы появится такая ошибка:

 

Изменим группу у папки Videos на minidlna.

(-R – означает рекурсивно, т.е. изменения относятся к папке и файлам внутри)

 

Добавляем пользователя minidlna в группу своего пользователя.

 

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

 

Можно посмотреть что получилось с помощью команды:

 

Перезапускаем сервер.

 

Пересканируем медиатеку.

 

Проверяем статус.

 

Переходим на клиента (соседний ПК в этой же сети) и проверяем наличие созданного DLNA-сервера через Windows Media Player.

 

Мониторинг DLNA-сервера возможен через web-интерфейс.

 

Деинсталляция DLNA-сервера и всех зависимостей (на случай если понадобится).

 

Зачистка с удалением файлов конфигурации.

 

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

 

DLNA-RouterOS.

Сервер установлен на гипервизор Windows Server 2019 Hyper-V, гостевая CHR RouterOS 7.17. Много ресурсов не требуется: одно-ядерный процессор, 512Мб ОЗУ. Место на диске для видеороликов 10Гб (у каждого свой объем). Сервер подключен в сеть.

В Mikrotik DLNA появился недавно и только в ROSv7. Для того чтоб не мучится с установкой  и настройкой ОС, можно скачать виртуальный диск с установленной системой с сайта mikrotik.com и добавить его в ВМ.

Скачивать нужно диск в формате .vhdx.

 

Создаем ВМ, добавляем диск, сетевой адаптер, запускаем.

 

Подключаемся к ВМ через WinBox по MAC-адресу, потому что IP-адрес еще не назначен. Логин admin без пароля.

Настраиваем получение IP-адреса по DHCP.

 

Активируем DLNA-сервер.

Interface – интерфейс, который подключен в локальную сеть.

Path – путь к папке с видео. В данном случае в файлах создана папка VIDEO и видеоролики загружены в нее.

Friendly Name – название сервера в сети.

На этом настройка окончена.

 

Проверяем на клиенте.

К сожалению, сразу виден главный недостаток этого сервера – вместо русских букв видны вопросики в названии видеофайла. RouterOS не поддерживает кириллицу и решить это пока ни как не получится.

Клиент загружает видео быстро, работает без отключений, настройка сервера простая. И поэтому в нашей сети из трех вариантов решено было оставить DLNA на RouterOS. Видеофайлы переименовали латинскими буквами.

 

Подключение ТВ-приставки.

Для приема медиаконтента с DLNA-сервера подходят большинство современных ТВ-приставок. Главное чтоб было наличие сетевого разъема или wifi.

Модели использованных приставок. Blaupunkt B-Stream Box, Xiaomi TV Box (wifi, или USB-LAN переходник т.к. нет сетевого разъема), Z1.

Первоначально в приставку нужно организовать удаленный доступ, чтоб постоянно к ней не бегать. Для этого используется программа AppControl. Можно использовать другие программы удаленного доступа, например droidVNC-NG.  Кому как удобно.

Устанавливаем AppControl на ПК с ОС Windows. Скачать можно тут.

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

 

Вводим IP-адрес приставки и нажимаем подключение.

 

Переходим на вкладку инструменты и жмем на «Управление экраном вашего устройства».

 

При первом подключении может потребоваться установка приложения Scrcpy.

 

Скачиваем, устанавливаем последнюю версию Scrcpy. 

 

Для успешного подключения нужно разрешить отладку по USB в настройках приставки через пульт дистанционного управления.

Иногда еще могут потребоваться какие-то действия, чтоб войти в режим разработчика. Например в Z1 нужно перейти в меню «Об устройстве» и восемь раз нажать на пункт «Сборка».

 

При первом подключении отметить галку «Всегда разрешать отладку с этого компьютера» и подтвердить.

 

Далее появится экран приставки.

 

Альтернативный вариант VNC-сервер.

Скачиваем и устанавливаем программу droidVNC-NG.

 

Можно выполнить некоторые настройки, например включить курсор мыши.

 

Разрешаем приложению удаленный доступ и некоторые другие разрешения.

 

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

 

Вставляем ссылку в браузер на компьютере и далее откроется экран приставки.

 

Так же можно использовать вьювер для подключения к приставке, например Real VNC Viewer.

Устанавливаем, вводим IP-адрес, подтверждаем.

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

​

В приставку нужно установить проигрыватель с возможностью просмотра видео по сети. Это делается через PlayMarket если он присутствует в меню или можно скачать .apk через браузер на компьютере и переместить на приставку, затем запустить установку через файловый менеджер. В данном случае используется VLC плеер.

 

Устанавливаем, запускаем. Выбираем сеть.

 

Выбираем DLNA-сервер и нужную папку, включаем просмотр.

Устанавливаем проигрывание видео по кругу.

Недостаток данного способа – при отключении приставки, например в случае пропадания электропитания, админу нужно подключится на каждую приставку и запустить воспроизведение. Этот недостаток устраняется автоматизацией процесса с помощью макросов программы MacroDroid.

 

Автозапуск воспроизведения VLC при загрузке ТВ-приставки.

Скачиваем, устанавливаем MacroDroid.

Создаем новый макрос. Вводим название.

 

Добавляем триггер – загрузка устройства. Макрос будет выполняться при включении приставки.

 

Добавляем действие – отправить интент.

В интенте вводим данные.

Цель: Activity

Действие:

 

Пакет:

 

Класс:

 

Данные:

 

MME-тип

Подробности тут.

Данные – это ссылка на нужную папку в DLNA-сервере. Чтоб узнать эту ссылку, запускаем VLC проигрыватель, выбираем DLNA-сервер и нажимаем на нужную папку долгим нажатием. Откроются свойства с адресом источника. Переписываем ссылку в блокнот и далее копируем в интент макроса.

 

Сохраняем настроенный макрос. Проверяем, чтоб он был активирован.

 

Перезагружаем приставку. Убеждаемся, что происходит запуск согласно макроса.

Иногда после запуска приставки видео начинает воспроизводиться и останавливается. Достаточно нажать кнопку ОК на пульте и воспроизведение продолжается. Можно добавить это действие в макрос. Что-то типо этого.

Попробовать по очереди эти действия или вместе или какой-то другой подобный вариант.

Если представленный способ организации видеотрансляции не подходит или не получается по каким-либо причинам, то есть более простой вариант без сервера, о котором написано тут.