24 июля 2007 г.

Music Player Daemon

В один прекрасный момент меня окончательно достала заторможенность amaroK, очень хорошего KDE'шного проигрывателя. Заторможенность, как мне показалось, вызвана встроенным файловом браузером, да и при добавлении в плейлист бедный amaroK каждый раз перечитывает теги тех композиций, которые когда-то ранее он уже проигрывал. Так часто упоминаемый мною MOC поглюкивал с ALSA-выводом звука и зашкаливал даже при нормальных настройках громкости. (Проблему я уже решил, но об этом в другой раз.) Поэтому я решил рискнуть и попробовать какой-нибудь другой проигрыватель. От проигрывателя мне требуется следующее: быстрота запуска и отклика, универсальность в поддержке форматов и простой и понятный интерфейс (по возможности - Qt3 или Qt4), включающий в себя максимально удобную интеграцию файлового браузера и плейлиста (собственно, как в MOC или amaroK), а так же, очень желательно, поддержку отправки статистики на last.fm. На этот раз, отказавшись от тучи различных вариантов (благо проигрывателей навалом), я остановился на Music Player Daemon.

Те, кто внимательно читал мои комментарии в этом блоге, могут удивиться - мне ведь раньше очень не нравился MPD. Мне всегда не нравилась одна его особенность: необходимость просканировать папки с музыкой прежде, чем он сможет эту музыку играть. Этакая "навязанная" JukeBox'овость, если позволите, мне не нравится и сейчас. Однако, в этом и "фишка" mpd. Объясню, почему. Как я уже написал выше, все проигрыватели со встроенными браузерами тормозят в двух местах: при чтении папок и при чтении заголовков музыкального файла. Тормозят независимо от того, используют ли они ncurses или Qt3. Однако, если вся эта информация уже проиндексирована и хранится в просто понимаемом проигрывателем файле, то скорость его работы резко возрастает. Добавьте к этому серверно-клиентскую работу, поддержку last.fm и возможность подключения различных клиентов, коих на просторах Интернета - десятки, на любой вкус. В общем, есть над чем задуматься.

Установка в ubuntu, как всегда, простая и непринужденная:
$ sudo aptitude install mpd

Если нужна поддержка last.fm, следует проделать и следующее:
$ sudo aptitude install mpdscribble
$ sudo dpkg-reconfigure mpdscribble

И ответить на все вопросы.

После установки рекомендуется почитать man mpd, man mpd.conf и man mpdscribble. Если пользователь в системе один, рекомендуется настройки задавать в /etc/mpd.conf и /etc/mpdscribble.conf. Если несколько - в ~/.mpdconf и ~/.mpdscribble/.mpdscribble.conf. В манах это написано, но я здесь продублирую: очень полезно сделать симлинки папок с музыкой в уже указанной в конфиге папке - /var/lib/mpd/music. В остальном файл конфигурации прекрасно закомментирован и вполне доступен любому пользователю, знакомому с английским языком.

Перейдем к клиентам. Поскольку, как я уже сказал, их существует в избытке, я буду рассматривать их по частям. Начну с консольных. Вообще, мне известно всего лишь два: mpc - просто команда для дачи инструкции серверу и ncmpc - полноценный ncurses-клиент. К ознакомлению рекомендуются оба. Добываются способом, привычных нам с самых первых страниц этого блога:
$ sudo aptitude install mpc ncmpc

Пара примеров использования mpc (допустим, вы уже добавили все необходимые симлинки в нужную папку, комментарии отделены двумя слэшами):
$ mpc update //обновим индекс
$ mpc ls //просмотрим корень индекса
$ mpc add path/to/file.mp3 //добавим файл в плейлист (автодополнение работает)
$ mpc play //запустим проигрывание
$ mpc //посмотрим статус проигрывания

Очень подробная инструкция по использованию дана, как обычно, в man mpc. А я перейду к другому клиенту, особенно дорогому мне, как любителю MOC, скриншоты объяснят все куда красноречивее, чем слова.

На первом скриншоте - изначальное состояние окна. Мы видим уровень громкости, режим (r - повтор, x - режим ознакомления, z - режим вразнобой), плейлист, состояние воспроизведения. Клавиши 1-6 (F1-F6) переключают режимы: 1 - помощь, 2 - плейлист, 3 - навигация по папкам, 4 - навигация по тегам, 5 - поиск, 6 - часы.

В режиме помощи можно ознакомиться с горячими клавишами и даже назначить новые. Интерфейс прекрасно русифицирован. Управление покажется очень знакомым людям, часто пользующимся vim: с помощью клавиш j/k ведется навигация по папкам, плейлисту и даже помощи.

Навигация по папкам (да и по тегам) вполне стандартная - со времен mc более удобного способа еще не изобрели.

Вот так, теперь я пользуюсь проигрывателем, против которого так упорно выступал. И его главный минус - необходимость в предварительной индексации папок с музыкой, прекрасно компенсируется главным плюсом - быстротой работы.

В следующий раз, расскажу о нескольких иксовых клиентах. Спасибо за внимание. :)

PS. Music Player Daemon поддерживает работу только с UTF-8 заголовками mp3-файлов. Иначе говоря, прежде, чем вы сможете видеть кириллицу в заголовках большинства скачанных с интернета и не только файлов, вам потребуется перекодировать их заголовки в UTF-8, довольно подробное руководство можно найти в блоге ValehO.

21 комментарий:

Ivan A-R комментирует...

Самый главный его плюс в том, что если есть необходимость перегрузить иксы, музыка продолжает играть, играть и играть =)

vonderer@darkstar комментирует...

MOC тоже серверно-клиентский. :)

Ivan A-R комментирует...

клиент к нему случаем не screen называется? =)

vonderer@darkstar комментирует...

Мой пост об MOC

Можешь попробовать поставить. Только в версии 2.4.1 какой-то косяк. Если будешь ставить - либо до 2.4.0, либо 2.4.2. Сорцы можешь отсюда взять: http://moc.daper.net/.

И не надо лишнего сарказма. Я знаю, чем отличается серверно-клиентское приложение от обычного.

nagos комментирует...

>поддерживает работу только с UTF-8 заголовками mp3-файлов

Скорее всего плеер использует библиотуку типа id3lib или taglib, и ограничение как раз в них.
Эта проблема решается установкой librcd и патчей для taglib/id3lib для перекодировки.
Скачать это можно тут
http://rusxmms.sourceforge.net/index.php?page=download.php

Юрий Евстигнеев комментирует...

>поддерживает работу только с UTF-8 заголовками mp3-файлов

А как же раздел CHARACTER ENCODINGS в конфиге mpd и конкретно параметр id3v1_encoding ?

vonderer@darkstar комментирует...

id3v1_encoding "CP1251"

Все равно кажет кракозябры. Кроме того, сейчас очень часто используются только id3v2 заголовки, заполненные именно в этой богомерзкой кодировке.

uvizhe комментирует...

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

LXj комментирует...

Я недавно переехал на Убунту с Дженты, и обнаружил, что MPD вообще не играет песни с русскими названиями (которые, понятное дело, русские и в имени файла, и в тэгах). Кодировка системная, в тэгах и в именах файлов -- UTF-8. Не сталкивался?

vonderer@darkstar комментирует...

Нет. Дело в том, что вся музыка у меня лежит на NTFS разделе, монтируемом драйвером NTFS-3g, естественно, с кириллицей он работать не умеет - только с латиницей, поэтому вся коллекция у меня поименована латиницей.

muhas комментирует...

>ps
так в конфиге mpd можно прописывать кодировку файловой системы и кодировку тегов.

muhas комментирует...

> по мне, так самый главный минус mpd - это невозможность хранить музыку на сменных носителях
можно использовать другой конфиг mpd для конкретного диска, и при необходимости перезапускать mpd с этим конфигом

Анонимный комментирует...

Согласно стандарту, в ID3v1 может быть _только_ ASCII, в ID3v2 -- только UTF-8. Так что не надо грешить на производителей программного обеспечения: пропатчьте свой мозг. :)

uvizhe комментирует...

> можно использовать другой конфиг mpd для конкретного диска, и при необходимости перезапускать mpd с этим конфигом

Я хоть и адвансед юзер GNU/Linux, но такой изощреный мазахизм не по мне :))

Vyazovoi комментирует...

mpd позволяет указать кодировку для id3v1 тегов (логично постваить cp1251) а для id3v2 тегов - юникод это стандарт.
Впрочем я делаю так - запускаю easytag на папке с музой он удаляет все id3v1 теги и все ;)

gcc комментирует...

Я хоть и новичок в освоении linux, но мне понравился gtk плеер audacious

Den комментирует...

по поводу подключения ntfs - на легке монтируется все с русскими названиями и т.д. а вот с кодировкой у них не все так главдко... сам юзаю moc и лучьшей альтернативы еще не нашел, только думаю что делать с тегами...

Denis комментирует...

Видел я эти патчи... Лучше конвертировать всё в UTF-8, ибо Ъ

stanislav комментирует...

Сам подумываю о переходе после того, как не захотел собираться amarok2 2.0.2

Ronin комментирует...

2LXj
>[...]MPD вообще не играет песни с русскими названиями [...]
Мне помогало передернуть демона, но работал этот костыль через раз.

2vonderer
>[...] драйвером NTFS-3g, естественно, с кириллицей он работать не умеет [...]
Пока я окончательно не слез с ntfs, у меня русские имена отображались вполне корректно, к сожалению не помню, как конкретно я этого добился...

Анонимный комментирует...

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

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