Содержание статьи
Последняя версия XBMC получила официальную поддержку Raspberry Pi, и для меня это стало хорошим поводом поделиться личным опытом использования этой машинки в качестве медиацентра. Думаю, что и ты останешься доволен, но для этого нужно рассмотреть несколько нюансов — в частности выбор аксессуаров и конкретного дистрибутива.
Суть проблемы
Чтобы нафаршировать телевизор мультимедийным функционалом, есть несколько путей. Можно купить так называемый умный телевизор. Однако на сегодняшний день производители просят за такие опции серьезные деньги, не предлагая при этом ничего поражающего сознание. Можно купить медиаплеер, но тогда столкнешься либо с какой-нибудь экзотичной прошивкой от производителя, либо с Android, а приятного в этом мало. Кроме того, хотя флешкообразные Android-компьютеры и стали относительно популярны, их качество не слишком высоко — особенно часто пользователи жалуются на плохой Wi-Fi и отсутствие Ethernet (что для просмотра HD-контента недопустимо). Поэтому до сих пор энтузиасты предпочитали собирать собственный HTPC из mini-ITX-материнки и водружать на него XBMC. Но ведь в жилую комнату хочется поставить что-то тихое и маленькое, не так ли? Вот тут на помощь и приходит Raspberry Pi.
Казалось бы, RPi разрабатывался как образовательный инструмент и игрушка для железячников — энтузиастов от мира робототехники, при чем тут медиаплееры? Тем не менее многие используют малютку именно по такому назначению, и неспроста. В основе компьютера лежит чип Broadcom BCM2835, который изначально разрабатывался как решение для мультимедиа (если не веришь, можешь почитать на сайте производителя: goo.gl/VBAaX). По заявлениям создателей, мощность процессора невелика и находится на уровне 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. Фактически на один контроллер в Raspberry повешено два порта и адаптер Ethernet. Поэтому медиаплеер не получится использовать для закачки торрентов — сеть будет постоянно воевать с диском в контроле за пропускной способностью, из-за чего все будет тормозить, и устройство не сможет стабильно качать на полной скорости.
Тем не менее, как мы сейчас сможем увидеть, сообществу разработчиков удалось предложить что-то, с лихвой компенсирующее описанные недостатки.
Что потребуется
Как известно, в комплекте 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 и другие популярные хостинги, выбирать файлы из медиатеки напрямую, а также пользоваться экранной клавиатурой.
Отдельно стоит сказать про Wi-Fi-адаптеры. Строго говоря, если ты собираешься смотреть 1080p, лучше использовать провод, так как USB-адаптеры обычно не тянут нужную скорость. Но если ты не настолько требователен или же тянуть кабель — не вариант, выбери любой из протестированных адаптеров (опять-таки не забудь глянуть в вики). Я использую TP-LINK TL-WN725N, который обошелся мне в 270 рублей и завелся совершенно без напильника. Для 720p такой адаптер вполне подойдет.
Таким образом, моя конфигурация обошлась чуть меньше чем в 4 тысячи рублей.
Выбор платформы
Есть три основных дистрибутива: Raspbmc, XBian и OpenELEC. Принципиально отличается в данном случае последний — это традиционный дистрибутив для встраиваемых систем, поэтому работа с ним напоминает альтернативные прошивки для роутеров. Выбор дополнительного ПО ограничен, и ковыряться во внутренностях будет не очень комфортно. С другой стороны, это более стабильное решение.
Выбор между Raspbmc и XBian уже более сложный. Оба являются полноценными дистрибутивами, оба имеют схожий функционал, но отличаются философией. Raspbmc — аккуратно собранный XBMC поверх Raspbian, из которого было выброшено все лишнее. XBian — проект, фокусирующийся на bleeding edge, что приводит к модификации отдельных пакетов. Советую попробовать оба, но лично я выбрал 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.
Убираем ненужное
Для последующих трюков потребуется вернуться в Raspbmc Settings и посмотреть раздел сервисов: System Configuration → Service Management.
Во-первых, нам понадобится cron. Во-вторых, в зависимости от твоей конфигурации сети можно отключить сервер Samba и FTP, хотя ресурсов это, конечно, много не высвободит.
Далее подключимся к нашему медиацентру по SSH. Логин — pi, пароль — raspberry.
Дополнительные источники плагинов
По умолчанию в XBMC включен только один репозиторий. Чтобы добавить сторонний, как правило, нужно просто подсунуть соответствующий файл. Например, есть репозиторий Seppius, специализирующийся на аддонах для русскоязычного контента (различных видеосервисов и приложений телеканалов), — его файл можно скачать тут: goo.gl/CaFVQ. Увы, качество многих аддонов невысоко, но что-то интересное найти можно.
Beets
Когда выводишь музыкальный плеер на большой экран, корявые теги и отсутствие обложки начинают заметно раздражать. А прописывать их вручную — геморройно. Для таких случаев придуман beets — как называет его автор, инструмент организации аудиотеки для маниакально одержимых аудиофилов. Установка проходит аналогично тому, что мы делали с 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 будет записывать все изменения прямо в файлы, а не копировать файлы с новыми тегами в отдельную папку. За дальнейшими опциями проследуй в документацию (goo.gl/VM9Ps). Для того чтобы начать прописывать теги, можно вбить:
beet import /media/HD/Music/
По умолчанию процесс ручной. Система опрашивает MusicBrainz для каждого альбома, ранжирует варианты и предлагает их пользователю. Поэтому запасись терпением и временем. Можно поизучать опции автоматизации, их очень и очень много.
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 и примеры конфигураций. При желании систему можно постоянно расширять дополнительными правилами, получая все более умную качалку.
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.