Эта тестовая система стала решением для задачи «сделать трехзонный мультирум за разумный деньги на тихом оборудовании».
Тихое оборудование — это ключевое понятие. В квартире не предусмотрено место для для шумных устройств.
Еще одним пожеланием было было использовать для выбора фильмов — сериалов — музыки не папки с файлами, а полноценную медиа библиотеку. С делением по жанрам, артистам, режиссерам. И с выбором произведений по постерам — обложкам.
Одна зона (гостиная) требовала максимально высокого качества воспроизведения видео и аудио, две другие были не столь критичны к форматам аудио-видео контента.
Систему хотелось построить из минимального числа компонентов, поэтому был выбран небольшой безвентиляторный NAS c функциями медиаплеера — QNAP HS-251.
Устройство не отличается супер производительностью дисковой подсистемы, но ее, как выяснилось в результате тестирования, вполне хватает для подобной задачи.
А вот интерфесов в нем почти на любой вкус:
HDMI разъемов имеется два, но второй пока использовать нельзя. Предназначен он, на сколько удалось понять, для работы в будущих версиях firmware.
Для первой зоны (гостиной) использовался встроенный XBMC/Kodi плеер, известный своей «всеядностью». Его последним версиям удается проигрывать даже исключительно «криво» подготовленное видео.
HDMI кабель из NAS был включен в ресивер, из ресивера — в телевизор.
На NAS был выбран автологин и автостарт Kodi.
И удаленное управление для Kodi активировано, чтобы можно было по IP команды посылать.
Команды управления на телевизор, ресивер и NAS посылались с универсальных пультов и планшетов через систему Savant.
При желании можно и без нее, только пультами надо будет чуток жонглировать :-)
На экране телевизора получаем хорошо знакомую всем, имевшим дело с XBMC плеером, картинку:
В процессе проигрывания FullHD фильмов из файлов по 20-30 гигабайт какой-либо заметной нагрузки на процессор не создавалось.
В настройках плеера было поставлено «пропускать все форматы аудио и видео на выход без перекодирования». С аудио потоками самых различных типов, вплоть до 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 надо рассказать, что у вас и где лежит:
Хотя выглядит процедура настройки не очень просто, но выполняется она один раз, после чего Plex сам разбирается с файлами, которые вы загружаете в соответствующие папки.
Загружать медиа файлы можно любым доступным образом, в том числе с использованием функции синхронизации между NAS (если у вас больше одного NAS, и вы хотите, чтобы контент был везде синхронизирован), или с помощью встроенного торент клиента.
Экран выбора сериалов с Apple TV.
Экран выбора фильма по жанру.
В Plex/PlexConnect возможно перекодирование видео «на лету». Но такое транскодирование серьезно загружает процессор NAS. Для модели HS-251 не стоит транскодировать файлы разрешением больше чем 720p.
Да и при этом нагрузка на процессор NAS получается изрядная:
Для пробы я запускал транскодирование через Plex на существенно более мощном QNAP TS-870. Даже ему было не просто, хотя все и работало:
Возможноые проблемы:
— если название фильма набрано транслитом (русские слова английскими буквами), фильм распознан не будет. Apple TV покажет его как прямоугольник с картинкой из фильма и подписью — именем файла. Можно отредактировать подпись и вставить картинку через Plex Server, но удобнее дать название по-английски.
— не всегда правильно проигрываются аудио дорожки. В некоторых случаях неправильного кодирования файлов вместо русской дорожки идет английская, хотя в файле есть обе. В моем случае это не проблема, но некоторые напрягаются :-)
— иногда при включении Apple TV оно показывает сообщение, что не подключено к Интернет. Надо выйти на начальную страницу Apple TV, а потом вернуться в раздел Трейлеры.
Выводы
Для меня это решение с минимальной степенью «самодельности». Готовый бесшумный NAS, готовые Apple TV. Включил. настроил, работает.
Ограничения есть, но, как говорят программисты, «это не баг, это фича».
Можно ли решить задачу дешевле — можно, если все собирать самостоятельно. Получится ли столь же элегантно и надежно — сомневаюсь.
Сахаров Александр
Автор: alsakharov