Получаем функциональный, компактный и тихий медиацентр

Последняя версия XBMC получила официальную поддержку Raspberry Pi, и для меня это стало хорошим поводом поделиться личным опытом использования этой машинки в качестве медиацентра. Думаю, что и ты останешься доволен, но для этого нужно рассмотреть несколько нюансов — в частности выбор аксессуаров и конкретного дистрибутива.

Суть проблемы

Чтобы нафаршировать телевизор мультимедийным функционалом, есть несколько путей. Можно купить так называемый умный телевизор. Однако на сегодняшний день производители просят за такие опции серьезные деньги, не предлагая при этом ничего поражающего сознание. Можно купить медиаплеер, но тогда столкнешься либо с какой-нибудь экзотичной прошивкой от производителя, либо с Android, а приятного в этом мало. Кроме того, хотя флешкообразные Android-компьютеры и стали относительно популярны, их качество не слишком высоко — особенно часто пользователи жалуются на плохой Wi-Fi и отсутствие Ethernet (что для просмотра HD-контента недопустимо). Поэтому до сих пор энтузиасты предпочитали собирать собственный HTPC из mini-ITX-материнки и водружать на него XBMC. Но ведь в жилую комнату хочется поставить что-то тихое и маленькое, не так ли? Вот тут на помощь и приходит Raspberry Pi.

Корпус для медиацентра точно понадобится
Корпус для медиацентра точно понадобится

Казалось бы, RPi разрабатывался как образовательный инструмент и игрушка для железячников — энтузиастов от мира робототехники, при чем тут медиаплееры? Тем не менее многие используют малютку именно по такому назначению, и неспроста. В основе компьютера лежит чип Broadcom BCM2835, который изначально разрабатывался как решение для мультимедиа (если не веришь, можешь почитать на сайте разработчика. По заявлениям разработчиков, мощность процессора невелика и находится на уровне Pentium II 300, но вот графический процессор удался — ты наверняка читал про то, как на Raspberry играют в Quake 3. Производитель сравнивает его мощность с первым Xbox. В общем, не случайно точно такой же чипсет используется в популярном за рубежом плеере Roku и ряде других аналогичных продуктов. Видеочип поддерживает аппаратное декодирование h264, а также кодеки MPEG-2 и VC-1. Правда, два последних кодека требуют платной лицензии, придется заплатить 170 рублей. Неприятное упущение — отсутствует аппаратная поддержка аудиокодека DTS (несмотря на то что разработчики Raspberry уже написали нужный код, договориться о лицензии пока не удается). Однако беглый поиск дает понять, что декодер DTS в принципе редко встречается в маленьких плеерах. Если у тебя нет телевизора или ресивера, который мог бы выполнить декодирование сам, то легко нагуглить решение для перекодирования звука. Спойлер: лучше все-таки искать контент с AC3.

На этом плюшки не заканчиваются. У Raspberry есть особенность, которой может позавидовать любой неттоп и подавляющее большинство медиаплееров, — это поддержка технологии CEC (Consumer Electronics Control). Это спецификация для HDMI, позволяющая использовать пульт телевизора для управления подключенными устройствами. Большинство телевизоров, выпущенных за последние пару лет, поддерживают эту технологию, но каждый производитель называет ее по-своему. В случае моего Philips это EasyLink, у Samsung — Anynet+, у Sony — BRAVIA Link/Sync и так далее.

Помимо HDMI, поддерживаются и аналоговые выходы на видео и звук. Аналоговое видео вряд ли кому-то нужно в нашем контексте, а вот с аналоговым звуком пока ситуация неприятная. Дело в том, что из-за ошибок в прошивке на момент написания статьи качество звука отвратительно: например, в начале и конце каждого трека издается мощный щелчок (единственный выход — использовать gapless-воспроизведение или покупать аудиокарту с интерфейсом USB).

Другой недостаток связан с реализацией USB. Фактически на один контроллер в Raspberry повешено два порта и адаптер Ethernet. Поэтому медиаплеер не получится использовать для закачки торрентов — сеть будет постоянно воевать с диском в контроле за пропускной способностью, из-за чего все будет тормозить, и устройство не сможет стабильно качать на полной скорости. Тем не менее, как мы сейчас сможем увидеть, сообществу разработчиков удалось предложить что-то, с лихвой компенсирующее описанные недостатки.

"XBMC сразу после запуска"
XBMC сразу после запуска

Что потребуется

Как известно, в комплекте Raspberry Pi нет ничего, кроме самого компьютера, поэтому сразу стоит озвучить простой факт: наш медиаплеер не будет стоить 35 долларов. Как минимум потому, что следует учесть доставку. Между прочим, в Москве есть несколько интернет-магазинов, торгующих Raspberry, — там он обойдется примерно в 2400 рублей, но зато получить можно в течение пары дней, а не нескольких недель. Кроме того, вместе с доставкой даже покупка у официальных дистрибьюторов выльется, скорее всего, в близкие деньги, причем еще и с дополнительным геморроем (и немалым). В общем, рекомендую обратиться к услугам посредников — их легко найти в Яндекс.Маркете. Самый ответственный момент — выбор блока питания. RPi теоретически может использовать почти любой зарядник от смартфона или планшета с разъемом microUSB, но на практике подойдет только адаптер на 5 вольт и хотя бы 1 ампер. Если адаптер не дает заявленного результата, Raspberry будет работать нестабильно. Со списком протестированных пользователями адаптеров можно ознакомиться в полуофициальном вики. Лично я использовал зарядник от смартфона HTC.

Другой важный момент — карточка SD. В принципе, моя карточка Transcend 10-го класса на 32 гигабайта обошлась рублей в 800, что сравнительно недорого. Для нашего применения достаточно и 4 гигабайт, но вот брать более низкий класс не рекомендую — это скажется на отзывчивости интерфейса и общей производительности. Кроме того, стоит признать, что SD-карты не рассчитаны на такую нагрузку, поэтому лучше брать что-то от известного производителя. Впрочем, можно использовать в качестве основного раздела флешку, но для загрузки все равно понадобится карточка.

Также советую потратиться на корпус (у перекупщиков он обойдется рублей в 400). Конечно, так наш медиаплеер потеряет свой «гиковский» образ, но зато плата будет защищена. Как минимум нужно учесть, что при подключении-отключении кабелей и флешек вполне реально неудачно упереться пальцем в какой-нибудь участок голого RPi и что-нибудь там поломать.

Еще нам понадобится некое хранилище файлов. Подключать жесткий диск, на мой взгляд, довольно бессмысленно. Во-первых, Raspberry, скорее всего, не сможет питать внешний хард по USB и придется искать вариант с дополнительным источником питания. Во-вторых, как уже говорилось, RPi не сможет одновременно быть и медиаплеером, и торрентокачалкой. Лучше всего подойдет любой NAS. Воспользовавшись случаем, советую платформу Kirkwood, которая шикарно работает под ArchLinux, без всяких там optware.

Дополнительные аксессуары. С пультом можно разобраться по-разному. Самое простое — использовать пульт от телевизора. Если по какой-то причине это не подходит, то можно купить специальный пульт для HTPC с USB-приемником. Альтернативно можно соорудить ИК-приемник и подключить его к разъему GPIO — это для любителей DIY. Ну и наконец, самое функциональное решение — поставить пульт на смартфон или планшет. Для Android доступен официальный пульт от XBMC, а также просто отличный Yatse. С его помощью, например, можно посылать в XBMC ссылки на YouTube и другие популярные хостинги, выбирать файлы из медиатеки напрямую, а также пользоваться экранной клавиатурой.

Yatse.png
Yatse по праву называют лучшим пультом для Android

Отдельно стоит оговорить Wi-Fi-адаптеры. Строго говоря, если ты собираешься смотреть 1080p, лучше использовать провод, так как USB-адаптеры обычно не тянут нужную скорость. Но если ты не настолько требователен или же тянуть кабель не вариант, выбери любой из протестированных адаптеров (опять-таки не забудь глянуть в вики). Я использую TP-LINK TL-WN725N, который обошелся мне в 270 рублей и завелся совершенно без напильника. А если шара файлов работает не на Samba, а на NFS, то с переменным успехом можно смотреть и 1080p.

Таким образом, моя конфигурация обошлась чуть меньше чем в 4 тысячи рублей.

Raspberry доступны все плагины XBMC
Raspberry доступны все плагины XBMC
Здесь все самые важные настройки: разгон, сеть, ключи кодеков MPEG2 и VC1 и многое другое
Здесь все самые важные настройки: разгон, сеть, ключи кодеков MPEG2 и VC1 и многое другое
Выбор платформы

Есть три основных дистрибутива: Raspbmc, XBian и OpenELEC. Принципиально отличается в данном случае последний — это традиционный дистрибутив для встраиваемых систем, поэтому работа с ним напоминает альтернативные прошивки для роутеров. Выбор дополнительного ПО ограничен, и ковыряться во внутренностях будет не очень комфортно. С другой стороны, это более стабильное решение.

Выбор между Raspbmc и XBian уже более сложный. Оба являются полноценными дистрибутивами, оба имеют схожий функционал, но отличаются философией. Raspbmc — аккуратно собранный XBMC поверх Raspbian, из которого было выброшено все лишнее. XBian — проект, фокусирующийся на bleeding edge, что приводит к модификации отдельных пакетов относительно стандартного Raspbian. Советую попробовать оба, но лично я выбрал Raspbmc — более старый проект, к тому же использующий пакетную базу Raspbian, поддерживаемую огромным сообществом.

Установка и настройка Raspbmc

Здесь все до боли прямолинейно. Для пользователей Windows доступен специальный установщик. Пользователям *nix и OS X доступен простой скрипт на Python:

curl -O http://svn.stmlabs.com/svn/raspbmc/testing/installers/python/install.py chmod +x install.py

При установке доступно несколько опций: можно выбрать установку на флешку (с загрузочным разделом на карточке) и прописать настройки сети. На последнее стоит обратить внимание, если планируется использовать Wi-Fi. Дело в том, что сама установка будет вестись полностью автономно: как только ты вставишь готовую карточку в Raspberry и подключишь машинку к питанию, система подсоединится к серверу и начнет качать необходимые файлы и проводить настройку. Примерно через двадцать минут ты получишь готовую систему и стартовый экран XBMC. При первом запуске система будет заметно подтормаживать — дело в том, что на этом этапе в фоне будут загружаться стандартные плагины. Поэтому лучше подождать еще минут пятнадцать, прежде чем предпринимать какие-то дальнейшие шаги. И после этого начинается самое интересное.

Немного поговорим о том, на что стоит обратить внимание в свежеустановленном XBMC. По умолчанию в разделе приложений доступна утилита для выставления настроек, специфичных для Raspberry, Raspbmc Settings. Здесь выставляются настройки сети, параметры обновлений и многое другое.

Стоит обратить внимание на параметры разгона процессора. Как известно, RPi можно разгонять до 1 гигагерца, и, по словам разработчиков, это не навредит чипу. Однако работа карточки при этом может быть нестабильной, и при максимальном разгоне очень велика вероятность, что целостность данных будет нарушена и система просто перестанет загружаться. Придется все переустанавливать. Чтобы этого избежать, лучше использовать более щадящие режимы разгона либо устанавливать систему на флешку.

В остальном — работа с XBMC довольно очевидна. Процедуры установки плагинов, добавления файлов в библиотеки и выбора настроек, думаю, описывать не стоит. Перейдем к более интересным вещам.

Лезем под капот: несколько интересных трюков для медиацентра


AirPlay в XBMC

AirPlay — это стандарт для потокового вещания аудио и видео на устройствах Apple. В последней версии XBMC была добавлена начальная поддержка этой технологии, но по умолчанию она выключена. Чтобы включить ее, зайди в System -> Services -> Airplay. Теперь ты сможешь передавать таким образом музыку с яблочных устройств. Видео тоже работает, но крайне нестабильно. Пользователи Android могут использовать для AirPlay плеер DoubleTwist.

Дополнительные источники плагинов

По умолчанию в XBMC включен только один репозиторий. Чтобы добавить сторонний, как правило, нужно просто подсунуть соответствующий файл. Например, есть репозиторий Seppius, специализирующийся на аддонах для русскоязычного контента, — его файл можно скачать тут. Увы, качество многих аддонов невелико, но что-то интересное найти можно.

Убираем ненужное

Для последующих трюков потребуется вернуться в Raspbmc Settings и посмотреть раздел сервисов: System Configuration -> Service Management. Во-первых, нам понадобится cron. Во-вторых, в большинстве случаев можно отключить сервер Samba и FTP, хотя ресурсов это, конечно, много не высвободит. Далее подключимся к нашему медиацентру по SSH. Логин — pi, пароль — raspberry.

Flexget

Flexget

Как уже говорилось, использовать Raspberry при работающем XBMC (да и вообще) для закачки торрентов — неблагодарное занятие. Тем не менее, если NAS ставить не хочется, можно пойти на некоторые хитрости. Flexget — это система, способная автоматизировать поиск торрентов, формировать очередь для Transmission и делать все это по cron’у. Таким образом, запускать поиск серий можно в ночное время. Установка проста:

sudo apt-get install python-pip sudo pip install flexget sudo easy_install transmissionrpc

Про возможности FlexGet можно было бы написать огромную статью. С его помощью можно задавать любые параметры раздач, включая качество, размер, релиз-группу. Доступна интересная интеграция с IMDB: если занести фильм в список для просмотра (watchlist) на сервисе, FlexGet добавит его в свою очередь и пойдет искать при первой возможности. Заинтересовавшимся стоит обратить внимание на официальный cookbook и примеры конфигураций. При желании систему можно постоянно расширять дополнительными правилами, получая все более умную качалку. Однако FlexGet с его конфигом на YAML — это Emacs мира качалок, и, чтобы пользоваться им, нужно быть готовым к чтению документации (хотя это и не так сложно). Более простое решение — CouchPotato, но и возможностей у этой тулзы значительно меньше.

Beets

Alt text

Когда выводишь музыкальный плеер на большой экран, корявые теги и отсутствие обложки начинают заметно раздражать. Для таких случаев придуман beets — как называет его автор, инструмент организации аудиотеки для маниакально одержимых аудиофилов. В основе программы лежит довольно популярная и мощная библиотека mutagen, часто используемая в таких сценариях. Установка проходит аналогично тому, что мы делали с FlexGet:

sudo apt-get install python-pip sudo pip install beets

После этого нужно провести начальную конфигурацию. Создадим нужные файлы:

mkdir -p ~/.config/beets touch ~/.config/beets/config.yaml mkdir -p ~/.data/beets/ touch ~/.data/beets/musiclibrary.blb  nano ~/.config/beets/config.yaml

Базовый конфиг можно сделать, например, такой:

directory: /media/HD/Music/ # путь до медиатеки library: ~/.data/beets/musiclibrary.blb  import: move: yes copy: no

В таком случае beets будет записывать все изменения прямо в файлы, а не копировать файлы с новыми тегами в отдельную папку. За дальнейшими опциями проследуй в документацию. По словам автора, вариантов конфигураций «примерно 6 миллионов». Наконец, для того, чтобы начать прописывать теги, можно тупо вбить:

beet import /media/HD/Music/

Сразу предупреждаю: по умолчанию процесс ручной. Система опрашивает MusicBrainz для каждого альбома, ранжирует варианты и предлагает их пользователю. Поэтому запасись терпением и временем. Можно поизучать опции автоматизации, их очень и очень много.

MPD

MPD

Увы, встроенный функционал XBMC для работы с музыкой оставляет желать лучшего. Плагин работает очень медленно, и обновление библиотеки занимает очень много времени. Лучше делегировать задачу MPD — очень продвинутому музыкальному решению, хорошо знакомому хардкорным юниксоидам. MPD — это настоящий музыкальный сервер. В его ведомстве будет находиться поддержание медиатеки. Если заниматься тегами тебе не хочется, то поиск арта и текстов песен также можно отдать на откуп MPD. В свою очередь, в XBMC доступен плагин, позволяющий подключиться к MPD. Точно так же к твоему серверу сможет подключиться любое устройство в доме — например, для Android доступен отличный плеер MPDroid.

Установим наш сервер и сделаем простейшую конфигурацию:

sudo apt-get install mpd cp /usr/share/doc/mpd/mpdconf.example ~/.mpdconf mkdir -p ~/.mpd/playlists touch ~/.mpd/{database,log,pid,state} nano ~/.mpdconf

Укажем созданные служебные файлы в конфиге. Для этого нужно изменить следующие строчки:

music_directory  "/media/HD/Music" playlist_directory "/home/USER/.mpd/playlists" db_file  "/home/USER/.mpd/database" log_file "/home/USER/.mpd/log" pid_file "/home/USER/.mpd/pid" state_file "/home/USER/.mpd/state"

Как только ты закончишь, можешь протестировать, набрав в консоли mpd. После этого вбей настройки в плагин XBMC.

Больше статей о RPi

Тема майского номера «Хакера» — Raspberry Pi. Мы взяли интервью у Эбена Аптона, одного из создателей RPi и сделали на базе мини-компьютера систему видеонаблюдения и шпионскую закладку, которая может незаметно собирать данные из исследуемой сети.

Оставить мнение

Check Also

SHA 2017. Репортаж с самого яркого хакерского ивента этого лета

Still Hacking Anyway 2017 — это фестиваль, на котором собрались четыре тысячи хакеров со в…