Персональный "last.fm" на основе Rapsberry Pi

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

В применении RPi я не оригинален: брал его для организации мультимедийного центра, точнее говоря для проигрывания музыки. Фильмы смотрю редко (жаль времени), а музыку можно слушать между делом. Чем не устраивали стандартные компьютерные решения? Шумят и греются. Даже устройство на Intel Atom раскаляется как утюг. Я, видите ли, большой эстет: не могу одновременно наслаждаться музыкой и наносить вред и так уже безнадежно испорченному климату. А RPi потребляет всего пару ватт, не греется, не шумит, т.е. его можно держать постоянно включенным. Это значит, что не нужно загрузок-перезагрузок. Снял с паузы — и музыка полилась с того места, на котором была остановлена.

В качестве проигрывателя был выбран mpd. Адекватнейшая вещь, скажу я вам. Паразитирует на ffmpeg (посему поддерживает все вообразимые форматы), но дело свое (проигрывание музыки) делает очень профессионально. Тут тебе и плейлисты, и поиск по тэгам, и метки. Всё, что положено иметь современному проигрывателю. Поскольку использую я Slackware, пришлось mpd собирать из исходников, благо никаких препятствий для этого нет. Привожу также свой бесхитростный конфиг mpd:

#port				"6600"
music_directory			"~/yadisk/Музыка"
playlist_directory		"~/.mpd/playlists"
db_file				"~/.mpd/mpd.db"
log_file			"~/.mpd/mpd.log"
bind_to_address			"any"
follow_outside_symlinks		"yes"
follow_inside_symlinks		"yes"
sticker_file			"~/.mpd/sticker.db"
password			"[email protected],add,control,admin"

audio_output {
	type			"alsa"
	name			"MPD ALSA"
	device			"hw:0,0"
	format			"44100:16:1"
	mixer_type		"software"
	mixer_device		"default"
	mixer_control		"PCM"
}

#audio_output {
#	type			"httpd"
#	name			"MPD HTTPD"
#	encoder			"vorbis"
#	port			"8067"
#	bitrate			"128"
#	format			"44100:16:1"
#	bind_to_address		"10.10.33.77"
#}


Для управления сим демоном нужен какой-нибудь клиент. В моем случае это Mpdroid, установленный на смартфон. В его лице сбылась вековая обломовская мечта: лежать на диване и переключать музыку, регулировать громкость, читать информацию о текущих композициях, так сказать, легкими движениями пальцев.

Клиентов, впрочем, много на любой вкус. Давайте лучше остановимся на паре особенностей конфигурации сервера. Во-первых, музыку можно «гнать» одновременно на несколько выходных устройств. В моем случае это ALSA, т.е., в конечном итоге, стандартный 3,5 мм аудиовыход. А вот на сокет, позволяющий слушать музыку удаленно через браузер, вывести не получилось: RPi не успевает ее перекодировать, хотя более мощный компьютер легко с этим справляется. Так что что бы не говорили о фантастических возможностях Rapsberry, а чудес не бывает: мощность его весьма ограничена. Поэтому часть конфига про сокет закомментирована.

Самые внимательные заметили, наверно, в конфиге слово yadisk. Да, музыку тяну внаглую, прямо из Интернета, со своего Яндекс-диска. Он у меня 20 Гб, так что репрезентативную выборку из своей 320 Гб музыкальной коллекции вполне вмещает. Почему не задействовал портативный жесткий диск? А я и задействовал поначалу, но он, гад такой, постоянно вращается и разогревается до температуры 40 градусов. Даже когда музыка молчит. Никакими hdtools'ами остановить его не получается. Видимо, mpd держит открытыми какие-то файлы. А ведь одним из начальных условий было свести потребление энергии к минимуму. Вот и решил воспользоваться «облачным» хранилищем, если Яндекс-диск можно так назвать.

Для монтирования Яндекс-диска используется davfs2. Никаких сложностей с ее монтированием не обнаружилось, кроме, разве что, той, что при обесточивании RPi сбрасывает время и после загрузки там всегда 1970-01-01. Сертификат защищенного соединения в связи с этим признается недостоверным и автомонтирования не происходит. Поэтому перед монтированием следует синхронизировать время по сети с каким-нибудь ntp-сервером.

Вот, вроде, и всё. Думаю, изложенных здесь и в предыдущих материалах сведений должно хватить для того, чтобы любой желающий линуксоид собрал что-то подобное.

Комментарии (2)

RSS свернуть / развернуть
+
0
время скриптом синхронизируется при старте чтоль?
avatar

Sergei_T

  • 16 апреля 2013, 10:26
+
0
Да, там много чего в стартовом скрипте делается. Постараюсь сюда его тоже выложить для памяти.
avatar

yababay

  • 16 апреля 2013, 13:03

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.