Показаны сообщения с ярлыком media. Показать все сообщения
Показаны сообщения с ярлыком media. Показать все сообщения

четверг, 31 декабря 2009 г.

Ncmpcpp. MPD-клиент с двумя плюсами

MPD представляет собой клиент-серверную систему для прослушивания музыки. Основная особенность состоит в том, что где-то в фоне работает демон, играющий музыку, а этим самым демоном можно управлять с помощью различных клиентов. Этих самых клиентов в природе существует много, но находятся создатели новых клиентов, по-видимому, остающиеся недовольными уже созданными программами.

В данной заметке я бы хотел рассказать о клиенте Ncmpcpp, представляющим собой логическое продолжение клиента ncmpc, который является удобным консольным клиентом с псевдографическим интерфейсом (ncurses).

Ещё один?

Да, казалось бы, зачем огород городить? Но у ncmpcpp есть ряд преимуществ, по сравнению с любимым многими ncmpc.

Вот неполный список полезностей. Добавлены возможности:

  • Изменение стиля оформления плейлиста и списка песен в базе (положение полей, а также их цвет).
  • Чтение текста песен (не наших :).
  • Редактирование тегов, не выходя из клиента и без необходимости обновлять заново базу.
  • Удаление неугодныех файлов с диска.
  • Добавление в плейлист случайных песен. Может кому-нибудь и будет полезно, чтобы среди терабайтов музыки не забыть какая музыка ещё представлена на компьютере.
  • Поиск песни в браузере базы по песне в плейлисте.

Конфиг расположен по адресу ~/.ncmpcpp/config и прекрасно документирован.

Правка тегов

Особенно полезна, на мой взгляд, возможность редактирования тегов. К примеру в ncmpc нельзя было, изменив теги, во внешнем редакторе, добиться их изменения в базе - отображалось всё по-старому. Необходимо было переименовывать файлы (директории), обновлять базу, а потом возвращать прежние имена с последующим обновлением. Здесь же можно выбрать нужный файл (или директорию с файлами), подправить теги, и получить сразу же скорректированную базу.

Вот так это выглядит на скриншоте:

Как видно на скриншоте, есть возможность сделать первые буквы заглавными, а также все - строчными. Изменения вступают в силу после нажатия на «Save».

Если хочется подправить теги, скажем, текущей песни в плейлисте, то можно ткнуть на песне в плейлисте «e», откроется «Tiny tag editor», где и можно внести изменения.

Лирика

Лирика качается с двух ресурсов: lyricwiki.org и lyricsplugin.com. Но похоже, что c первой проблемы со скачиванием нахаляву, поэтому можно стягивать со второго ресурса. Для этого в конфиге надо указать lyrics_database = "2". После этого можно выставлять курсор на интересующую песню и давить «l» (латинская маленькая L).

Easy money!

Резюме

Данный клиент почти не отличается от старого-доброго ncmpc, но содержит некоторые рюшечки, которые могут оказаться полезными.

С Новым Годом!


Читать далее…

четверг, 26 ноября 2009 г.

Как удалить однотонный фон с картинки с помощью ImageMagick

Есть картинца с однотонным фоном.

Надо Этот тон удалить и заменить белым.

Нет ничего проще, если под рукой есть imagemagick.

convert with-background.png -transparent "#FFFFCC" \
   -background white -layers flatten white-background.png

Здесь "#FFFFCC" означает цвет фона моей картинки.

Конструкция -transparent $COLOR делает прозрачным всё, что обладает заданным цветом. А -background white совместно с -layers flatten делает фон белым. Хотите другой? Меняйте white на всё, что пожелаете, и всё.

Вы спросите, почему именно -layers flatten? Не знаю :) Работает, главное. Также работает -layers merge и -layers mosaic. Но поскольку здесь изображение одно, то разницы между ними, вроде как нет.

P.S. Мне это понадобилось, потому что не оказалось под рукой нужного графика. Исходных данных нет, всё что было, так это рисунок внутри PDF файла, который я оттуда успешно стянул :)
Читать далее…

пятница, 21 августа 2009 г.

Включение и отключение flashplayer в Conkeror и не только

Проблема

Есть в природе flash-анимация, которая проигрывается flash-плейером. Иногда даже она может быть полезной, например, если очень хочется глянуть в интернете на http://youtube.com какой-нибудь ролик. Но вот когда она мелькает перед глазами, демонстрируя бездарную рекламу, появляется желание от неё избавиться, не только из-за навязчивости но и из-за прожорливости флеша в смысле процессорных ресурсов.

Поэтому хочется иметь по умолчанию флеш в отключенном состоянии, а включать только при необходимости. В популярных браузерах есть возможность включать и отключать это зло кликами мыши. К сожалению, в менее популярном браузере Conkeror такой опции пока нет (по крайней мере для версии Debian-0.9~git090223-1), а очень хотелось бы. Здесь я напишу каким образом я решил поставленную задачу. Решение не самое идеальное, поэтому при наличии интересных мыслей по этому поводу, добро пожаловать в комментарии!

Дано

На борту Debian Lenny (stable, на момент написания заметки),

$ uname -r
2.6.26-2-686

Flash поставлен проприетарный, flashplugin-nonfree, (другой на моей технике просто не шевелится) по официальной инструкции.

Предлагаемый подход и реализация

Поскольку для работы плейера пользователю необходимо иметь права для чтения библиотеки libflashplayer.so, запрет на чтение приведёт к тому, что неугодная анимация работать не будет. Файл libflashplayer.so лежит в моём случае в директории /usr/lib/flashplugin-nonfree:

$ ls /usr/lib/flashplugin-nonfree
итого 9916
-rw-r--r-- 1 root root 10131640 Фев  3  2009 libflashplayer.so
-rw-r--r-- 1 root root     2933 Июл 27  2007 pubkey.asc

Как видно, владелец - root, а группа и все остальные имеют право на чтение. Этого-то права мы и собираемся лишить, но не здесь, и чуть позже. Для начала скопируем файл libflashplayer.so в директорию ~/.mozilla/plugins

$ cp /usr/lib/flashplugin-nonfree/libflashplayer.so ~/.mozilla/plugins

Почему туда? Именно там Conkeror ишет плагины в первую очередь. На вики-странице говорится о том, что кроме того плагины могут лежать в ~/.conkeror/plugins, но у меня, почему-то это не работает.

Теперь лишим нас всех прав для чтения этого файла:

$ chmod a-r ~/.mozilla/plugins/libflashplayer.so

В результате, после перезагрузки страницы, содержащей флэш, мы насладимся его отсутствием. Вернуть его обратно можно, дав права на чтение:

$ chmod a+r ~/.mozilla/plugins/libflashplayer.so

Поскольку, для такой процедуры не очень здорово всегда писать в терминале подобную команду, имеет смысл забиндить эти действия на какие-нибудь комбинации клавиш. Я, например, для этого пользуюсь xbindkeys, и добавил в ~/.xbindkeysrc следующие строки (но можно использовать способы заданий комбинация клавиш для вашего оконного менеджера или для другой программы "забиндивания"):

"chmod a-r ~/.mozilla/plugins/libflashplayer.so"
Mod4 + bracketright
"chmod a+r ~/.mozilla/plugins/libflashplayer.so"
Mod4 + bracketleft
Таким образом, при нажатии Win + [ флэш включается, а при Win+] прибивается (не забываем предварительно перезапустить xbindkeys).

В принципе, всё работает, казалось бы, добились того, чего хотели. Всё бы ничего, но вот если вы залезете на тот же http://youtube.com, включив флэш, то выключение таким образом уже не отобразится на поведение флэша на других страницах, потому что программа flashplayer уже запущена и работает, а все изменения на неё не влияют. Чтобы изменения вступили в силу, надо просто закрыть страничку youtube. Хотя это и не всегда у меня наблюдалось.

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

Резюме

Итак, пока для Conkeror пока не прикрутили переключалку флеша, я сгородил свою :) Разумеется, она должна работать не только для Conkeror, но и, судя по всему, для Firefox (полагаю, что тогда надо запретить пользователям читать общий файл /usr/lib/flashplugin-nonfree/libflashplayer.so, для чего нужны права рута, что для машины с одним пользователем приемлемо), хотя в этом и нет особой нужды, потому что там есть свои резалки флэша.

Поскольку решение неидеальное, был бы очень рад услышать пожелания/предложения.


Читать далее…

пятница, 22 мая 2009 г.

MPlayer и xscreensaver

Проблема 1

Для проигрывания видео на компьютере я использую mplayer в качестве плеера. Лёгкий и удобный, а больше ничего и не надо. Всё бы ничего, но была проблема со скринсейвером. Если просто при дефолтных настройках запустить фильм, то через определённое время включится хранитель экрана. Очевидно должно быть решение, конечно не дело каждые 10 минут двигать мышкой. Раньше (версию mplayer уже не скажу) всё относительно успешно решалось опцией -stop-xscreensaver.

mplayer -stop-xscreensaver movie.avi
Или, чтобы каждый раз не печатать эту опцию, можно прописать в конфиге ~/.mplayer/config:
stop-xscreensaver=1
После этого действительно заставка не включалась во время воспроизведения фильма. Если же воспроизведение приостанавливалось на некоторое время, то включалась заставка во время паузы. После того, как воспроизведение запускалось вновь, скринсейвер вновь начинал маячить перед глазами с уже до боли знакомой периодичностью. Меня это в своё время начало капитально бесить - ещё бы плеер и скринсейвер уже просто «динозавры», а так и не научились жить вместе. Кстати, в последнее время stop-xscreensaver=1 перестал работать. Здесь есть решение, но оно неидеальное - тормоза страшные, как говорят разработчики mplayer из-за багов xscreensaver.

Решение проблемы 1

Я подумал, а так ли мне нужен скринсейвер? Вообще-то, всё, что мне от него требовалось - это чтобы экран через определённое время гасился, не более того. А в Linux за это отвечает DPMS (технология, позволяющая управлять питанием монитора, когда компьютер не используется). Стало быть, настроив DPMS, можно избавиться от скринсейвера. Более того, как оказалось тогда, mplayer прекрасно взаимодействует с DPMS, а именно, во время воспроизведения не включается независимо от предыстории, в отличие от xscreensaver. Собственно, то, что надо.

Настраиваем DPMS

В Debian Lenny настраивать DPMS следует правкой файла xorg.conf следующим образом. В раздел "Monitor" добавим строку Option "DPMS" "true":

Section "Monitor"
        Identifier      "Configured Monitor"
        DisplaySize 339 271
        Option  "DPMS" "true"  # то, что добавили
EndSection
А затем, если нет, создадим раздел "ServerFlags" со следующим содержанием:
Section "ServerFlags"
        Option "StandbyTime" "5"
        Option "SuspendTime" "20"
        Option "OffTime" "30"
EndSection
Значения для режима ожидания, спящего режима и отключения, соответственно, указываются в минутах. Во многих руководствах говорится о том, что последние строки надо добавлять в раздел "ServerLayout", однако у меня после такого добавления не стартовали иксы. Может, версия xorg (1:7.3+18), а может именно Debian имеют отличную настройку. В любом случае, man Xorg об этом говорит.

Итак, в результате, кино играет, экран не гаснет именно во время воспроизведения. Как всё здорово... было до недавних пор. По всей вероятности, mplayer обновился, принеся ещё одну проблему.

Проблема 2 и её решение

После обновления mplayer (как мне кажется) стал тухнуть экран во время воспроизведения. Немного погуглив и обнаружив, что в современном мире люди бьются с проблемами xscreensaver использованием опции heartbeat-cmd="xscreensaver-command -deactivate", я протестировал следующую команду:

mplayer -heartbeat-cmd="xset dpms force on" movie.avi
В результате получил то, что надо - экран не гаснет во время воспроизведения, а когда воспроизведение останавливается на длительное время - гаснет вновь. После выключения фильма система DPMS продолжает работать.

Для полного счастья осталось прописать в конфиге ~/.mplayer/config искомую строку:

heartbeat-cmd="xset dpms force on"

Вот и всё, теперь во время просмотра фильма вы будете видеть фильм, а не чёрный экран и не прыгающие квадратики. Интересно, надолго ли… Не взбредёт ли в голову разрабам опять что-то поменять? :)

Если вы всё-таки жить не можете без скринсейвера

Если скринсейвер нужен, то, быть может сработает опция heartbeat-cmd="xscreensaver-command -deactivate &". Знак амперсанда в конце строки обязателен, иначе будут тормоза, по крайней мере, где-то высказывались так на просторах инета. Без амперсанда тормоза действительно есть, но этот вот рецепт сам не пробовал.


Читать далее…