mpd что это такое
Music Player Daemon
Из Википедии — свободной энциклопедии
Такая технология имеет ряд преимуществ. Для работы MPD не нужна X Window System, поэтому перезапуск X или закрытие программы-клиента не влияет на проигрывание (есть и клиенты, которые могут работать в командной строке, например, mpc и ncmpc); на сервере с MPD может даже не быть монитора. Воспроизведением можно управлять с других компьютеров, а также мобильных устройств (есть клиентские приложения для iOS, Android, Symbian и многих других платформ). Управлять воспроизведением музыки можно не только через локальную сеть, но и через Интернет (конфигурационный файл позволяет задать, на каких именно сетевых интерфейсах должен работать сервер).
Даже если установка клиентского приложения на устройство, с которого необходимо управлять воспроизведением, по каким-то причинам невозможна, то остаётся возможность установить такое клиентское приложение, к которому можно обращаться с других узлов через веб-браузер.
MPD использует базу данных (как и некоторые другие медиаплееры), чтобы хранить основную информацию о музыкальных файлах (название трека, исполнителя, название альбома и пр.). Как только демон запущен, база данных будет полностью сохранена в оперативной памяти, и нет никакой необходимости обращаться к диску с целью поиска песни и прочтения тегов аудиофайла.
Go, локдаун и новый MPD-клиент — встречайте Ymuse
Уже лет десять моим основным медиаплеером на компьютере является MPD, Music Player Daemon — фоновый сервис, воспроизводящий музыку.
Чтобы с этим сервисом как-то взаимодействовать, нужна программа-клиент. Таких программ существует не один десяток, но до недавнего времени я никак не мог найти ту, которая меня бы полностью устраивала — поэтому в один прекрасный день я решил написать свою (тут и локдаун кстати подвернулся).
Предлагаю вашему вниманию краткий обзор (сравнительно) нового MPD-клиента для Linux/GTK под названием Ymuse, версию 0.16 которого я недавно выпустил.
Music Player Daemon
Сначала немного о том, что же такое Music Player Daemon, — для тех, кто с ним незнаком.
Он представляет собой сервис (на айтишном жаргоне демон), который работает в фоновом режиме в недрах компьютера и способен воспроизводить музыку или стриминговое Интернет-аудио (Интернет-радио).
Помимо воспроизведения звука, сервис этот внешне никак себя не проявляет. Чтобы им управлять, требуется специальная программа, которую традиционно называют клиентом, и этих клиентов есть множество под разные платформы — от Windows до Wear OS.
Когда я впервые познакомился с такой концепцией разделения компонентов на невизуальный (воспроизводящий аудио) и визуальный, то был немного озадачен, однако довольно быстро осознал её удобство.
MPD берёт на себя управление музыкальной библиотекой (сканирование и индексирование аудиофайлов) и проигрывание файлов, а программу-клиента можно подобрать по вкусу. В такой архитектуре клиентов у MPD-демона может быть сколько угодно, причём они вообще могут располагаться на другом компьютере или даже мобильном телефоне — подключение к нему осуществляется по сетевому протоколу.
Нередко используется конфигурация, когда MPD крутится на микрокомпьютере типа Raspberry Pi, подключенном к колонкам, а управляют им с компьютера или через мобильное приложение.
Также MPD поддерживает плейлисты (списки воспроизведения) и стандартное стриминговое аудио, благодаря чему становятся доступны тысячи Интернет-радиостанций.
Кстати, в Линуксе есть смысл вместе с MPD сразу поставить пакет mpdris2, который свяжет его со стандартным интерфейсом медиаплеера MPRIS. Тогда демоном можно будет управлять стандартными медиа-клавишами (перемотка, пауза, стоп и т.д.).
Ymuse
Теперь о том, зачем, собственно, понадобился ещё один MPD-клиент.
В своё время я перепробовал несколько существующих клиентов и в итоге остановился на минималистичном Sonata, который практически полностью меня устраивал, за исключением пары моментов:
Последний пункт был следствием того, что Sonata написана на Python, который, как известно, не славится особой производительностью.
В общем, терпел я, терпел, и в конце концов не выдержал и написал свой клиент, который получил название Ymuse и иконку в виде бокала для мартини, напоминающего букву Y :
Внешне Ymuse также ожидаемо минималистичен:
При этом его функционал, по моему скромному мнению, достаточно богат:
Работает Ymuse по моим наблюдениям достаточно стабильно — у меня он вкалывает почти непрерывно.
Библиотека:
Потоки (Интернет-радиостанции):
Настройки:
Go Go Go
Для реализации Ymuse я выбрал молодой, но многообещающий язык Go, разрабатываемый Google.
Go — язык со строгой типизацией, который нативно компилируется под огромное количество платформ и архитектур, от Linux до Android и от SPARC до ARM. Это делает его весьма перспективной заменой морально устаревшему и довольно неуклюжему C++. Go очень дружественен к программисту, синтаксисом напоминая Python, а также предоставляет поддержку многопоточности «из коробки».
Ну и самое, пожалуй, главное для того, чтобы язык не зачах где-нибудь на обочине истории, это мощная стандартная библиотека функций, а также тысячи опенсорсных библиотек, любую из которых можно подключить к проекту одной командой go get ….
Именно наличие двух готовых библиотек — gompd для коммуникации с MPD-демоном и gotk3, позволяющей работать с графическим интерфейсом GTK — сделало возможным создание практически полной функциональной копии Sonata за пару недель (!) работы по вечерам. В обе библиотеки, кстати, пришлось слать пулл-реквесты, чтобы что-нибудь исправить или добавить.
И вот результат: с моим плейлистом на 12K+ треков Ymuse работает визуально раза в два-три быстрее «Сонаты». (Замечу в сторону, что скорость работы приложения теперь ограничивается производительностью GTK, что особенно заметно на больших списках.)
Исходный код и установка
Подробнее об установке можно прочитать на странице приложения (версия на английском).
Жалобы и предложения пишите в трекер на Гитхабе (желательно на английском).
MPD, домашнее аудиохранилище
Хотел бы рассказать как на днях решил задачу организации домашнего аудиохранилища.
Для начала, что имеем:
500 Гб, которая находиться на (1).
Что хотелось бы получить в результате (задачи):
1) централизованную библиотеку, к примеру, чтобы созданный на одной машине список воспроизведения был доступен и на другой тоже;
2) возможность управления воспроизведением с любого компьютера;
3) возможность выводить звук на аудиовыход любого компьютера, к примеру, работая на стационарнике и управляя с него слушать музыку на акустике подключенной к ноуту.
Реализация.
Было принято решение использовать mpd, что это писать не буду, про это написано итак много.
В качестве клиента на обоих компьютерах был выбран gpmc (есть и под Windows), главная причина такого выбора возможность переключения выводов звука mpd «на лету». Т.к. использую Gnome 3, звуковая подсистема у меня, по умолчанию, основана на PulseAudio, собственно только он и предоставляет необходимый в данной ситуации функционал.
Ставим всё, что нужно:
Настраиваем:
1. Конфигурируем mpd.
мой mpd.conf:
music_directory «/var/Shared/Media/Music_mp3»
playlist_directory «/home/useer/.mpd/playlists»
db_file «/home/useer/.mpd/mpd.db»
log_file «/home/useer/.mpd/mpd.log»
pid_file «/home/useer/.mpd/pid»
state_file «/home/useer/.mpd/state»
default_permissions «read,add,control,admin»
volume_normalization «yes»
user «mpd»
bind_to_address «any»
port «6600»
audio_output <
type «pulse»
name «Компьютер»
>
audio_output <
type «pulse»
name «Ноутбук»
server «192.168.4.3» #ip-адрес ноутбука
>
filesystem_charset «UTF-8»
id3v1_encoding «UTF-8»
2. Запускаем демона:
sudo /etc/rc.d/mpd start
3. Переходим к буку. Настраиваем PulseAudio (если что — читаем ниже «Трудности»):
paprefs
Ставим галочки:
4. Запускаем на любом компьютере gmpc.
Результат:
Имеем единую фонотеку, управляем воспроизведением с любого ПК и выводим звук на любой ПК.
Переключение выходов осуществляется удобно через меню gmpc:
Трудности:
При запуске paprefs у меня все пункты настроек не доступны (серые). Это связано с тем что текущая в репозиториях версия paprefs собрана с поддержкой более старой версии PulseAudio и не может найти подключаемые модули, у меня они находятся в /usr/lib/pulse-1.1, а paprefs ищет в /usr/lib/pulse-1.0
Mpd что это такое
Краткое описание:
Музыкальный проигрыватель с клиент-серверной архитектурой.
Возможности:
— Поддержка форматов Ogg Vorbis, FLAC, OggFLAC, MP2, MP3, MP4/AAC, MOD, Musepack, APE и WAV, а также всех остальных, которые поддерживаются FFMpeg.
— Удалённое управление MPD через сеть (есть поддержка IPv4 и IPv6).
— Потоковое HTTP воспроизведение FLAC, OggFLAC, MP3 и Ogg Vorbis.
— Читает и кэширует информацию метаданных (теги) — (ID3 (id3v1 и id3v2)), комментарии Vorbis и теги MP4.
— Сохранение, загрузка и управление плей-листами (в формате m3u, с относительными или абсолютными путями).
— Минимальные системные требования.
Для управления mpd-сервером необходим отдельный клиент.
Требуется Android: 4.0.x и выше
Русский интерфейс: Нет
Файл конфигурации:
Измените /sdcard/mpd.conf (github) и добавьте в строку music_directory путь к вашей папке с музыкой:
Конфигурационный файл, который должен находиться во внутренней памяти устройства не является обязательным, но дает ряд преимуществ в использовании. Например, можно указать каталог с музыкой находящийся на sd-карте или организовать трансляцию потокового аудио в локальной сети.
MPD 0.19.9 от 6.04.2015
Настройка потокового вещания
Раскомментируйте или добавьте в /sdcard/mpd.conf следующие строки:
Ссылка на трансляцию будет иметь вид: http://адрес_сервера:6601
Работа программы через Bluetooth соединение:
1) Включаем обнаружение на обоих смартфонах (планшетах) и выполняем сопряжение. Для этого, когда один телефон найдет другой, просто нажмите на него. Если появится сообщение о разрешении подключения, то подтверждаем действие.
На раздающем телефоне заходим в настройки подключений и выбираем пункт «Другие сети» (или «Еще» на более старых версиях ОС). Переходим в рубрику «Модем и точка доступа». Ставим галочку в стоке «Bluetooth-модем».
2) Теперь переходим к принимающему устройству. Заходим в настройки Bluetooth. В списке подключенного оборудования находим раздающий телефон (планшет) нажимаем на него и в появившемся окне ставим галочку в строке «Интернет-доступ». Возможно, придется немного подождать.
3) Запускаем mpd-сервер.
4) Получаем IP адрес сетевого интерфейса bt-pan, который также будет принадлежать нашему серверу.
MPD v0.19.20 (not yet released)
Что нового
* decoder
— ffmpeg: ignore empty packets
— sidplay: fix playback speed with libsidplayfp
MPD v0.20.0.251116 (not yet released)
Что нового
— gme: provide the TRACK tag
— gme: faster scanning
— sidplay: faster scanning
* decoder
— pcm: fix corruption bug with partial frames (after short read)
* output
— winmm: fix 8 bit playback
UE:
— запрос разрешения на чтение данных
— лог сообщений в окне программы
MPD v0.19.21-1 build 16
Что нового
* decoder
— ffmpeg: fix crash bug
* fix unit test failure after recent «setprio» change
* systemd: add user unit
UPD: В последней версии исправлена проблема со звуком при сворачивании окна.
MPD v0.19.21-1 build 17
Что нового
— создание плейлистов (необходимо указать путь к папке в файле конфигурации)
— сохранение данных при смене ориентации экрана
Установка
Пакет mpd находится в официальных репозиториях Ubuntu, поэтому для установки необходимо выполнить команду:
Настройка
Конфигурационный файл можно найти по пути
он очень хорошо комментирован, поэтому если проблем с английским языком нет, с конфигурацией проблем не будет. Ниже приведено описание только тех пунктов, которые необходимо сконфигурировать для работы. Комментарии для удобства чтения удалены.
Замените «имя_пользователя» на имя своего пользователя.
Директория с музыкой.
Целесообразно создать в домашней папке директорию mpd, где будут храниться рабочие файлы приложения.
Следующие 6 строчек указывают место хранения рабочих файлов- создаваемых плейлистов, базы данных, лог файла, файла хранения PID и sticker_file.
Далее следуют основные настройки приложения.
Необходимо указать пользователя, от имени которого будет запускаться демон.
При запуске демона на сервере, необходимо указать IP адреса, которые будут иметь доступ к управлению плеером, возможные варианты:
localhost— для работы на локальном компьютере;
any— для доступа любого клиента из сети;
определенные IP адреса— через запятую можно выборочно указать адреса, имеющие доступ.
И порт, по умолчанию 6600.
Автообновление базы при добавлении файлов в папку с музыкой
Доступ к функциям демона по умолчанию.
Конфигурация аудио выхода. На современных дистрибутивах Ubuntu по умолчанию установлен музыкальный сервер PulseAudio, который целесообразно указать в настройках mpd, в результате этого вы получите нормализованный звук в различных приложениях и mpd. Достаточно указать только тип и имя, остальные параметры mpd определит автоматически.
Одновременно с этим нужно настроить pulseaudio на прием звукового потока по TCP, для этого в файле /etc/pulse/default.pa необходимо раскомментировать и подредактировать строчку
Указываем кодировку имен файлов и id3-тэгов.
и выставлением параметра
Теперь пульс не будет самостоятельно запускаться. Но нам-то он нужен! Создаем файл с именем pulseaudio.desktop в каталоге
Открываем текстовым редактором, например
Использование
Сервер установлен, настроен и запущен, теперь можно подключаться к нему любым из доступных клиентов и наслаждаться вашей любимой музыкой.
Интеграция с Unity
Данный пакет обеспечивает возможность переключать треки вперед, назад, ставить на паузу, а также быстро переключаться между созданными ранее списками воспроизведения.
После установки необходимо настроить приложение, для чего нажать на индикатор звука Unity и выбрать MPD Sound Menu, в появившемся окне в строке Library Path необходимо указать путь к папке с музыкой (это нужно для того чтобы при экспорте путей к файлу в MPRIS можно было формировать валидные URI ), а также, если MPD запущен не на локальном компьютере, а на сервере, ввести адрес MPD-хоста. При желании, можно выставить автоматический запуск при старте системы.
Выглядит это следующим образом: Как видно, в меню не отображается обложка диска воспроизводимого трека и содержимое MPD-sound-menu не корректно отображается на светлых темах GTK-кнопки становятся просто черными (ошибки интерфейса не являются mpd-sound-menu-специфичными и все давно зарепорчены в Ubuntu-пакет indicator-sound 1) ).
В настоящее время разработка проекта фактически заморожена, так как автор больше не использует MPD. Наработки для новой версии (включая асинхронную библиотеку libmpd-qt для работы с сервером MPD) автор готов передать любому энтузиасту, желающему развивать проект дальше.
Консольные клиенты
Полный функционал управления плеером предоставляет консольный клиент mpc. Для установки необходимо выполнить
MPD+cron+mpc=будильник
Создаем и сохраняем плейлист в mpd c приятными уху записями.
Делаем его исполняемым
Добавляем запись в cron пользователя
Клиенты GTK+
Пакет gmpc находится в официальных репозиториях, для установки необходимо выполнить:
При первом запуске появится помощник настройки подключения. Указываем параметры подключения, нажимаем кнопку «Подключить» и «Готово».
Основное окно выглядит следующим образом.
Клиенты Android
MPDroid
Удобный клиент MPD предоставляющий полный функционал управления демоном. После установки необходимо выбрать беспроводную сеть, при подключении к которой будет осуществляться управление MPD
После чего необходимо указать IP aдрес сервера и порт для подключения
Окно управления выглядит так:
Клиенты iOS
Довольно неплохой клиент на iOS MPoD предоставляет полное управление серверной частью плеера. Клиент самостоятельно сканирует сеть на наличие MPD, но так же адрес и порт сервера можно указать вручную.
И к тому же в настройках можно выбирать любой источник воспроизведения, указанный в конфиге MPD