Как стать автором
Обновить

Бесшумный NAS как центр небольшой аудио-видео мультирум системы

Время на прочтение 5 мин
Количество просмотров 19K
Эта тестовая система стала решением для задачи «сделать трехзонный мультирум за разумный деньги на тихом оборудовании».

Тихое оборудование — это ключевое понятие. В квартире не предусмотрено место для для шумных устройств.
Еще одним пожеланием было было использовать для выбора фильмов — сериалов — музыки не папки с файлами, а полноценную медиа библиотеку. С делением по жанрам, артистам, режиссерам. И с выбором произведений по постерам — обложкам.
Одна зона (гостиная) требовала максимально высокого качества воспроизведения видео и аудио, две другие были не столь критичны к форматам аудио-видео контента.

Систему хотелось построить из минимального числа компонентов, поэтому был выбран небольшой безвентиляторный NAS c функциями медиаплеера — QNAP HS-251.

HS-251

Устройство не отличается супер производительностью дисковой подсистемы, но ее, как выяснилось в результате тестирования, вполне хватает для подобной задачи.
А вот интерфейсов в нем почти на любой вкус:

image

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

Для первой зоны (гостиной) использовался встроенный XBMC/Kodi плеер, известный своей «всеядностью». Его последним версиям удается проигрывать даже исключительно «криво» подготовленное видео.
HDMI кабель из NAS был включен в ресивер, из ресивера — в телевизор.

На NAS был выбран автологин и автостарт Kodi.

И удаленное управление для Kodi активировано, чтобы можно было по IP команды посылать.
Команды управления на телевизор, ресивер и NAS посылались с универсальных пультов и планшетов через систему Savant.

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

На экране телевизора получаем хорошо знакомую всем, имевшим дело с XBMC плеером, картинку:

image

В процессе проигрывания FullHD фильмов из файлов по 20-30 гигабайт какой-либо заметной нагрузки на процессор не создавалось.

image

В настройках плеера было поставлено «пропускать все форматы аудио и видео на выход без перекодирования». С аудио потоками самых различных типов, вплоть до DTS Master, успешно разбирался ресивер.

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

Выбран был Apple TV. Главным образом из-за хороших возможностей работы с медиа каталогами. Выбирать фильмы по названиям файлов, разыскивая их по папкам, не хотелось никому.

Давно известен способ «накормить» Apple TV контентом с локального хранилища. И зовут этот способ Plex / PlexConnect.

Для начала на NAS был установлен Plex Server. Но не из репозитория QNAP (там часто лежит не последняя версия), а из plex.tv/downloads
Следующим шагом требуется установить Python. Его версия 2.7 лежит в репозитории QNAP. Python нужен для работы PlexConnect, который работает шлюзом между Plex Server и Apple TV.

Наконец, наступает самая интересная процедура — установка PlexConnect.
Для его работы нужно свободный порт 80. По этому порту Apple TV начинает общение с PlexConnect, «думая», что это сервер от Apple. Порт 80 по умолчанию занят встроенным в NAS web сервером. Его можно либо отключить, либо передвинуть на другой порт. Это именно отдельный web сервер, а не административный web интерфейс управления NAS.

Если все прошло успешно, можно скопировать на NAS папку со скриптами PlexConnect, а потом зайти через SSH в командную строку Linux на NAS, добраться до папки, в которую положили PlexConnect, и сгенерировать сертификаты безопасности.

В директорию PlexConnect/assets/certificates можно сгенерировать сертификаты следующими командами:

openssl req -new -nodes -newkey rsa:2048 -out trailers.pem -keyout trailers.key -x509 -days 7300 -subj "/C=US/CN=trailers.apple.com”
openssl x509 -in trailers.pem -outform der -out trailers.cer && cat trailers.key >> trailers.pem

И, наконец, попробовать запустить PlexConnect вручную:

python PlexConnect.py

Возможно, потребуется прописать путь к скрипту PlexConnect.

Результатов может быть два — либо заработает, либо нет.
Если заработает, то система буде ждать обращений от Apple TV, обрабатывать их, и либо отдавать информацию по состоянию медиа библиотеки, либо получать команды на проигрывание файлов, либо пересылать запросы на сервера Apple.

А если не заработает, то вы получите сообщение, что же не сложилось.
Чаще всего это будет либо «нет сертификатов» — это если вы их сгенерировать забыли, либо — «порт 80 занят».

Последнее сообщение самое неприятное. Надо понять, что за сервис занимает этот порт и выключить этот сервис. Самое простое, если вы забыли отключить web сервер на NAS. Хуже, если он уже отключен, а порт все равно занят.

Как было обнаружено на forums.plex.tv, чаще всего запущен процесс Qthttpd.

Почему он все равно запускается на некоторых моделях NAS, когда web сервер выключен, у меня ответа нет.
Если его «убить» вручную командой
killall Qthttpd
он чаще всего перезапускается автоматически через минуту — другую.

Важно успеть запустить PlexConnect до того, как этот процесс перезапустится.
Я не нашел какой-то закономерности, на каких моделях NAS проявляется эта проблема, но она бывает.

Решением проблемы может быть использование скрипта для автостарта PlexConnect, написанного участниками форума plex.tv:
**********************autorun.sh*********************************************
#!/bin/sh
killall Qthttpd
/usr/bin/python /root/Library/PlexConnect/PlexConnect.py -d
*****************************************************************************
Понятно, что пути к файлам надо поставить свои.

Чтобы Apple TV начало работать с Plex, его надо настроить, указав в качестве DNS сервера адрес NAS:
Настройки->Сеть->Ethernet (если Apple TV работает через Ethernet)->DNS (вручную)

Следующим шагом надо установить сертификат безопасности. Это делается напрямую с Apple TV, без привлечения какого-либо стороннего софта:

Настройки->Основные->Отсылать данные в Apple (Setup / General / Send Data to Apple)

Здесь должно стоять «НЕТ»
Далее, выделив эту опцию с помощью «родного» пульта, нажимаем кнопку Play (не выбор, а именно Play).
Apple TV предложить создать новый профиль. Соглашаемся и указываем следующий URL
trailers.apple.com/trailers.cer

После этого Apple TV сможет устанавливать защищенное соединение с нашим Plex Server.

Plex имеет ограничения по воспроизведению многоканального звука. Как пишут в форумах, no DTS from MP4/MKV files, and no DD from MKV.

Если все прошло успешно, то после выбора раздела Трейлеры вы попадете на экран выбора материалов (фильмы, сериалы, музыка и т.д.). Понятно, что до этого самому Plex Server надо рассказать, что у вас и где лежит:

image

Хотя выглядит процедура настройки не очень просто, но выполняется она один раз, после чего Plex сам разбирается с файлами, которые вы загружаете в соответствующие папки.

Загружать медиа файлы можно любым доступным образом, в том числе с использованием функции синхронизации между NAS (если у вас больше одного NAS, и вы хотите, чтобы контент был везде синхронизирован), или с помощью встроенного торрент-клиента.

Экран выбора сериалов с Apple TV.

image

Экран выбора фильма по жанру.

image

В Plex/PlexConnect возможно перекодирование видео «на лету». Но такое транскодирование серьезно загружает процессор NAS. Для модели HS-251 не стоит транскодировать файлы разрешением больше чем 720p.
Да и при этом нагрузка на процессор NAS получается изрядная:

image

Для пробы я запускал транскодирование через Plex на существенно более мощном QNAP TS-870. Даже ему было не просто, хотя все и работало:

image

Возможные проблемы:

— если название фильма набрано транслитом (русские слова английскими буквами), фильм распознан не будет. Apple TV покажет его как прямоугольник с картинкой из фильма и подписью — именем файла. Можно отредактировать подпись и вставить картинку через Plex Server, но удобнее дать название по-английски.

— не всегда правильно проигрываются аудио дорожки. В некоторых случаях неправильного кодирования файлов вместо русской дорожки идет английская, хотя в файле есть обе. В моем случае это не проблема, но некоторые напрягаются :-)
— иногда при включении Apple TV оно показывает сообщение, что не подключено к Интернет. Надо выйти на начальную страницу Apple TV, а потом вернуться в раздел Трейлеры.

Выводы
Для меня это решение с минимальной степенью «самодельности». Готовый бесшумный NAS, готовые Apple TV. Включил. настроил, работает.

Ограничения есть, но, как говорят программисты, «это не баг, это фича».

Можно ли решить задачу дешевле — можно, если все собирать самостоятельно. Получится ли столь же элегантно и надежно — сомневаюсь.

Сахаров Александр
Теги:
Хабы:
+6
Комментарии 33
Комментарии Комментарии 33

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн