Gentoo Music Player Daemon (MPD) and ALSA installing: различия между версиями
ALEX (обсуждение | вклад) |
ALEX (обсуждение | вклад) |
||
(не показаны 53 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Решил использовать свой gentoo server box для проигрывания музыки. Купил нужные провода для соединения с системой 5.1. Дальше встал вопрос - как проигрывать музыку удалённо, управляя сервером. | Решил я как-то использовать свой gentoo server box для проигрывания музыки. Купил нужные провода для соединения с системой 5.1. Дальше встал вопрос - как проигрывать музыку удалённо, управляя сервером по SSH или как-то ещё. Потратил некоторое время для поиска консольного плеера, чтобы запускать его по ssh, но случайно наткрунлся на клиент-серверную программу [[wikipedia:ru:Music_Player_Daemon|MPD]]. Прочитал о программе, крайне понравилась идея и огромное количество клиентов подовсе ОС, и даже, веб клиенты, что мне особенно понравилось! Решено, надо установить эту замечательную штуку. | ||
==Утсновка Music Player Daemon под Gentoo== | ==Утсновка Music Player Daemon под Gentoo== | ||
Сперва надо выполнить стандартный | Сперва надо выполнить стандартный | ||
{{root|emerge -v mpd}} | {{root|emerge -v mpd}} | ||
Обратите внимание на USE Flags, от них сильно зависит сможет ли программа проигрывать те или иные форматы аудио, например. Причём некоторые флаги лично мне показались с весьма странными названиями, например, '''mad''' - отвечает за поддержку '''mp3'''. | |||
{{USEFlag|extended=yes| {{EnableFlag|aac}} {{EnableFlag|alsa}} {{EnableFlag|bzip2}} {{EnableFlag|cue}} {{EnableFlag|curl}} {{EnableFlag|flac}} {{EnableFlag|id3}} {{EnableFlag|ipv6}} {{EnableFlag|lame}} {{EnableFlag| | {{USEFlag|extended=yes| {{EnableFlag|aac}} {{EnableFlag|alsa}} {{EnableFlag|audiofile}} {{EnableFlag|bzip2}} {{EnableFlag|cue}} {{EnableFlag|curl}} {{EnableFlag|ffmpeg}} {{EnableFlag|flac}} {{EnableFlag|id3}} {{EnableFlag|ipv6}} {{EnableFlag|lame}} {{EnableFlag|mad}} {{EnableFlag|mikmod}} {{EnableFlag|network}} {{EnableFlag|ogg}} {{EnableFlag|sqlite}} {{EnableFlag|unicode}} {{EnableFlag|vorbis}} {{EnableFlag|wavpack}} {{EnableFlag|wildmidi}} {{EnableFlag|zip}} {{DisableFlag|ao}} {{DisableFlag|avahi}} {{DisableFlag|cdio}} {{DisableFlag|debug}} {{DisableFlag|fifo}} {{DisableFlag|fluidsynth}} {{DisableFlag|jack}} {{DisableFlag|lastfmradio}} {{DisableFlag|libmms}} {{DisableFlag|libsamplerate}} {{DisableFlag|modplug}} {{DisableFlag|musepack}} {{DisableFlag|oss}} {{DisableFlag|pipe}} {{DisableFlag|profile}} {{DisableFlag|pulseaudio}} {{DisableFlag|sid}} }} | ||
{{note| Для установки всех флагов их надо занести в {{root|nano /etc/portage/package.use}} }} | {{note| Для установки всех флагов их надо занести в {{root|nano /etc/portage/package.use}} | ||
Почитать о флагах MPD можно [http://gentoo-portage.com/media-sound/mpd/USE#ptabs тут] на Gentoo Portage) или вот [http://mpd.wikia.com/wiki/Dependencies тут] на официальной вики MPD. }} | |||
===Проблема установки MPD под Gentoo - создание нового пользователя=== | |||
Однако, как обычно всё гладко не бывает в жизни. После установки всех необходимых сопуствующих программ система приступила к установке собственного самого mpd и на этом остановилась с ошибкой: | Однако, как обычно всё гладко не бывает в жизни. После установки всех необходимых сопуствующих программ система приступила к установке собственного самого mpd и на этом остановилась с ошибкой: | ||
Строка 26: | Строка 29: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Подтверждение этой ошибки я нашёл вот [http://www.musicpd.org/mantis/view.php?id=3092 тут]. Если прочитать ошибку, то видно, что проблема в невозможности создать пользователя для mpd, | Подтверждение этой ошибки я нашёл вот [http://www.musicpd.org/mantis/view.php?id=3092 тут]. Если прочитать ошибку, то видно, что проблема в невозможности создать пользователя для '''mpd''', чтобы он не запускался от root'а. Далее я открыл на правку файл, который и вызвал этот затык и внёс в него следующие коррективы: | ||
{{root|vim /usr/portage/eclass/eutils.eclass}} | {{root|vim /usr/portage/eclass/eutils.eclass}} | ||
Строка 45: | Строка 48: | ||
}} | }} | ||
На выделенной 730-й строчке я убрал параметр '''-r''' у команды '''useradd'''. Ещё раз пробуем пересобрать mpd. Всё должно сработать. | На выделенной 730-й строчке я убрал параметр '''-r''' у команды '''useradd'''. Ещё раз пробуем пересобрать '''mpd'''. Всё должно сработать. | ||
==Настройка == | ==Настройка MPD под Gentoo== | ||
Теперь приступаем к настройке конфигурационнго файла MPD: | Теперь приступаем к настройке конфигурационнго файла MPD: | ||
{{root|vim /etc/mpd.conf}} | {{root|vim /etc/mpd.conf}} | ||
Строка 84: | Строка 87: | ||
}} | }} | ||
{{warning|Обратите внимание на выделенную строчку номер 6. Все файлы, указанные в конфигурационном файле {{Codeline|mpd.conf}} должны принадлежать пользователю, указанному в строке | {{warning|Обратите внимание на выделенную строчку номер '''6'''. Все файлы, указанные в конфигурационном файле {{Codeline|mpd.conf}} должны принадлежать пользователю, указанному в строке №'''6'''! Все файлы должны существовать, группа у файлов должна быть audio, а пользователь должен иметь права на чтение и запись. На папки естественно и исполнение. Кроме файла {{Codeline|socket}}.}} | ||
Привер вывода команды {{root|ls -l}} | Привер вывода команды {{root|ls -l}} | ||
Строка 94: | Строка 97: | ||
-rw-r--r-- 1 mpd audio 493 Mar 7 20:23 state | -rw-r--r-- 1 mpd audio 493 Mar 7 20:23 state | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Так же я бы посоветовал не углублятся сильно в настройки устройства вывода, в частности не использовать прямое обращение к звуковой карте - параметр '''hw:0,0'''. | |||
После этого запускаем MPD: | |||
{{root|/etc/init.d/mpd start}} | |||
Добавляем MPD в автозагрузку: | |||
{{root|rc-update add mpd default}} | |||
===Автоматизация сканирования базы песен=== | |||
{{Warning|Опция '''--create-db''' была упразднена из программы и больше не поддерживается, однако, если файл обнулить и перезапустить 1-2 раза демон, он заполнит файл базы данных информацией о песнях.}} | |||
Для того, чтобы '''MPD''' сканировал автоматом при запуске папки с песнями и обновлял свой файл базы данных для этого надо добавить параметр в скрипт инициализации при запуске '''mpd'''. | |||
{{root|nano /etc/init.d/mpd}} | |||
{{File|/etc/init.d/mpd| | |||
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" highlight="4" enclose="div"> | |||
start() { | |||
checkconfig || return 1 | |||
ebegin "Starting Music Player Daemon" | |||
start-stop-daemon --start --quiet --background --exec /usr/bin/mpd --pidfile /var/run/mpd.pid --make-pidfile -- --no-daemon /etc/mpd.conf --create-db 2>/dev/null | |||
</syntaxhighlight> | |||
}} | |||
{{note|Обратите внимание на последнюю опцию {{Codeline|--create-db}} }}. Она как раз и пересоздаёт базу данных песен. Если у вас как и у меня сервер, работающий постоянно, то часто перезапускать mpd вам не нужно, что не будет влиять на скорость запуска mpd. Кстати, сканирование всего моего много гигабайтного раздела с песнями и создание файла database занимает секунду. | |||
После чего перезапускаем MPD: | |||
{{root|/etc/init.d/mpd restart}} | |||
===Добавляем в базу с песнями папки с других носителей=== | |||
У меня все мои файлы хранятся на других носителях, не там где установленна ситсема, а так же они имеют других владельцев и другую группу (не '''mpd''' и не '''audio'''). Да и хранить каталоги с песнями на сисетмном разделе в {{path|var/lib}} как-то не хорошо. Как быть? | |||
Для этого добавлям пользователя '''mpd''' в нужную нам группу: | |||
{{root|usermod -a -G GroupName mpd}} | |||
Проверить изменения можно так: | |||
{{root|id mpd}} | |||
Затем создаём символическую ссылку внутри нашей папки {{path|musci}}, которая будет ссылаться на нужные нам папки с музыкой. | |||
{{root|ln -s /home/ftp/.../AUDIO/ /var/lib/mpd/music/}} | |||
Далее изменяем владельца на ссылку AUDIO, которую только что создали: | |||
{{root|chown -R user:group music/}} | |||
Мы добиваемся требуемого эффекта - символическая ссылка меняет владельца и группу с рута на нужные, но как побочный эффект, у нас меняются права на оригинальных папках на '''mpd:audio'''. | |||
Возвращаем всё назад: | |||
{{root|chown user:group /home/ftp/.../AUDIO/}} | |||
{{root|chown user:group /home/ftp/.../files/}} | |||
==Проблемы запуска MPD - TroubleShooting== | ==Проблемы запуска MPD - TroubleShooting== | ||
В случае возникновения каких-либо сложностей, надо смотреть вот эту [http://mpd.wikia.com/wiki/Music_Player_Daemon_HOWTO_Troubleshoot '''ссылку''']. | В случае возникновения каких-либо сложностей или проблем при запуске '''mpd''', надо смотреть вот эту [http://mpd.wikia.com/wiki/Music_Player_Daemon_HOWTO_Troubleshoot '''ссылку''']. Это официальная Wiki и раздел TroubleShoot. | ||
Причём крайне помогает команда | Причём для отладки крайне помогает следующая команда запуска '''mpd''' | ||
{{root|/usr/bin/mpd --stdout --no-daemon --verbose | {{root|/usr/bin/mpd --stdout --no-daemon --verbose}} | ||
Того же эффекта можно добится, если занести в конфиг {{Path|/etc/mpd.conf}} строчку: {{Codeline|log_level "verbose"}}. Теперь в наших логах будет содержаться подробный отчёт обовсех событиях и ошибках. Посмотреть ошибки можно вот тут {{path|/var/log/mpd/mpd.log}} | |||
И наконец, крайне важная ссылка - [http://mpd.wikia.com/wiki/FAQ FAQ], который помогает в поиске ошибок. Очень полезная ссылка. | И наконец, крайне важная ссылка - [http://mpd.wikia.com/wiki/FAQ FAQ], который помогает в поиске ошибок. Очень полезная ссылка. | ||
===MPD не видит файлы в папке music=== | |||
Если у вас в папке {{path|/var/lib/mpd/music}} лежат аудиофайлы, но mpd их не добавляет в базу данных, то как правило проблема вызвана правами на папки и файлы. Проверьте всё десять раз! Даже, если вы уверены 100%, надо проверить всё ещё раз, чтобы быть уверенным на 200%. Однако, такой эффект вполне может быть вызван и тем, что MPD не поддерживает ваши аудио форматы. Важно собрать MPD с нужными поддерживаемыми форматами. | |||
О том, какие форматы на данный момент поддерживает ваша сборка '''mpd''', можно узнать по команде: | |||
{{root|mpd --version}} | |||
В общем подробнее об этом можно прочитать вот [http://mpd.wikia.com/wiki/Music_Player_Daemon_Database_Troubleshooting тут]. | |||
==Установка ALSA под Gentoo== | ==Установка ALSA под Gentoo== | ||
В качестве устройства вывода звука я решил использовать ALSA. Для её установки на свой компьютер, мне пришлось пересобрать ядро, | В качестве устройства вывода звука я решил использовать ALSA. Для её установки на свой компьютер, мне пришлось пересобрать ядро, включив поддержку ALSA, а так же необходимых драйверов под свою звуковую карту. | ||
===Найстройка ядра Gentoo для поддержки ALSA на P5Q-e=== | ===Найстройка ядра Gentoo для поддержки ALSA на P5Q-e=== | ||
Строка 174: | Строка 221: | ||
</pre>}} | </pre>}} | ||
{{Note|Причём очень важно обратить на то, что часть пунктов выбрано в виде модулей. ALSA не будет рабоать, если эти пункты | {{Note|Причём очень важно обратить на то, что часть пунктов выбрано в виде модулей. ALSA не будет рабоать, если эти пункты интегрировать в ядро системы. На это у меня ушло пару часов, прежде, чем я нашёл в нете об этом ошибку.}} | ||
Почитать об этом можно вот [http://www.linuxquestions.org/questions/linux-software-2/alsa-said-could-not-find-module-snd-602406/ тут]. | Почитать об этом можно вот [http://www.linuxquestions.org/questions/linux-software-2/alsa-said-could-not-find-module-snd-602406/ тут]. | ||
Узнал я намёк, что проблема вся в том, что нет модулей при запуске конфигуратора alsa. | |||
При запуске конфигуратора выпадает следующая ошибка, которую реально заметить крайне сложно, т.к. она выпадает всего на полсекунды: | |||
{{root|alsaconf}} | {{root|alsaconf}} | ||
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | <syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
Строка 184: | Строка 234: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Посмотреть загруженные модули можно стандартной командой: | |||
{{root|lsmod}} | |||
{{root| | |||
Теперь ставим | Теперь ставим библиотеки ALSA, которые будут работать с аудио: | ||
{{root|emerge media-libs/alsa-lib}} | {{root|emerge media-libs/alsa-lib}} | ||
Причём очень важно обратить внимание на то, что у нас активированны все {{Codeline|ALSA_PCM_PLUGINS}}, возможно какие-то из них вам не потребуются, но разобраться в них очень сложно, они занимают малое места и практически все полезны. | Причём очень важно обратить внимание на то, что у нас активированны все {{Codeline|ALSA_PCM_PLUGINS}}, возможно какие-то из них вам не потребуются, но разобраться в них очень сложно, они занимают малое места и практически все полезны и более того, необходимы. | ||
Так что в файл {{path|/etc/make.conf}} добавляем следующую строчку: | Так что в файл {{path|/etc/make.conf}} добавляем следующую строчку: | ||
Строка 203: | Строка 249: | ||
}} | }} | ||
Причём, | Причём, сперва я не добавлял некоторые плагины, тогда в логах выпадала следующая ошибка: | ||
{{File|/var/log/mpd/mpd.log| | {{File|/var/log/mpd/mpd.log| | ||
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | <syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | ||
Строка 215: | Строка 261: | ||
==Настройка ALSA под Gentoo== | ==Настройка ALSA под Gentoo== | ||
Настроить можно | Поскольку ядро под alsa и нашу звуковуху в конкретно нашей материнке p5q-e настроено, а так же стоят библиотеки alsa - {{Package|media-libs/alsa-lib|direct=yes}}, то | ||
теперь ставим утилиты, помогающие настраивать '''ALSA''': | |||
{{root|emerge alsa-utils}} | |||
Добавляем их в автозапуск: | |||
{{root|rc-update add alsasound boot}} | |||
(это что-то типа драйверов настройки звука в Windows, иконка от которых висит в трее с часами, но я точно не уверен). | |||
[[Image:alsa_mixer.png|thumb|Выключенные линии обозначены как '''MM''', а включенные как '''OO''']] | |||
Так же можно подправить конфигурационный файл {{path|/etc/conf.d/alsasound}}. | |||
Запускаем утилиты: | |||
{{root|/etc/init.d/alsasound start}} | |||
Для настройки ALSA запускаем: | |||
{{root|alsaconf}} | |||
Это поможет в графическом режиме настроить всё, и сгенерирует файл {{Path|/etc/modprobe.d/alsa}}, который в принципе мы можем поправить руками. | |||
Настроить громкость можно благодаря установленной нами ранее программы из набора утилит, выполнив: | |||
{{root|alsamixer}} | {{root|alsamixer}} | ||
Обратите внимание на рисунок. | |||
Причём, замъютить (отключить) тот или иной канал можно нажав клавишу {{key|m}} | |||
==Установка и настройка web-based клиента для MPD== | |||
Из всех клиентов, я поставил наиболее простой с понятным и светлым интерфейсом. [http://crsw.dk/Projects/Mpd/extmpd.php ExtJS MPD] - это клиент, который просто копируется в папку на веб сервере и тут же начинает работать "из коробки". Если у вас установлены специфические адрес и порт, которые слушает MPD, то вы можете указать их в файле {{path|mpd-control/configuration.php}}. Некоторые минусы у него есть, но вроде на первых порах нормально. Просто и работает "из коробки". Для себя я отметил ещё парочку клиентов для веб сервера на php. [http://sites.google.com/site/cseickel/mpdwebamp Первый] из них и [http://relaxx.dirk-hoeschen.de/index.php/photos/album/1/photo/17.html второй]. | |||
===Добавляем защиту от произвольного доступа к клиенту=== | |||
Для того, чтобы к нашему клиенту не подсоединились люди из вне (собственно им нечего делать там =) ), я ограничил доступ к web-based клиенту с помощью mod_rewrite из поставки Apache. | |||
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" highlight="3" enclose="div"> | |||
{ | RewriteEngine on | ||
RewriteBase / | |||
RewriteCond %{REMOTE_ADDR} !^192\.168\..*\..*$ | |||
RewriteRule ^.*$ /index.php | |||
</syntaxhighlight> | |||
Как видно из третьей строчки, я ограничил доступ по IP адресу. Только люди из 192.168.0.0\16 могут попасть в нужную папку на веб сервере, стальные переадресуются на файл index.php с обычным HTML кодом, выводящим сообщение типа: '''Access Denied!''' | |||
==Ссылки== | ==Ссылки== | ||
* [http://www.gentoo.org/doc/ru/alsa-guide.xml ALSA] под Gentoo по-русски. | Постарался собрать все полезные ссылки, упоминаемые в заметке. | ||
* [http://en.gentoo-wiki.com/wiki/Asus_P5Q-E P5Q-e] настройка под Gentoo. | |||
===ALSA=== | |||
* [http://www.gentoo.org/doc/ru/alsa-guide.xml ALSA] под Gentoo по-русски и вот [http://www.gentoo.org/doc/en/alsa-guide.xml тут] ALSA под Gentoo на английском. | |||
* [http://en.gentoo-wiki.com/wiki/ALSA ALSA] на Gentoo Wiki на английском. | |||
===MPD=== | |||
====USE Flags==== | |||
* [http://gentoo-portage.com/media-sound/mpd/USE#ptabs тут] на Gentoo Portage | |||
* [http://mpd.wikia.com/wiki/Dependencies Официальная] wiki | |||
====TroubleShoot==== | |||
* [http://mpd.wikia.com/wiki/Music_Player_Daemon_HOWTO_Troubleshoot Официальная] Wiki и раздел TroubleShoot. | |||
* [http://mpd.wikia.com/wiki/FAQ '''FAQ'''] который надо прочитать очень внимательно! | |||
====Установка и настройка==== | |||
* [http://mpd.wikia.com/wiki/Configuration Процесс] конфигурирования '''MPD''' на официальном вики. В частности подробно расмотрены варианты ''Audio device outputs''. | |||
* [http://www.gentoo-wiki.info/MPD Процесс] установки на ''Gentoo Wiki Archive''. | |||
* [http://mpd.wikia.com/wiki/Install Установка] и настройки под различные ОС | |||
* [https://wiki.archlinux.org/index.php/Music_Player_Daemon_(Русский) Установка] под ArchLinux. | |||
====Список клиентов для MPD==== | |||
* [http://mpd.wikia.com/wiki/Clients Список] клиентов на официальном Wiki/ | |||
[[Category:Index]] | [[Category:Index]] | ||
[[Category:Linux]] | [[Category:Linux]] |
Текущая версия на 18:39, 17 июля 2012
Решил я как-то использовать свой gentoo server box для проигрывания музыки. Купил нужные провода для соединения с системой 5.1. Дальше встал вопрос - как проигрывать музыку удалённо, управляя сервером по SSH или как-то ещё. Потратил некоторое время для поиска консольного плеера, чтобы запускать его по ssh, но случайно наткрунлся на клиент-серверную программу MPD. Прочитал о программе, крайне понравилась идея и огромное количество клиентов подовсе ОС, и даже, веб клиенты, что мне особенно понравилось! Решено, надо установить эту замечательную штуку.
Утсновка Music Player Daemon под Gentoo
Сперва надо выполнить стандартный
Обратите внимание на USE Flags, от них сильно зависит сможет ли программа проигрывать те или иные форматы аудио, например. Причём некоторые флаги лично мне показались с весьма странными названиями, например, mad - отвечает за поддержку mp3.
Use Flags: aac alsa audiofile bzip2 cue curl ffmpeg flac id3 ipv6 lame mad mikmod network ogg sqlite unicode vorbis wavpack wildmidi zip -ao -avahi -cdio -debug -fifo -fluidsynth -jack -lastfmradio -libmms -libsamplerate -modplug -musepack -oss -pipe -profile -pulseaudio -sid (?)
Проблема установки MPD под Gentoo - создание нового пользователя
Однако, как обычно всё гладко не бывает в жизни. После установки всех необходимых сопуствующих программ система приступила к установке собственного самого mpd и на этом остановилась с ошибкой:
* ERROR: media-sound/mpd-0.15.15 failed.
* Call stack:
* ebuild.sh, line 49: Called pkg_setup
* mpd-0.15.15.ebuild, line 60: Called enewuser 'mpd' '' '' '/var/lib/mpd' 'audio'
* eutils.eclass, line 726: Called die
* The specific snippet of code:
* useradd -r ${opts} \
* -c "added by portage for ${PN}" \
* ${euser} \
* || die "enewuser failed"
* The die message:
* enewuser failed
Подтверждение этой ошибки я нашёл вот тут. Если прочитать ошибку, то видно, что проблема в невозможности создать пользователя для mpd, чтобы он не запускался от root'а. Далее я открыл на правку файл, который и вызвал этот затык и внёс в него следующие коррективы:
if [[ -z $@ ]] ; then
useradd ${opts} \
-c "added by portage for ${PN}" \
${euser} \
|| die "enewuser failed"
else
einfo " - Extra: $@"
useradd -r ${opts} "$@" \
${euser} \
|| die "enewuser failed"
fi
На выделенной 730-й строчке я убрал параметр -r у команды useradd. Ещё раз пробуем пересобрать mpd. Всё должно сработать.
Настройка MPD под Gentoo
Теперь приступаем к настройке конфигурационнго файла MPD:
music_directory "/var/lib/mpd/music"
playlist_directory "/var/lib/mpd/playlists"
db_file "/var/lib/mpd/database"
log_file "/var/log/mpd/mpd.log"
state_file "/var/lib/mpd/state"
user "mpd"
bind_to_address "localhost"
bind_to_address "/var/lib/mpd/socket"
port "6600"
log_level "default"
input {
plugin "curl"
# proxy "proxy.isp.com:8080"
# proxy_user "user"
# proxy_password "password"
}
audio_output {
type "alsa"
name "P5Q-E ALSA Device"
# device "hw:0,0" # optional
# format "44100:16:2" # optional
# mixer_device "default" # optional
# mixer_control "PCM" # optional
# mixer_index "0" # optional
}
filesystem_charset "UTF-8"
Привер вывода команды
-rw-r--r-- 1 mpd audio 2532 Mar 7 19:53 database
drwxr-xr-x 2 mpd audio 4096 Mar 7 19:35 music
drwxr-xr-x 2 mpd audio 4096 Mar 7 19:41 playlists
srw-rw-rw- 1 root root 0 Mar 7 19:53 socket
-rw-r--r-- 1 mpd audio 493 Mar 7 20:23 state
Так же я бы посоветовал не углублятся сильно в настройки устройства вывода, в частности не использовать прямое обращение к звуковой карте - параметр hw:0,0.
После этого запускаем MPD:
Добавляем MPD в автозагрузку:
Автоматизация сканирования базы песен
Для того, чтобы MPD сканировал автоматом при запуске папки с песнями и обновлял свой файл базы данных для этого надо добавить параметр в скрипт инициализации при запуске mpd.
start() {
checkconfig || return 1
ebegin "Starting Music Player Daemon"
start-stop-daemon --start --quiet --background --exec /usr/bin/mpd --pidfile /var/run/mpd.pid --make-pidfile -- --no-daemon /etc/mpd.conf --create-db 2>/dev/null
. Она как раз и пересоздаёт базу данных песен. Если у вас как и у меня сервер, работающий постоянно, то часто перезапускать mpd вам не нужно, что не будет влиять на скорость запуска mpd. Кстати, сканирование всего моего много гигабайтного раздела с песнями и создание файла database занимает секунду.
После чего перезапускаем MPD:
Добавляем в базу с песнями папки с других носителей
У меня все мои файлы хранятся на других носителях, не там где установленна ситсема, а так же они имеют других владельцев и другую группу (не mpd и не audio). Да и хранить каталоги с песнями на сисетмном разделе в var/lib как-то не хорошо. Как быть?
Для этого добавлям пользователя mpd в нужную нам группу:
Проверить изменения можно так:
Затем создаём символическую ссылку внутри нашей папки musci, которая будет ссылаться на нужные нам папки с музыкой.
Далее изменяем владельца на ссылку AUDIO, которую только что создали:
Мы добиваемся требуемого эффекта - символическая ссылка меняет владельца и группу с рута на нужные, но как побочный эффект, у нас меняются права на оригинальных папках на mpd:audio. Возвращаем всё назад:
Проблемы запуска MPD - TroubleShooting
В случае возникновения каких-либо сложностей или проблем при запуске mpd, надо смотреть вот эту ссылку. Это официальная Wiki и раздел TroubleShoot.
Причём для отладки крайне помогает следующая команда запуска mpd
Того же эффекта можно добится, если занести в конфиг /etc/mpd.conf строчку: log_level "verbose". Теперь в наших логах будет содержаться подробный отчёт обовсех событиях и ошибках. Посмотреть ошибки можно вот тут /var/log/mpd/mpd.log
И наконец, крайне важная ссылка - FAQ, который помогает в поиске ошибок. Очень полезная ссылка.
MPD не видит файлы в папке music
Если у вас в папке /var/lib/mpd/music лежат аудиофайлы, но mpd их не добавляет в базу данных, то как правило проблема вызвана правами на папки и файлы. Проверьте всё десять раз! Даже, если вы уверены 100%, надо проверить всё ещё раз, чтобы быть уверенным на 200%. Однако, такой эффект вполне может быть вызван и тем, что MPD не поддерживает ваши аудио форматы. Важно собрать MPD с нужными поддерживаемыми форматами. О том, какие форматы на данный момент поддерживает ваша сборка mpd, можно узнать по команде:
В общем подробнее об этом можно прочитать вот тут.
Установка ALSA под Gentoo
В качестве устройства вывода звука я решил использовать ALSA. Для её установки на свой компьютер, мне пришлось пересобрать ядро, включив поддержку ALSA, а так же необходимых драйверов под свою звуковую карту.
Найстройка ядра Gentoo для поддержки ALSA на P5Q-e
Для начала сразу скажу, что у меня в сервере стоит мать ASUS P5Q-e с слудующей звуковухой:
00:1b.0 Audio device: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller
Таким образом запускаем Genkernel и выбираем следующие настройки:
Linux Kernel Configuration: 2.6.36 P5Q-e kernel config |
[*] Enable loadable module support ---> --- Enable loadable module support [*] Forced module loading [*] Module unloading [*] Forced module unloading [*] Module versioning support [ ] Source checksum for all modules Device Drivers ---> Character devices ---> <*> Enhanced Real Time Clock Support (legacy PC RTC driver) Device Drivers ---> <*> Sound card support ---> --- Sound card support [*] Preclaim OSS device numbers <M> Advanced Linux Sound Architecture ---> --- Advanced Linux Sound Architecture <M> Sequencer support <M> Sequencer dummy client <M> OSS Mixer API <M> OSS PCM (digital audio) API [*] OSS PCM (digital audio) API - Include plugin system [*] OSS Sequencer API <M> RTC Timer support [*] Use RTC as default sequencer timer -*- Dynamic device file minor numbers [*] Support old ALSA API [*] Generic sound devices ---> --- Generic sound devices <M> Virtual MIDI soundcard [*] PCI sound devices ---> --- PCI sound devices <M> Intel HD Audio ---> --- Intel HD Audio [*] Build Realtek HD-audio codec support [*] Build Analog Device HD-audio codec support [*] Build IDT/Sigmatel HD-audio codec support [*] Build VIA HD-audio codec support [*] Build ATI HDMI HD-audio codec support [*] Build NVIDIA HDMI HD-audio codec support [*] Build INTEL HDMI HD-audio codec support [*] Build Cirrus Logic codec support [*] Build Conexant HD-audio codec support [*] Build Creative CA0110-IBG codec support [*] Build C-Media HD-audio codec support [*] Build Silicon Labs 3054 HD-modem codec support [*] Enable generic HD-audio codec parser |
Почитать об этом можно вот тут.
Узнал я намёк, что проблема вся в том, что нет модулей при запуске конфигуратора alsa. При запуске конфигуратора выпадает следующая ошибка, которую реально заметить крайне сложно, т.к. она выпадает всего на полсекунды:
modinfo: could not find module snd
modinfo: could not find module snd
modinfo: could not find module snd
Посмотреть загруженные модули можно стандартной командой:
Теперь ставим библиотеки ALSA, которые будут работать с аудио:
Причём очень важно обратить внимание на то, что у нас активированны все ALSA_PCM_PLUGINS, возможно какие-то из них вам не потребуются, но разобраться в них очень сложно, они занимают малое места и практически все полезны и более того, необходимы.
Так что в файл /etc/make.conf добавляем следующую строчку:
ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol"
Причём, сперва я не добавлял некоторые плагины, тогда в логах выпадала следующая ошибка:
Mar 07 17:01 : decoder: audio_format=44100:24:2, seekable=true
ALSA lib dlmisc.c:121:(snd_dlsym_verify) unable to verify version for symbol _snd_pcm_empty_open
ALSA lib pcm.c:2175:(snd_pcm_open_conf) symbol _snd_pcm_empty_open is not defined inside [builtin]
Mar 07 17:01 : output: Failed to open "P5Q-E ALSA Device" [alsa]: Failed to open ALSA device "default": No such device or address
Mar 07 17:01 : player_thread: problems opening audio device while playing "04_-_Rock_And_Roll_Music_(2009_Digital_Remaster).flac"
Настройка ALSA под Gentoo
Поскольку ядро под alsa и нашу звуковуху в конкретно нашей материнке p5q-e настроено, а так же стоят библиотеки alsa - media-libs/alsa-lib, то теперь ставим утилиты, помогающие настраивать ALSA:
Добавляем их в автозапуск:
(это что-то типа драйверов настройки звука в Windows, иконка от которых висит в трее с часами, но я точно не уверен).
Так же можно подправить конфигурационный файл /etc/conf.d/alsasound.
Запускаем утилиты:
Для настройки ALSA запускаем:
Это поможет в графическом режиме настроить всё, и сгенерирует файл /etc/modprobe.d/alsa, который в принципе мы можем поправить руками.
Настроить громкость можно благодаря установленной нами ранее программы из набора утилит, выполнив:
Обратите внимание на рисунок. Причём, замъютить (отключить) тот или иной канал можно нажав клавишу m
Установка и настройка web-based клиента для MPD
Из всех клиентов, я поставил наиболее простой с понятным и светлым интерфейсом. ExtJS MPD - это клиент, который просто копируется в папку на веб сервере и тут же начинает работать "из коробки". Если у вас установлены специфические адрес и порт, которые слушает MPD, то вы можете указать их в файле mpd-control/configuration.php. Некоторые минусы у него есть, но вроде на первых порах нормально. Просто и работает "из коробки". Для себя я отметил ещё парочку клиентов для веб сервера на php. Первый из них и второй.
Добавляем защиту от произвольного доступа к клиенту
Для того, чтобы к нашему клиенту не подсоединились люди из вне (собственно им нечего делать там =) ), я ограничил доступ к web-based клиенту с помощью mod_rewrite из поставки Apache.
RewriteEngine on
RewriteBase /
RewriteCond %{REMOTE_ADDR} !^192\.168\..*\..*$
RewriteRule ^.*$ /index.php
Как видно из третьей строчки, я ограничил доступ по IP адресу. Только люди из 192.168.0.0\16 могут попасть в нужную папку на веб сервере, стальные переадресуются на файл index.php с обычным HTML кодом, выводящим сообщение типа: Access Denied!
Ссылки
Постарался собрать все полезные ссылки, упоминаемые в заметке.
- P5Q-e настройка под Gentoo.
ALSA
- ALSA под Gentoo по-русски и вот тут ALSA под Gentoo на английском.
- ALSA на Gentoo Wiki на английском.
MPD
USE Flags
- тут на Gentoo Portage
- Официальная wiki
TroubleShoot
- Официальная Wiki и раздел TroubleShoot.
- FAQ который надо прочитать очень внимательно!
Установка и настройка
- Процесс конфигурирования MPD на официальном вики. В частности подробно расмотрены варианты Audio device outputs.
- Процесс установки на Gentoo Wiki Archive.
- Установка и настройки под различные ОС
- Установка под ArchLinux.
Список клиентов для MPD
- Список клиентов на официальном Wiki/