26 Июнь 2009 г.

Samsung YP-T10: конвертация видео

Если по жуткому стечению обстоятельств Вы тоже стали обладателем этого замечательного чудо-девайса (или ему подобного), то, вероятно, Вы столкнулись с проблемой пережатия видео в совместимый формат. Оказалось, ест этот плеер далеко не все что называется wmv и xvid, как обещано списком поддерживаемых форматов. Разумный компромисс цены и качества, но уважаемые производители, блин... Напишите же, чем его кормить! Ведь не все пользователи хотят запускать ваши говно-программки, прилагаемые к диску.

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

В качестве кухонного комбайна я взял ffmpeg. Он есть в репозиториях.

$ sudo aptitude install ffmpeg


Чтобы сконвертировать видео в нужный формат, можно выполнить вот такую команду:

$ ffmpeg -y -i ljudi_x.mkv -cropleft 120 -cropright 120 -croptop 28 -cropbottom 28 -f avi -vcodec libxvid -s 320x240 -b 400kb/s -r 30 -aspect 4:3 -acodec libmp3lame -ab 192kb/s -ac 2 x_mans.svi


Немного пояснений.

-y - Перезаписываем файл назначения, если по какой-то причине мы начали процесс заново.
-i - Имя исходного файлы в любом поддерживаемом ffmpeg формате.
-cropleft, cropright, croptop, cropbottom, padleft, padright, padtop, padbottom - Обрезаем края и добавляем черные полоски. Это нужно, когда соотношение сторон кадра в исходном видео отличается от 4:3. Если не обрезать, то морды будут вытянутые или сплюснутые. Чтобы подобрать правильные числа, необходимы знания элементарной математики. Обрезание происходит до преобразования, так что манипулировать нужно именно с исходным размером. Узнать их можно, например, запустив конвертацию (после чего ее можно тут же оборвать комбинацеий Ctrl+C). ffmpeg выведет в первых строках своего письма основные данные об исходном формате. Если же вы не умеете считать или просто влом, можете упустить эти параметры.
-f - Формат файла назначения.
-vcodec - Кодек для кодирования видео. Нужен именно libxvid.
-s - Размер кадра на выходе. В примере - разрешение нашего плеера.
-b - Количество данных в секунду - по сути качество. Мне с таким размером хватило 400kb/s. Хотя кто-то предлагал 2000.
-r - количество кадров в секунду. Можно попробовать убрать, чтобы частота кадров не менялась. Не помню, работает ли с другими значениями.
-aspect - соотношение сторон на выходе.
-acodec - Кодек для звука. Нужен именно libmp3lame.
-ab - Количество данных в секунду для звука. По сути качество звука. Рекомендуют три варианта значения, из которых я взял максимальное: 192kb/s. Делать меньше никакого смысла не вижу. Итак нихрена не видно на мелком экране, пусть хоть звук будет нормальный :)
-ac - Количество каналов звука (2 для стерео).

Вот такие настройки работают. Шаг вправо, шаг влево - и может уже не читать.

Если во время конвертации вы хотели бы иметь возможность делать на вашем компьютере что-то еще, читайте про ограничение использования процессора процессом

Читать дальше...

Ограничение использования процессора процессом

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

Как всегда, в Linux нашлось простое решение. Утилита cpulimit достаточно просто и надежно справилась с этой задачей. Можно привязываться к процессу по идентификатору, по имени исполняемого файла и по полному пути. Ограничение задается в процентах. Срабатывает не очень четко, но вполне можно подобрать.

Мануал достаточно простой, и мне показалось, что описывать особенности использования будет лишним. Но если вдруг кому-то все-таки будет непонятно - пишите, с радостью помогу, чем смогу :)

Читать дальше...

16 Апрель 2009 г.

Нет звука в расширениях Firefox (Iceweasel). Молчание ледовых горностаев.

Вы уж простите за флуд, но не могу удержаться. Что значит iceweasel? Ледовый, или может быть снежный? Горностай, или может ласка?

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

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

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

У них там, видите ли, что-то работало нестабильно, и они решили таким образом избавить пользователя от проблем :) Впрочем, было это давно, и имеется ли такая проблема сейчас - я понятия не имею. Может файл просто остался с тех времен. А может даже я сам отключил, потому что достали назойливые звуки веб-страниц! :)

Исправить очень легко: в файле /etc/iceweasel/iceweaselrc заменить ICEWEASEL_DSP="none" на ICEWEASEL_DSP="auto"

Быстро проверить звук можно открыв Инструменты / Консоль ошибок, и введя там вот такое:

var sound = Components.classes["@mozilla.org/sound;1"].createInstance(Components.interfaces.nsISound); sound.playSystemSound('/usr/share/sounds/KDE_Notify.wav');

, указав в качестве звукового файла такой, который имеется в вашей системе.

Читать дальше...

22 Февраль 2009 г.

Липкие размножаются записки. Дубликаты в KNotes

Однажды липкие в KNotes стали размножаться. Думал, пройдет само, как и началось. Но продолжалось это до тех пор, пока я не взял их за то самое место.


$ rm ~/.kde/share/config/kresources/notes/stdrc


Не знаю, от куда взялась эта проблема, но в багтрекере KDE написано, что это единственный способ ее решения.

Читать дальше...

18 Февраль 2009 г.

Как бибикнуть из консоли

Несмотря на все прелести GUI, для меня многие вещи проще сделать из консоли. Например, чтобы установить какую-то программу, намного проще написать "apt-get install программу", чем запускать Synaptic. Вот только свёрнутая консоль никак не сообщает мне, что запущенная команда уже выполнилась.

Очевидно решение этой проблемы - выполнить после основной команды вторую, производящую какой-либо звук. Например вот так:


$ sudo apt-get install <программу> ; <бибикнуть>


Вот только какую такую команду запустить, чтоб бибикнуть?

Первый способ, который я узнал, был выводом специального неотображаемого символа с кодом 17:


$ echo -e "\a"


Это, пожалуй, самый особенный из неотображаемых символов. Он не просто неотображаемый, а воспроизводимый с помощью короткого звука. Введен он специально для того, чтобы можно было бибикать в консоли. И по сей день его вывод воспроизводит звук. Но только в консоли. Текстовый редактор вряд ли будет бибикать. :) Что нам, в принципе, и не нужно. Да и не любой эмулятор терминала издаст звук. У меня из эмуляторов дудел только konsole.

В общем, казалось бы, все просто. Но если вы не программист, то высока вероятность просто забыть эту команду. Я забыл даже не смотря на то, что программист :) Поэтому, если собираетесь часто использовать ее, сделайте для нее короткий алиас (синоним).

С таким же успехом можно определить синоним и для команды запуска музыкального проигрывателя:


$ play "/home/raa/sounds/грозный_клич_тарзана.wav"


Естественно, для этого должен быть установлен play. По крайней мере в репозиториях он есть, а может уже и на вашем компьютере.

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


$ beep


Казалось бы, что может быть проще? И почему я сразу не додумался? Додумался, вот только получил в ответ "команда не найдена" и расстроился. Если Вы тоже расстроились, то спешу Вас обрадовать. Она все-таки есть! :)


$ sudo apt-get install beep


Бип-бип ура!

Читать дальше...

29 Январь 2009 г.

Печатаем книгу сами! Спуск полос в домашних условиях

Если ваш новенький цветной фото-принтер оказался говностанком для печати говнофоток...

Если у Вас нет денег, чтобы купить книжку о том, как заработать денег...

Если Вы решили сделать близкому и любимому человеку отличный подарок (а как известно, книга - лучший подарок)...

Если ваши глаза собираются в пучок от длительного чтения с экрана...

Если Вы живете в тундре, и книжных магазинов там просто нет (хотелось бы знать, где вы взяли комп)...

Если у Вас просто чешутся руки и хочется сварганить чего-нибудь эдакого...


Значит, Вы попали на эту страницу совершенно не случайно, ибо проведение привело Вас сюда, чтобы рассказать о том, что счастье - рядом.

Итак, вам необходимы:

1. Принтер, желательно с дешевыми расходниками (я, к примеру, на свой струйник поставил СНПЧ и забыл о смене картриджей).

2. Не очень умелые ручки.

3. Неизвестно от куда достатая книга в формате PDF.

Если Вы уже пробовали печатать книгу и осознали, в чем заключается проблема, то этот абзац можете смело пропустить. В противном случае, пробуем распечатать нашу книгу. Можно сделать это мысленно. Представляем себе огромные (А4) листы и все связанные с этим неудобства. И, конечно же, рождается желание свернуть это дело как минимум попалам. По этой причине мы делаем вторую попытку и печатаем в две колонки на обе стороны листа. Это легко включается в диалоге печати. Чтобы не переводить бумагу, печатаем только первые 8 страниц (по 4 на каждую сторону). И теперь пробуем слепить из них книжку. Вероятно, довольно быстро Вы осознаете безнадежность этого дела.

А все дело в том, что для печати книги необходимо провести такую процедуру, как спуск полос. Этот загадочный термин означает в типографии размещение нескольких страниц на оном листе бумаги. Естественно, что страницы должны быть в правильном порядке, чтобы после нарезки и сгибания листов мы с вами читали книгу последовательно, начиная с первой странички, и заканчивая последней.

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

Чтобы сделать спуск полос, устанавливаем полезный пакет утилит для работы с файлами postscript:


$ sudo apt-get install impose+


И кидаем в папку ~/bin файлик make_book со следующим содержимым:


#!/bin/bash
pdftops $1 - | psbook | psnup -m 0 -b 1 -2 | ps2pdf - `echo $1 | sed -e "s/\.\(\w*\)/_book.\1/g"`;


Не забудьте сделать этот файл исполняемым:


$ chmod u+x make_book


Чтобы подготовить книгу к печати, просто воспользуйтесь вашим сриптиком (само собой, папку ~/bin нужно прописать в $PATH):


$ make_book my_book.pdf


После этого остается только распечатать файл my_book_book.pdf. Печатаем сначала четные страницы, переварачиваем, и печатаем нечетные. Или наоборот. Или в обратном порядке. Или сразу в один проход. Это уже зависит от модели вашего принтера. В любом случае, думаю, испортив несколько потенциальных книг Вы поймете, как делать правильно. Поэтому, рекомендую тренироваться на маленьких книгах. Сказка для колобка подойдет. Если найдете ее в формате PDF :)

Теперь разберем подробнее, что делает эта длинная команда.

pdftops - преобразовывает PDF в PostScript. Именно в этом формате мы будем превращать документ в книгу.

psbook - пересортировывает страницы в сигнатуры. Проще говоря, на выходе страницы располагаются в таком порядке, в каком они шли бы на отдельных листах тетради. Здесь стоит обратить внимание на некоторые подробности. Если Вы возьмете в руки хорошую книгу с хорошим переплетом, и внимательно посмотрите на нее то, возможно, обратите внимание, что она состоит из множества тетрадочек. Это замечательный способ сделать надежную прочную толстую книжку. И это не так уж сложно, как может показаться на первый взгляд. Первый экземпляр книги я сделал именно таким методом. Однако, это занимает некоторое время. Если вам не нужна красата, а нужно быстро напечатать и прочесть, то лучше распечатать одной тетрадью. А если Вы все же решили взяться за дело серьезно, то в помощь вам придет параметр '-s', после которого нужно указать число страниц в каждой тетрадке (кратное 4-м). О том, как самому сплести книгу, поведает Вам эта замечательная статья.

psnup - укладывает страницы на один лист. параметры '-m' и '-b' задают отступы вокруг листа и вокруг страницы соответственно.

ps2pdf - конвертирует результат из PostScript обратно в PDF. Здесь с помощью sed имя конечного файла формируется на основе исходного с суфиксом '_book'. В принципе, возможно, Вам нет необходимости конвертировать обратно в PDF. Можно сразу печатать файл PostScript. Но у меня с принтером Epson Stylus CX8300 на бумаге почему-то получается низкое разрешение и всяческие неприятные артефакты. Где-то на каком-то форуме встречал аналогичную жалобу владельца принтера Epson. А конвертация в PDF эту проблему снимает.

Вот, собственно и все. Чем Вы будете сшивать свою "тетрадь" - это уже ваши трудности. Могу подкинуть пару идей: иголка с ниткой, строительный степлер, клей ПВА, болты, шурупы, гвозди, канцелярские зажимы, все, моя фантазия исчерпалась, а Ваша?

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

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

Приятного чтения!

Читать дальше...

29 Декабрь 2008 г.

Broadcom BCM4318 и Kubuntu 8.04.1 - разгоняем Wi-Fi

Уже достаточно давно я заметил, что обновления Kubuntu несут с собой много сюрпризов. При этом количество приятных неожиданностей примерно равно количеству неприятных. Поэтому я решил обновлять эту ОС до предпоследнего релиза, когда все основные баги уже выявлены и широко освещены на форумах вместе с путями их преодоления. Но оказалось, что такая политика тоже имеет свои недостатки.
После выхода релиза 8.10 я обновил свою Kubuntu до версии 8.04.1, ожидая от нее стабильности (все-таки версия "с долгосрочной поддержкой") во всех отношениях. Но буквально с первых минут пользования ею меня ожидало крупное разочарование в отношении Wi-Fi: все соединения в локальной сети висли через пару секунд работы, хотя соединение с Интернетом, которое работает через ту же сетевую карту, было вполне нормальным.

Я попробовал установить фиксированную скорость вместо автоматической на точке доступа. Вначале я установил 802.11g (54 Мб/с), но проблему это не решило. Тогда я установил скорость на 802.11b (11 Мб/с). Соединение перестало зависать, но скорость достигала от силы 4 Мб/с, что мне совсем не нравилось.
Я начал искать ответы в Интернете и нашел их (как и ожидал) великое множество. Но практически все они касались версии 8.04, и описанные там проблемы уже были исправлены в версии 8.04.1. Однако на определенных форумах утверждалось, что виновато во всем само ядро 2.6.24, используемое как в 8.04, так и в 8.04.1, а вот ядро 2.6.25 из свежего релиза 8.10 уже работает корректно с драйверами для BCM43xx адаптеров.
Этот факт поставил меня перед дилеммой: либо изменить своему принципу "предпоследнего релиза" и обновиться до 8.10, либо мириться с черепашьей скоростью до выхода следующего релиза.
Для начала я решил попробовать разные драйверы (как с использованием ndiswrapper, так и без него) для имеющегося ядра. Но результат остался прежним.
Тогда я решил попробовать, так сказать, скрестить цаплю с козлом - установить ядро от 8.10 на имеющуюся 8.04.1.
Для этого я добавил новые репозитории в /etc/apt/sources.list

deb http://archive.ubuntu.com/ubuntu/ intrepid main
deb http://archive.ubuntu.com/ubuntu/ intrepid-updates main

Затем выполнил

$ sudo apt-get update

И вот в моем распоряжении появились новые ядра (и многое другое). Вначале я хотел было выполнить

$ sudo apt-get upgrade linux-image-386

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

$ sudo apt-cache search linux-image
...
linux-image-2.6.25-2-386 - Linux kernel image for version 2.6.25 on i386
...

и выполнил

$ sudo apt-get install linux-image-2.6.25-2-386

Потом, конечно, перезагрузка с новым ядром, и ... почему-то результат меня совсем не удивил, - сеть пропала вообще (кроме того пропал звук, но к этому я уже почти привык :) ). Правда на этот раз все обошлось одним ударом в бубен: после повторного указания WEP-ключа я вновь оказался на связи с цивилизацией. Вернув автоматические настройки скорости, я обнаружил, что соединение больше не виснет, что уже радовало. Но вот скорость выросла всего в два раза. При других обстоятельствах я бы может и обрадовался, но в данном случае скорость составила 8 - 9 Мб/с, что меня тоже не очень устраивало.
В репозитории intrepid я увидел также ядро 2.6.27, но только generic. И я решил - ломать, так ломать

$ sudo apt-get install linux-image-2.6.27-9-generic

Еще одна перезагрузка. Ух-ты, звук вернулся :) . Правда с сетью повезло меньше - все те же 8 - 9 Мб/с. Но на этот раз я заметил интересные сообщения в dmesg, касающиеся беспроводного адаптера

b43-phy0 warning: You are using an old firmware image. Support for old firmware will be removed in July 2008.
b43-phy0 warning: You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the latest firmware (version 4).

Другими словами мне говорят, что моя прошивка устарела и, мол, не пошел бы я за новой. Ну что ж, куда послали, туда и пошел. Согласно приведенным там инструкциям обновил прошивку

wget http://bu3sch.de/b43/fwcutter/b43-fwcutter-011.tar.bz2
tar xjf b43-fwcutter-011.tar.bz2
cd b43-fwcutter-011
make
cd ..
export FIRMWARE_INSTALL_DIR="/lib/firmware"
wget http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2
tar xjf broadcom-wl-4.150.10.5.tar.bz2
cd broadcom-wl-4.150.10.5/driver
sudo ../../b43-fwcutter-011/b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta_mimo.o

Для верности еще раз перезагрузился. Ну вот теперь уже кое-что. Скорость достигает 16 - 20 Мб/с. А поскольку идей по ее дальнейшему увеличению у меня не осталось, то пока на этом и остановлюсь.
А строчки с репозиториями, добавленные в /etc/apt/sources.list я закомментировал, чтобы остальные пакеты у меня остались от 8.04.1.

Читать дальше...

14 Ноябрь 2008 г.

Пропал звук после обновления? Восстанавливаем без бубнов!

Ранее Mak_s рассказывал о том, как он восстанавливал звук после обновления ядра. Теперь та же беда постигла и меня. Гугл сразу же вывел меня на собственный блог )))) Только собирать ALSA вручную не было никакого желания. Ну и правильно, потому в моем случае решение оказалось гораздо проще.

Сначала я откатил alsa-base до стабильной версии. Это можно сделать, например, с помощью Synaptic. Запускаем его, находим нужный пакет, выбираем пункт меню Пакет -> Указать версию. Там указываем версию stable. И жмем кнопку Применить на панели инструментов. Чтобы этот пакет не обновлялся сам по себе при общем обновлении системы, можно заблокировать его все в том же меню Пакет.

Затем я запустил утилиту alsaconf. На все вопросы - "да-да-да", и вот звук уже работает. Утилита сказала напоследок "Оторвись по полной!", что я и делаю :-P

Все равно не работает? Умные люди, возможно, посоветовали бы перезапустить какого-нибудь демона или перезагрузить какой-нибудь модуль... Я же в этом деле - чайник, так что предлагаю вам просто перезагрузить компьютер, чтобы уж наверняка! :-) Хотя, конечно, можно попробовать и вот так:


$ sudo /etc/init.d/alsa reload


Удачного восстановления!

Читать дальше...