Продолжая цикл записей про домашний сервер на базе Linux, рассмотрим вариацию с созданием, на его базе, музыкального центра.
В качестве плеера используем mpd, благодаря своей клиент-серверной архитектуре он подходит для таких целей идеально. Серверная часть работает как демон, воспроизводит музыку и принимает управляющие команды от клиентского приложения. При этом клиентом может быть графическое GTK/Qt приложение, консольная утилита или веб-интерфейс (есть даже плагин для firefox). Для использования с консольным сервером наиболее пригоден последний вариант — веб-интерфейс, он позволяет управлять музыкальным центром как с ПК, так и с любого мобильного устройства имеющего браузер и подключение к домашней WiFi-сети.
Помимо аудио-вывода, настроим сервер потокового мультимедиа на базе icecast, чтобы была возможность прослушивая на удаленных устройствах.
Установим требуемые пакеты:
root@localhost:~$ apt-get install mpd mpc libapache2-mod-php5 php5-json icecast2
Все настройки mpd расположены в конфигурационном файле /etc/mpd.conf:
music_directory "/media/music" playlist_directory "/media/playlists" db_file "/var/lib/mpd/db" bind_to_address "localhost" port "6600" default_permissions "read,add,control,admin" audio_output { type "alsa" name "My ALSA Device" device "hw:0,0" format "44100:16:2" mixer_device "default" mixer_control "PCM" mixer_index "0" } audio_output { type "shout" name "My Shout Stream" host "localhost" port "8000" mount "/stream.ogg" password "secret" bitrate "128" protocol "icecast2" user "source" description "My Stream" timeout "2" } mixer_type "software" filesystem_charset "UTF-8"
В приведенной конфигурации управление mpd возможно только с локального компьютера, именно поэтому разрешены все команды без пароля. После указания music_directory попросим mpd принудительно обновить базу данных аудио-файлов:
root@localhost:~$ invoke-rc.d mpd stop root@localhost:~$ mpd --create-db
Пока база создается, скачаем и установим веб-интерфес для mpd. К сожалению проект pitchfork мертв, из живых мне больше всего понравился ExtJS MPD.
root@localhost:~$ cd /var/www root@localhost:/var/www$ wget http://crsw.dk/Projects/Mpd/ExtMPD_1.3.tgz root@localhost:/var/www$ tar xfv ExtMPD_1.3.tgz root@localhost:/var/www$ chmod -R www-data: ExtMPD
Этого достаточно чтобы открыв в браузере http://<ip сервера>/ExtMPD/ увидеть примерно следующее:
Осталось настроить сервер потокового мультимедиа в лице icecast. Для этого в файле /etc/icecast2/icecast.xml исправим следующее:
<authentication> <!-- Sources log in with username 'source' --> <source-password>secret</source-password> <!-- Relays log in username 'relay' --> <relay-password>secret</relay-password> <!-- Admin logs in with the username given below --> <admin-user>admin</admin-user> <admin-password>secret</admin-password> </authentication> ... <listen-socket> <port>8000</port> <bind-address>0.0.0.0</bind-address> </listen-socket>
Чтобы изменения вступили в силу, рестартуем icecast:
root@localhost:~$ invoke-rc.d icecast2 restart
После этого аудио поток будет доступен по адресу http://<ip сервера>:8000/stream.ogg. Приятного прослушивания!
Мысль на тему “Музыкальный центр на Linux”
«К сожалению проект pitchfork мертв…»
Нашел морду pitchfork, радует намного больше чем ExtMPD.
Кому интересно вот ссылка http://sourceforge.net/projects/pitchforkmpd/