суббота, 14 апреля 2012 г.

Музыка из консоли. Часть 1

Далее будет описана процедура установки и настройки mpd в openSUSE Tumblweed.


  • Установка
Установка производится до безобразия просто, а именно с помощью команды

#zypper in mpd
  •  Настройка mpd
Настройка mpd производится путём редактирования конфигурационного файла /etc/mpd.conf
Рассмотрим доступные опции настройки, которые в нём содержатся. 
Раздел "Файлы и директории"

music_directory                "~/music"
Значение определяет каталог в котором располагается вся музыка, которую в дальнейшем предстоит проигрывать mpd. По умолчанию значение берётся из XDG.

playlist_directory             "~/.mpd/playlists"
Директория для хранения плейлистов, которые используются mpd.

db_file                        "~/.mpd/database"
Значение указывает на местоположение базы данных демона.

log_file                       "~/.mpd/log"
Значение указывает на местоположение лог-файлов демона. Очень полезны при
решении проблем.

pid_file                       "~/.mpd/pid"
Значение указывает на местоположение pid-файла (process ID). Нужно для использования
команды mpd --kill и некоторых скриптов инициализации. Любые манипуляции с командами
service и chkconfig прекрасно работают и без него.

state_file                     "~/.mpd/state"
А тут mpd будет сохранять своё состояние (громкость, воспроизводимый
файл и прочее). Благодаря этой опции воспроизведение продолжится начиная с того места, на котором было прервано даже после перезапуска демона.

sticker_file                   "~/.mpd/sticker.sql"
Расположение базы данных sticker, которая нужна для управления динамической информацией приклеплённой к музыкальным трекам.

Раздел "основные настройки".

user                           "nobody"

Имя пользователя, от которого будет запускаться и работать mpd. Благодаря этому параметру mpd не будет иметь права root, которые обычно имеет запущенный как демон. Но это значение не рекомендуется использовать, если вы запускаете mpd из под непривилегированного пользователя. По умолчанию отключено и mpd работает просто из под пользователя, который его, собственно, и запустил.


group                          "nogroup"
Параметр определяет группу с правами которой запускается MPD. Если значение не определено, то используется первичная группа пользователя, запустившего MPD. Для простого пользователя это будет группа "users". Это используется для того, чтобы предоставить MPD доступ к звуковой карте и в частности к группе "audio", которая этот доступ по умолчанию имеет.

bind_to_address                "any"
Привязка демона на хост, где mpd будет вещать музыку. В случае
значения «any» вещание будет на всю сеть. Узнать имя машины в сети можно посредством
команды $ uname -n

bind_to_address                "~/.mpd/socket"
Сокет Unix для работы mpd в сети.

port                "6600"
Порт на котором будет висеть mpd.

log_level            "default"
Опция указывающая уровень журналирования. Уровень "default" соответствует минимальному логированию; "secure" будет сообщать о том, что соединение открыто и когда закрыто; а
"verbose" записывает чрезмерное количество информации для отладки (всю что можно).

gapless_mp3_playback                   "yes"
Использование gapless mp3. Он помогает при воспроизведении проблемных файлов mp3.

save_absolute_paths_in_playlists       "no"
Опция позволяет сохранять в списках воспроизведения полные пути к файлам и таким образом использовать эти списки другими аудио плеерами.

metadata_to_use        "artist,album,title,track,name,genre,date,composer,performer,disc"
Параметр определяет тэги, которые MPD будет извлекать из аудио файлов в процессе обзора.

auto_update    "yes"
Автоматическое обновление базы данных при обнаружении изменений.

auto_update_depth "3"
Глубина просмотра дерева каталогов в значении music_directory при автообновлении базы данных. По умолчанию не определено и mpd может "нырять" в music_directory на любую глубину.

Раздел конфигурации посвящённый поведению при работе с символьными ссылками.

follow_outside_symlinks        "yes"
Параметр определяющий выходить ли mpd из символьных ссылок за пределы music_directory.

follow_inside_symlinks         "yes"
Параметр определяющий следовать ли mpd по символьным ссылкам вообще в music_directory.

Раздел посвящённый работе MPD при работе с Zeroconf и Avahi.

zeroconf_enabled               "yes"
Распространять или нет информацию посредством Zeroconf и Avahi.

zeroconf_name                  "Music Player"
Имя mpd в сети.

Раздел "Права".

password                        "password@read,add,control,admin"
Авторизация пользователя по паролю. Также можно указать уровень доступа для разных пользователей.

default_permissions             "read,add,control,admin"
Уровень доступа. "read" разрешает чтение из базы данных, показ текущего списка воспроизведения и статуса mpd; "add" разрешает добавлять песни и загружать плейлисты; "control" разрешает манипуляции с воспроизведением и плейлистом; "admin"  разрешает обновлять базу данных и убивать mpd.

input {
        plugin "curl"
#       proxy "proxy.isp.com:8080"
#       proxy_user "user"
#       proxy_password "password"
}
Подключение плагина "curl", использование прокси-сервера. Не выделяю в раздел особый, так как он содержит всего одну опцию.

Раздел аудио выхода.

audio_output {}
Все настройки касающиеся способа вывода звука располагаются между { и }. В конфигурационном файле можно найти примеры для множества способов это сделать.

audio_output_format            "44100:16:2"
Формат вывода звука. С помощью этого параметра можно задать опции декодера потока аудио.

samplerate_converter           "Fastest Sinc Interpolator"
Опция для конвертирования с помощью библиотеки libsamplerate. Подробнее об этом в man mpd.conf или в документации libsamplerate на http://www.mega-nerd.com/SRC/.
Может принимать следующие значения:

Best Sinc Interpolator (лучшее
качество, 97dB SNR, 96% BW.)

Medium Sinc Interpolator (среднее
качество, 97dB SNR, 90% BW.)

Fastest Sinc Interpolator (быстрое,
97dB SNR, 80% BW.)

ZOH Interpolator (очень быстрое,
очень плохое качество с звуковым
искажением)

Linear Interpolator (очень
быстрое, плохое качество)

Раздел о параметрах автоматической нормализации звука.

replaygain                     "album"
Автоматическую нормализацию громкости. Значение может быть установлено в «album» или в «track». В настоящее время поддерживаются только FLAC, Ogg Vorbis, Musepack, и MP3 (через ID3v2 ReplayGain тэги, не APEv2). Подробнее на  http://www.replaygain.org.

replaygain_preamp              "0"
Опция для использования для файлов имеющих ReplayGain тэги. Значение может быть от -15 до 15.

volume_normalization           "no"
Эта опция включает нормализацию громкости «на лету».

Раздел "внутренняя буферизация MPD".

audio_buffer_size              "2048"
Опция для определения размера буфера используемого mpd. Её изменение может привести к нежелательным эффектам. Не меняйте её, если не знаете, что делаете.

buffer_before_play             "10%"
Процент буферизации до начала воспроизведения. Таким образом может пройти некоторое время до начала воспроизведения, но зато это позволит избежать прерываний и задержек при обращении к музыкальным файлам сразу на прямую.

Раздел конфигурационного файла об ограничении ресурсов.

connection_timeout             "60"
Если клиент не присылает данных о соединении за указанный промежуток времени, то соединение рвётся.

max_connections                "10"
Максимальное количество клиентов, которые могут одновременно работать с mpd.

max_playlist_length            "16384"
Максимальное количество треков в списке воспроизведении.

max_command_list_size          "2048"
MPD запоминает команды, которые ему даются аналогично bash. Этот параметр определяет их максимальное количество.

max_output_buffer_size         "8192"
Максимальный размер буфера MPD.

Раздел о кодировках.

filesystem_charset              "UTF-8"
Кодировка файловой системы.

id3v1_encoding                 "ISO-8859-1"
Это значение указывает в какую кодировку должен быть кодированы ID3v1 тэги. Все возможные значения можно увидеть используя команду iconv -l.

Раздел о декодере SIDPlay.

Параметры и опции заключаются между decoder { и }. Пример прилагается.

Для получения дополнительной информации смотрите man mpd.conf
По желанию можно использовать как сам /etc/mpd.conf (тогда вам придётся чаще прибегать к использованию root), либо ~/.mpdconf, ~/.mpd/mpd.conf
Я решил остановиться на втором варианте, так как это более безопасно как никак.

Теперь нужно запустить paprefs и отметить пару галок:
1. Enable network access to local sound devices (Включить доступ по сети в локальным звуковым устройствам)
2. Don't require authentication (Не использовать аутентификацию)
Итак, в связи с моими потребностями у меня получился конфигурационный файл следующего содержания:

В принципе остаётся только запустить любой клиент и обновить базу данных, но мы пойдём дальше...
Запустить mpd можно с помощью команды
  • Решение проблем:
listen: bind to '0.0.0.0:6600' failed: Address already in use (continuing anyway, because binding to '[::]:6600' succeeded)
В файле конфигурации вы дали значение "localhost" параметру bind_to_address, а нужно "127.0.0.1". Это баг в MPD. Доказательства.

daemon: cannot init supplementary groups of user "username": Operation not permitted
Нужно указать группу вручную.

Продолжение следует...





Комментариев нет:

Отправить комментарий