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

Опубликовано:

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

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

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

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


Все настройки 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. Приятного прослушивания!

Понравилась статья, расскажи о ней друзьям, нажми кнопку!