Музыкальный центр на Linux

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

В качестве плеера используем , благодаря своей клиент-серверной архитектуре он подходит для таких целей идеально. Серверная часть работает как демон, воспроизводит музыку и принимает управляющие команды от клиентского приложения. При этом клиентом может быть графическое GTK/Qt приложение, консольная утилита или веб-интерфейс (есть даже плагин для firefox). Для использования с консольным сервером наиболее пригоден последний вариант — веб-интерфейс, он позволяет управлять музыкальным центром как с ПК, так и с любого мобильного устройства имеющего браузер и подключение к домашней WiFi-сети.

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

Установим требуемые пакеты:

[email protected]:~$ 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 принудительно обновить базу данных аудио-файлов:

[email protected]:~$ invoke-rc.d mpd stop [email protected]:~$ mpd --create-db 

Пока база создается, скачаем и установим веб-интерфес для mpd. К сожалению проект pitchfork мертв, из живых мне больше всего понравился ExtJS MPD.

[email protected]:~$ cd /var/www [email protected]:/var/www$ wget http://crsw.dk/Projects/Mpd/ExtMPD_1.3.tgz [email protected]:/var/www$ tar xfv ExtMPD_1.3.tgz [email protected]:/var/www$ chmod -R www-data: ExtMPD 

Этого достаточно чтобы открыв в браузере http://<ip сервера>/ExtMPD/ увидеть примерно следующее:

ExtJS MPD

Осталось настроить сервер потокового мультимедиа в лице 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:

 [email protected]:~$ invoke-rc.d icecast2 restart 

После этого аудио поток будет доступен по адресу http://<ip сервера>:8000/stream.ogg. Приятного прослушивания!