воскресенье, 30 марта 2008 г.

О чём стоит помнить при использовании Enlightenment-DR17 (и не только)

/*
1. Настройка меню.

Всё идёт в соответствии со спецификациями freedesktop.org. Но одно дело - рыть доки, а другое - быстренько наколбасить себе что-то стоящее. Ставим xdg-utils и смотрим, что оно должно в идеале выкинуть "на гора":


> set | grep -i xdg

XDG_CACHE_HOME=/home/sda/.cache
XDG_CONFIG_DIRS=/etc/xdg
XDG_CONFIG_HOME=/home/sda/.config
XDG_DATA_DIRS=/usr/share:/usr/local/share
XDG_DATA_HOME=/home/sda/.local/share


Каждый дистрибутив устанавливает (может установить) свой "скелет", положив файлы в $XDG_CONFIG_DIRS/menu. То бишь в нашем случае - в /etc/xdg/menu. Но это - не путь лентяев. Есть способ и попроще. Если мы хотим на скорую руку "добросить" приложения KDE - то достаточно прописать в $XDG_DATA_DIRS или в $XDG_DATA_HOME путь к каталогу, содержащему applications/ и desktop-directories/. И (опционально) можно "подтянуть" структуру KDE (файлы *.menu). Например $XDG_DATA_HOME указывает на /home/sda/.local/share. Смотрим:


> ls -la /home/sda/.local/share

total 3
drwxr-xr-x 9 sda users 248 2007-11-30 01:43 .
drwxr-xr-x 3 sda users 72 2007-07-18 10:28 ..
drwx------ 3 sda users 80 2007-09-04 19:25 amyedit
drwxr-xr-x 3 sda users 2920 2008-03-27 04:17 applications
drwxr-xr-x 4 sda users 96 2007-07-18 10:28 audacious
drwxr-xr-x 2 sda users 456 2008-03-24 10:48 desktop-directories
drwxr-xr-x 2 sda users 640 2008-02-23 02:26 icons
drwxr-xr-x 3 sda users 136 2008-03-30 18:50 tracker
drwx------ 4 sda users 96 2007-09-02 14:08 Trash


Следовательно, если KDE стоит в /opt/kde, то "добить" стоит /opt/kde/share, убедиться, есть ли что-нибудь полезное в /opt/kde/etc/xdg/menus и выправить пару переменных:


export XDG_DATA_DIRS="/opt/kde/share:$XDG_DATA_DIRS"
export XDG_CONFIG_DIRS="/opt/kde/etc/xdg:$XDG_CONFIG_DIRS"

или

export XDG_DATA_HOME="/opt/kde/share:$XDG_DATA_HOME"
export XDG_CONFIG_HOME="/opt/kde/etc/xdg:$XDG_CONFIG_HOME"


Делаем простейшее вложенное меню для E17-го:

> cat ~/.local/share/desktop-directories/X_Apps.directory

[Desktop Entry]
Encoding=UTF-8
Type=Directory
Icon=/home/sda/.icons/Dark-Glass/128x128/apps/x.png
Icon[en_US]=/home/sda/.icons/Dark-Glass/128x128/apps/x.png


> cat ~/.e/e/applications/menu/favorite.menu


<menu>
<name>Other</name>
<menu>
<name>X_Apps</name>
<defaultappdirs>
<defaultdirectorydirs>
<directory>X_Apps.directory</directory>
<include>
<filename>xfontsel.desktop</filename>
<filename>xdvi.desktop</filename>
<filename>xman.desktop</filename>
<filename>xcalc.desktop</filename>
<filename>xedit.desktop</filename>
<filename>xmag.desktop</filename>
<filename>xclipboard.desktop</filename>
</include>
</defaultdirectorydirs></defaultappdirs>
</menu>
</menu>



Все *.desktop файлы создаём в ~/.local/share/applications. Остальное уже описывал. Правда иконку на вложенное меню в тот раз не осилил (в .directory файле одной линии не хватило для победы). И скриншотик с результатами на закусь:



Теперь о том, как сделать каскадное вложенное меню и включить его в структуру xdg:

> cat ~/.local/share/desktop-directories/wine-wine.directory

[Desktop Entry]
Type=Directory
Name=Wine
Icon=wine

> cat ~/.local/share/desktop-directories/wine-Programs-EmuZWin.directory

[Desktop Entry]
Type=Directory
Name=EmuZWin
Icon=folder

> cat ~/.local/share/desktop-directories/wine-Programs.directory

[Desktop Entry]
Type=Directory
Name=Programs
Icon=folder

> cat ~/.config/menus/applications-merged/wine-Programs-EmuZWin.menu # именно так и появляется структура xdg меню #

<menu>
<name>Applications</name>
<menu>
<name>wine-wine</name>
<directory>wine-wine.directory</directory>
<menu>
<name>wine-Programs</name>
<directory>wine-Programs.directory</directory>
<menu>
<name>wine-Programs-EmuZWin</name>
<directory>wine-Programs-EmuZWin.directory</directory>
<include>
<filename>wine-Programs-EmuZWin-Help and Catalog.desktop</filename>
<filename>wine-Programs-EmuZWin-EmuZWin.desktop</filename>
<filename>wine-Programs-EmuZWin-Uninstall EmuZWin.desktop</filename>
</include>
</menu>
</menu>
</menu>
</menu>


> cat ~/.local/share/applications/wine/Programs/EmuZWin/EmuZWin.desktop

[Desktop Entry]
Name=EmuZWin
Exec=env WINEPREFIX="/home/sda/.wine" wine "C:\\Program Files\\EmuZWin\\EmuZWin.exe"
Type=Application
Path=/home/sda/.wine/dosdevices/c:/Program Files/EmuZWin
Icon=23b5_emuzwin.0

Аналогичные desktop файлы для полноты картины ('Help and Catalog.desktop' и 'Uninstall EmuZWin.desktop') находятся в ~/.local/share/applications/wine/Programs/EmuZWin/

Примерчик конечно ещё тот, но и результат соответствует:



Надеюсь этого хватит с избытком.


2. Ребята, давайте жить дружно...
/Кот Леопольд/

Все попытки в E17-ом использовать прозрачность/(псевдо прозрачность) терминалов ни к чему не приведут. Ибо формат пользовательского интерфейса - edje, а не png/xpm/jpg... Либо терминал скомпилен с поддержкой "картинок" (pixmaps) и картинка грузится из ~/.Xdefaults (профайла, вбивается в Exec строку .desctop файла и т.п.), либо требуется запустить некий сервис, который обеспечит наличие "фона" для "вьюпортов"/виртуальных столов. Легче всего это проделать, нарисовав в ~/.profile что-то наподобие:


if [ "`ps aux | grep enlightenment | grep -v grep`" != "" ] ; then
feh --bg-seamless /home/sda/source/install/wallpapers/emotion.jpg \
--bg-scale /home/sda/source/install/wallpapers/emotion.jpg && \
gnome-settings-daemon &
fi


Да, временное решение для одного вьюпорта/(виртуального рабочего стола). Ежели просто стартануть gnome-settings-daemon (без feh), то фоном станет картинка gnome. Что делать при нескольких столиках - не знаю. Пробежавшись по gconf-editor-у так и не понял, может ли гном держать где-то данные о соответствии картинок виртуальным столам. По идее - обязан. Дополнения приветствуются. Запуск gnome-settings-daemon и настройка внешнего вида уберут лишние элементы из gtk приложений:



Затея сия оправданна. Слева - Firefox, справа - LinuxDC++. Что и как с qt - извините, помню, что kde может при настройке из kcontrol привязать картинки к вьюпортам, но что именно нужно запустить сервисом для этого - страшно даже подумать. Может не прав, но... Надо конечно смелости набраться и поставить kde ещё раз... Если же в kde и gnome сопоставление вьюпортов с картинками завязано на kwin/metacity - то боюсь, что разрулить ситуацию малой кровью не получится. Тут есть ещё нюанс: сопоставить вьюпорты (Workspaces) E17-го и gnome/kde. Тянуть древние технологии в "космос" - занятие требующее творческого подхода...

3. Немного об оптимизации.

В качестве "точки отсчёта" примем следующую (процессор - P-III-866, ОЗУ - 1.5Gb, тема E17-го - 23Oz_0_16_999_042_1):

> top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5266 sda 20 0 52688 34m 13m R 23.3 2.3 40:03.39 enlightenment

> enlightenment_remote -module-list | wc
58 230 1741

56 загруженных модулей: от управления громкостью до чтения RSS. Прежде чем экспериментировать, двигаем в 'Configuration Panel -> Advanced -> Profiles' и создаём новый профайл, копируя текущие настройки. После любых издевательств с системой откат/восстановление пройдёт одним щелчком при выборе бэкапа профайла. Приступим, выгрузив для начала все модули. оставил только управление почтой. При этом все наши настройки сохранены и работают. Доступны все хоткеи, меню, управление мышью, все рабочие столы - то есть при выгруженных модулях нет ни малейшей потери базового функционала.

> enlightenment_remote -module-list

REPLY <- BEGIN REPLY: "mail" ENABLED 1 REPLY <- END Закрываем все окна, кроме: entrance_login───enlightenment─┬─bash───gnome-settings-─┬─xrdb │ └─{gnome-settings-} │ └─urxvt───bash───screen > top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14232 sda 20 0 26480 10m 6384 S 0.3 0.7 0:01.57 enlightenment


Причём эта строка в top-е появляется не часто. Ставим дефолтную тему оформления 17-го:


> top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14232 sda 20 0 22208 11m 6832 S 0.3 0.8 1:39.59 enlightenment


Необхдимо примечание, что количество потребляемого ОЗУ прямо пропорционально загруженным текстурам. Возвращаемся в '23Oz.'. Ставим для всех вьюпортов градиентную заливку вместо картинок и edje файлов, ставим прозрачный фон для нашей "полки", на которой всё это время работает модуль 'mail' и:

> top | grep enlightenment

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
14232 sda 20 0 24904 8988 6172 S 0.3 0.6 2:38.11 enlightenment

В иксах крутились два urxvt, в одном - screen c 5-ю терминалами, mutt, тот же gnome-settings-daemon. То есть последнее значение ни коим образом пределом не является. Если же задаться целью и для слабых машин сделать тему оформления сугубо на color_classes (привлекая текстуры по-минимому) или вообще без единого включения графических файлов, отдав всю отрисовку движку E (а он сам рисовать умеет будь здоров, в rgba) - думаю, потребление ресурсов можно снизить ещё. В разы. Все тесты специально проводил на 23Oz. - это одна из самых "тяжёлых" тем в плане графических наворотов на сегодня.

Желаете полный сравнительный анализ? Не вопрос. Сообщение от "Sunday, 29 May 2005". Исходники для тестов - там же, методика описана вкратце.


4. E16

А что же у нас со "старшим братом"? E-16.8.13-0.02, тема оформления 23Oz.:

> top | grep e16

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25180 sda 20 0 14460 5752 3500 S 0.3 0.4 0:01.37 e16


E-16.8.13-0.02, тема оформления DarkOne:

> top | grep e16

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25180 sda 20 0 13156 4616 2976 S 0.3 0.3 0:02.06 e16


С версии E-16.6 разработка - за Kim Woelders. Постоянная оптимизация кода, добавление новых опций, великолепные возможности по созданию/модификации интерфейса - Старая Школа во всей красе. Таким образом для многих машин 16-ый подойдёт как нельзя лучше. Но, если создать облегчённый вариант оформления 17-му, то... Нельзя забывать, что 17-ый уже не просто WM. Он принёс EFL (Enlightenment Foundation Libraries) и , как E16-ый до него, шагнул в Terra Incognita.

вторник, 25 марта 2008 г.

Обзор gOS и Elive-development

*
-After using E, my life was really nicer, i got a girlfriend, i got money, and now i'm meeting rasterman...
-I'm to l33t to run kde...
-Enlarge your E-ness!
-... is the cvs server down?
-We shall abolish the orgasm.

( некоторые высказывания с irc.freenode.net/#e )


у многих людей есть талант всюду успевать, следить за новинками, всегда быть в курсе событий... не про меня. если куда-то можно опоздать или что-то можно "прощёлкать хлебалом" - будьте уверены! ваш покорный слуга эту возможность не упустит... вот и ноне Wal-Mart давно ведёт продажу компьютеров под управлением gOS, да и Elive подрос с версии 0.6.4_unstable до вроде как декларируемого стабильным 'Elive Gem' (за него просят денег, от $5 на ваше усмотрение) а тут только-только "дошло" (вернее - доползло...), что можно скачать и посмотреть обе системы. причём в случае с gOS ухитрился высмотреть на irc.freenode.net линк на nightly build (тестовая экспериментальная сборка прототипа, что в будущем станет релизом). а Elive упёр с офсайта - elive_1.6_development.iso, дабы за просмотр денег не платить... (всё знаю: жадина, скряга и скупердяй, но поделать с собой ничего не могу. увы.).

заприметил моду для особливо прытких писать выводы практически в заголовке статьи (а лучше - так жирными заглавными буквами и с намёками на скандал) - извольте...


Выводы: gOS (в лице gos-live-2.0.0-beta1.iso, 537Мб.) для практического применения подходит гораздо лучше, чем Elive (в лице elive_1.6_development.iso, 623Мб.).

НО: оценить Elive-Gem (стабильный релиз) не удалось, за него просят donations от $5, и есть некие основания считать, что в будущем gOS отойдёт от использования Enlightenment-а в пользу Gnome. Самое же интересное в том, что обе системы основаны на Debian. gOS - Ubuntu 7.10 (gutsy, ядро 2.6.22), Elive - Debian Lenny (ядро 2.6.24). не вижу причин, мешающих проапдейтить gOS до Debian Lenny, добавить репозитории Elive и использовать лучшее из обеих систем!

Elive репозиторий:
deb http://repository.elive-systems.com lenny main elive drivers tests efl ports

gOS репозитории:
deb http://packages.thinkgos.com/gos reloaded main
deb-src http://packages.thinkgos.com/gos reloaded main


ежели вы относитесь к славной когорте новичков или (упаси Господь!) вы считаете, что kde - это вершина пользовательского интерфейса (недавно имел счастье общаться с одним из легиона пользователей kde), но, не убоявшись лиха лесного, решили-таки "заценить" возможности интерфейса E17-го - рекомендую дочитать сию заметку до конца (глядишь аффтар сподобится и вякнетъ чего-нить эдакое, чего никто никогда и в страшном сне не видал... - комментарии из партера).

поскольку с Debian-based дистрибутивами никогда особенно не парился, что-то в моей настройке может отличаться от "официально одобренных" способов решения той или иной задачи.


gOS


после скачивания с торрента при помощи волшебной программы aria2 (а kde-шники до сих пор хвалят ktorrent... странные люди, право слово...) файла gos-live-2.0.0-beta1.iso и заклания его могучему qemu (отвёл с барского плеча 256Мб. оперативки под такое дело) оно дюже борзо взлетело и показало своё дивное личико (не иначе как у Гюльчитай научилась):



такое всё зелёное и прекрасное... прям по-центру экрана расположен модуль Web-search (введи слово, нажми Enter и Гуголь выдаст всю правду-матку), который работать не пожелал, посему был безжалостно удалён из списка загрузки. только жаль, что грохнул его не сразу, а какое-то время угробил на бесполезные реанимационные процедуры... видим, что версия Enlightenment-a отстаёт от cvs, сие означает наличие неких трудностей в поиске сторонних тем оформления. там же чёрным по белому заявлено, что Великий Гугол к gOS не имеет ни малейшего отношения, что впрочем нисколько не помешало очень неплохо "покататься за счёт заведения", косвенно используя имя и репутацию Гугола Великого в меркантильном деле продажи писюков сетью Wal-Mart.

хребет - Ubuntu 7.10 (gutsy), инсталлер с LiveCD на хард уверен в своей непогрешимости и при "автоматической" установке (без ручной разметки и форматирования дисков) умудрился уронить систему до всеблагого core dump и последующей за сим перезагрузки. потом одумался, перестал выёживаться, схавал ручную разметку и довёл своё чёрное дело до победного оргазма. в качестве харда выступал образ диска qemu. сеть с пол-пинка настроил Exalt-ом, ручками лишь указал nameserver в /etc/resolv.conf и один раз оттоптал в консоли 'route add default gw ipi.pip.ipi.pip'. для тех, у кого впн, есть pppconfig, pon и poff - большего нэ трэба. в стоимость банкета вошёл и табунчик pppoe* утилит для эстетов.



на картинке - расшифровка термина gOS. оказывается, что это всего лишь edj-файл темы оформления рабочего окружения E17-го, который трансформирует дефолтное убожество в современную рабочую среду... да... уж... смелое заявление одним словом.

"иконостас" внизу экрана поддерживается модулем iTask-NG (Совет: сразу же поставьте его из svn repo! только недавно по моей просьбе автор добавил возможность выбора шрифта для отображения подписей к иконкам. нетрудно догадаться, что показ русских символов "из коробки" невозможен), и представляет собой (за исключением четырёх) "шорткаты" вызова браузера Firefox с адресами ресурсов Google. хотите всё и сразу? - извольте! для гурманов E17-го по-настоящему интересен следующий снимок:



каким-то образом горячие финские парни сделали модуль для систрея и заставили его работать (это - одна из "идей" грядущего Google Summer of Code для проекта Enlightenment). отсутствие такой приблуды многим мешает, официально рекомендовано пользовать trayer или stalonetray для этих целей, хотя весь код трея Растерман выкинул вполне сознательно (в том же E16-ом работает без шума и пыли).

из оставшихся "засад" стоит отметить, что далеко не все приложения учтены в меню, но спасает Alt+Esc (модуль 'Run Command') - универсальный поисковик бинарей и простая командная строка в 17-ом (так был найден xterm). при помощи localedef сгенерил ru_RU.UTF-8 (sudo localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8), в /etc/X11/xorg.conf прописал "переключалку" раскладок по Ctrl+Shift:


Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbModel" "pc105"
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
Option "XkbRules" "xorg"
EndSection


слишком умный инсталлер посчитал меня приверженцем здоровой аскезы - в отместку раскомментировал почти всё из /etc/apt/sources.list (остался весьма доволен полученным результатом). набор шрифтов, устанавливаемых по-умолчанию, чудовищен, что за пять минут исправляется правкой упомянутого sources.list файла.

всё собственно. а остальное:



не больше и не меньше. оптимизация GUI - весьма впечатляет (о том, как при помощи Enlightenment-а выжать из компа 150% от его возможностей - в следующей статье. покажу выкладки для qemu с доступным ОЗУ в пределах от 16-ти до 32-ух мегабайт. сам собирал год-два тому назад 17-ый на P-166 с 64Mb ОЗУ - псиса летала. как бомбовоз. но летала. да и оптимизации как таковой там не было)! смотрим на практически полный top с 56-ю загруженными модулями Enlightenment-а. их суммарное потребление ресурсов отображено PID-ом 4712 (enlightenment).



очень приятный дружелюбный дистрибутив с огромным набором софта от Ubuntu. но...хэппиэнда не будет:



это - снимок gos-default-20080316-2018.iso (да, я упёр текущую версию для разработчиков). могу сказать только одно: праздника в этой альфе нет. возможно, в следующем релизе gOS мы увидим обычный Gnome. остаётся лишь надеяться, что конечные пользователи от этой замены только выиграют. токмо "...нас сомненья грызут..." (Шевчук/ДДТ).


Elive


ранее смотрел на версию elive_0.6.4_unstable - в ней использовался довольно старый срез E17-го (то-ли 026, то-ли 0-28), по-умолчанию в качестве окружения рабочего стола шли E17 и E16 с возможностью выбора на стадии логина в систему. после логина стартовала легендарная программа Engage, в какой-то мере напоминающая док Mac OS X (до версии 10.5) и содержащая в себе систрей. выглядело это весьма похоже на то, что имеем в официальном промо ролике (35Мб.). в нём есть интересный момент, когда MPlayer выдаёт демо от IBM одновременно как-бы на пяти мониторах (один - основной и четыре вспомогательных). качаем! (формат - пакет deb, 3Мб.)

тянем текущую нестабильную версию проекта, грузимся и...



птица обломинго ненавязчиво напоминает о том, что установка на хард пока не реализована. учитывая отсутствие на LiveCD пакета OpenOffice (идёт на отдельном Bonus диске), говорить серьёзно об использовании именно версии elive_1.6_development.iso невозможно. но нет ничего, что мешает поставить Debian Lenny и подключить Elive репозиторий, о чём было уже сказано! а в данном контексте позиции Elive в чём-то посильнее gOS будут. видим, что версия E17-го совпадает с текущей cvs, следовательно все "рюшечки, красивости и оборочки" с сайта Get-E.org мы можем примерить на себя (по крайней мере до тех пор, пока эта традиция будет сохраняться).

пробуем в ~/.xsession прописать старт E16-го:



гхм... ок. рисуем о чём нас ненавязчиво просят на картинке, заодно (после apt-get update) вытягиваем aptitude install engage и:



видим, что во-первых всё работает (очень странно и неожиданно, особенно для древнего Engage), во-вторых - версия E16-го также соответствует текущей cvs! за это - огромный Респект команде Elive.

настройка сети прошла при помощи Network Manager-а (Exalt не запустился, /etc/resolv.conf также рихтовал своими заскорузлыми, роутинг вбивал ими же), шрифты "из короба" не вызвали нареканий, в ~/.Xdefaults уже забиты готовые пресеты по изменению внешнего вида и используемого шрифта для urxvt - imo - единственный терминал без недостатков на сегодня. количество и качество ПО на диске весьма обрадовало (эх... если бы и OpenOffice как-нибудь затолкали, выкинув все игрушки и прочую мишуру...). одним словом - Debian во всей красе.


*******

- А на кой пёс тут аффтар так разорался, ась? Ниасилил KDE?
- Дык... Лучшее - оно ж враг хорошего... Пока не попробуешь - хрен поймёшь, что тебе лучше...
- А... А чё в ентом Енлайте мой яху мэсэнжэр ни буя не работает?! Ась?! То-то! Говно этот ваш Енлай! Говно - говном...
- .....!!!

*******

What we've got here...
Is failure to communicate.
/Guns'n'Roses/

вторник, 18 марта 2008 г.

Сборка и настройка MPlayer для Mac OS X (Hackintosh)

*
При отсутствии повара пользуют и кухарку...
(Народная мудрость)

Всем хорош Мак, только видео в нём смотреть нечем... И нет универсального инструмента для тупенького удовлетворения насущных потребностей типа:

сконвертировать фильмец для просмотра на мобилке (Nokia 7610)
рипнуть DVD
перегнать из HDTV в обычную авишку с x264 кодеком
нарезать превьюшек для фильма
посмотреть тот же DVD в нормальном качестве (имеется в виду ГРАМОТНОЕ применение фильтров деинтерлейсинга и постпроцессинга, а не тупые шаблоны, зашитые неизвестно кем и хз куда)
и т.п.

В *nix всё это легко и непринуждённо делается связкой MPlayer + mencoder + ffmpeg, а поскольку Mac OS X тоже *nix - то нет видимых причин, что мешают нам собрать эти шедевры и для Мака. Если Вы приготовились орать о том, что дескать можно воспользоваться готовыми сборками/портами - STFU! Эти "готовые" отличаются во-первых древностью, а во-вторых не имеют в наличии нужного нам функционала.

Ежели нет желания лишний раз "топтать клаву", можно ограничиться "чем Бог послал":
Handbrake - б/м нормальный конвертор видео
MacTheRipper - A DVD extractor for Mac OS X
MPlayer for Mac OS X - готовая сборка MPlayer-а
VLC - эт типа супер-пупер видеоплеер для быдломассы... Кому как, а у меня сие поделие вызывает только рвотные позывы. Качество кода - не побоюсь этого слова - говно, да и картинка так себе...
RealPlayer - в принципе - довольно интересное и вменяемое поделие, пусть и закрытое для широкой публики. Мне сей продукт по какой-то необъяснимой причине весьма симпатичен. Несмотря ни на что - must have.
Кроме того есть "дефолтный" QuickTime, пинать который уже просто скучно, но стоит признать, что Pro версия таки прокатит под пивко... Есть DivX Player, поезд которого давно ушёл и непонятно вообще, что держит его на плаву. Может есть что-то ещё, дико проприетарное и требующее "утром деньги - вечером стулья" - в анус. Поскольку я не претендую на "истину в последней инстанции", то даже упоминание о подобных "продуктах" без предварительной 100%-ной предоплаты считаю преступным.

А наша дорога ведёт к MacPorts Project - MUST HAVE для всех любознательных Маководов (иначе получается, что купили TRUE Unix, а Unix софт и не пользуем... О том, что Xcode необходим для сих благородных забав не забыли?). Хотя надо признать и факт наличия обширной коллекции свободного софта для Мака, существующего вне рамок MacPorts (что не может не радовать). Но именно MacPorts поможет нам установить в систему все необходимые компоненты для правильной сборки MPlayer-а и ffmpeg-а. Что значит правильная? Только то, что все прочие мультимедиа приложения после этого можно смело выкинуть найух и не испытывать при сём ни малейшего дискомфорта.

Единственное, что требует "ручного" труда - библиотеки amr*.


> cat get_amr

#!/bin/sh
wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.0.tar.bz2
wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.2.tar.bz2


Версии amrnb-7.0.0.0 и amrwb-7.0.0.2 являются наиболее актуальными на сегодня. Качаем, компилим, ставим. Посетив ftp сервер можно не мудрствуя лукаво хапнуть в будущем зело более актуальный релиз. Напомню, что для легального использования этих кодеков в некоммерческих целях и сугубо для себя любимого я связался с юридическим отделом 3gpp консорциума (3GPPLegal@etsi.org) и получил официальное разрешение на компиляцию бинарников и поддержки 3gp в сторонних продуктах (MPlayer + mencoder + ffmpeg). Эта инициатива также способствовала появлению amr* библиотек и поддержке amr* в ffmpeg для репозитория packman (SuSE рулит!).

Для нарезки превьюшек накорябал убогий скриптец, работающий с ffmpeg и mencoder-ом:
movie_splitter
о его опциях в кратце можно пофтыкать в сём трэде:
MPlayer + MEncoder

Переходим к "водным процедурам". Перво-наперво - смотрим, что именно нам предстоит тащить из svn репозитория:

> cat get_mplayer

#!/bin/sh
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx
ln -sf ./mplayer ./main
ln -sf ./mplayer ./main_noaltivec


На кой буй нам вторая строка спрашиваете - так не ограничивать же себя только консолью! Коли собираем нормальный плеер - так уж прикрутить Cocoa интерфейс и сделать всё как "у взрослых" сам Бог велел. Отдельного упоминания стоит slave режим MPlayer-а. Это значит, что он может работать как back-end для любого гуя. Imho - это гораздо правильнее, чем использовать библиотеки типа Xine, поскольку для поьзователя возможности по настройке/конфигурации режима воспроизведения MPlayer-а в slave режиме зело более привлекательны, чем тупое обращение к вызовам библиотек (того же Xine).

Создание же симлинков main и main_noaltivec необходимо для формирования должной структуры каталогов по сборке гуя для Mac OS X. По-хорошему тут должны быть не симлинки, а копии исходников с собранными бинарями mplayer-а (с поддержкой altivec инструкций и без оной), но, поскольку собирем для себя, то сии тонкости и куртуазности нам не указ.

Шаг нумеро разЪ:

> sudo port install Xft2 XviD a52dec aalib autoconf automake cdparanoia faac faad2 fontconfig freetype fribidi gettext giflib glib2 gtk2 id3lib id3tool id3v2 jpeg lame libcddb libcdio libdv libdvdcss libdvdplay libdvdread libid3tag libmad libmpcdec libogg libpng libsdl libsdl-framework libtheora libtool libungif libvorbis live555 lzo2 pkgconfig pango smpeg x264 zlib


Надеюсь, что не пропустил чего-то важного. Даже если и упустил - Вы сами сможете восполнить пробелы. Установка glib2 и gtk2 на случай если вдруг появится желание собрать и традиционный gmplayer (--enable-gui). Теперь чешем в каталог с исходниками mplayer-а и рисуем ему конфигурационный файл:


: mplayer > cat ./config_build_01

#!/bin/sh
make distclean
export PKG_CONFIG_PATH="/opt/local/lib/pkgconfig:\
/usr/X11R6/lib/pkgconfig:\
/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:\
/sw/lib/pkgconfig:$PKG_CONFIG_PATH"

./configure --with-extraincdir=/opt/local/include \
--with-extralibdir=/opt/local/lib \
--enable-largefiles --enable-menu \
--disable-3dnow --disable-3dnowext --disable-fastmemcpy \
--with-freetype-config=/opt/local/bin/freetype-config \
--enable-dvdread --enable-libdvdcss-internal \
--with-fribidi-config=/opt/local/bin/fribidi-config $1
read a1
make && \
sudo make install
#EOF


Наиболее пронырливые уже могут заметить отсутствие указания на /opt/local/lib/live в выражении --with-extraincdir= . Это означает, что потоковые трансляции нам с этой сборкой не смотреть. Обусловлено по большей части моей ленью. При включении в сборку live555 сбивается механизм автоконфигурации доступных компонентов. Это характерно только для Mac OS X, так что мне просто влом лезть и разбираться. Можно конечно же попробовать чуток более навороченный вариантец конфига:


: mplayer > cat ./config_build_not_working_yet


#!/bin/sh
make distclean
export PKG_CONFIG_PATH="/opt/local/lib/pkgconfig:\
/usr/X11R6/lib/pkgconfig:/sw/lib/pkgconfig\
/usr/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"

./configure --with-extraincdir=/opt/local/include:/opt/local/lib/live:\
/opt/local/lib:/usr/include:/usr/local/include \
--with-extralibdir=/opt/local/lib:/opt/local/lib/live:\
/usr/lib:/usr/local/lib \
--enable-largefiles --enable-menu \
--enable-x264 --enable-xvid --enable-libdv \
--enable-libamr_nb --enable-libamr_wb \
--with-freetype-config=/opt/local/bin/freetype-config \
--enable-dvdread --enable-libdvdcss-internal \
--disable-3dnow --disable-3dnowext --disable-fastmemcpy \
--with-fribidi-config=/opt/local/bin/fribidi-config $1
read a1
make
read a1
sudo make install
#EOF


Да только при таком подходе придётся ещё что-то рисовать для CFLAGS и LDFLAGS (хз что если честно), иначе велик шанс нарваться на расплату (что самое обидное - так это то, что сбой идёт именно на линковке самого бинаря mplayer-а! то бишь все компоненты собраны, а собрать воедино не получается...). Посему на поддержку live555 в mplayer-е для Mac OS X 10.4 пока забил болт. Трансляции смотрю RealPlayer-ом по причине дикой идиосинкразии к vlc.

Запускаем наш ./config_build_01 и смотрим коровьими глазами на результаты (перед компиляцией он покажет итоги конфига и будет ждать нажатия на Enter для продолжения работы):


Config files successfully generated by ./configure --with-extraincdir=/opt/local/include --with-extralibdir=/opt/local/lib --enable-largefiles --enable-menu --disable-3dnow --disable-3dnowext --disable-fastmemcpy --with-freetype-config=/opt/local/bin/freetype-config --enable-dvdread --enable-libdvdcss-internal --with-fribidi-config=/opt/local/bin/fribidi-config !

Install prefix: /usr/local
Data directory: /usr/local/share/mplayer
Config direct.: /usr/local/etc/mplayer

Byte order: little-endian
Optimizing for: k8

Languages:
Messages/GUI: en
Manual pages: en

Enabled optional drivers:
Input: ftp tv cddb cdda libdvdcss(internal) dvdread(external) vcd network
Codecs: x264 xvid libdv libamr_wb libamr_nb libavcodec qtx real xanim win32 faad2 faac musepack libmpeg2 liba52 mp3lib libtheora tremor(internal) libmad liblzo gif
Audio output: openal esd sdl mpegpes(file) macosx
Video output: sdl gif89a pnm jpeg png mpegpes(file) aa opengl xv x11 xover md5sum tga macosx quartz
Audio filters:

Disabled optional drivers:
Input: dvdnav vstream pvr radio tv-teletext tv-v4l2 tv-v4l1 tv-dshow live555 nemesi dvb smb
Codecs: libdca speex toolame twolame
Audio output: sun alsa jack pulse arts oss v4l2 ivtv dxr2 nas
Video output: zr zr2 v4l2 ivtv dxr3 dxr2 vesa fbdev svga caca ggi xmga mga xvidix winvidix cvidix 3dfx dga xvmc dfbmga directfb bl xvr100 tdfx_vid s3fb tdfxfb
Audio filters: ladspa


Основное внимание - на последнюю секцию Disabled optional drivers. Если Вы видите, что лакомый кусочек недоступен - установите требуемый компонент и повторите процедуру конфигурирования. Как видите я прекрасно обхожусь без поддержки меню DVD дисков (пусть сперва заплятят за просмотр рекламы), мне не нужна поддержка Самбы (smb) и скрепя сердце отказался от live555. Оставшиеся сиротливо за бортом кодеки интереса практически не представляют (хотя кому-то может и пригодится speex). Всё прочее (видео и аудиовывод плюс фильтры аудио) для Mac OS X несущественно, поскольку... это Mac OS X, а не хвост собачий.

Собрали, поставили в /usr/local (по-умолчанию). Самое время накидать костяк конфига для себя любимого:


> cat ~/.mplayer/config

# Write your default config options here!
ao="macosx"
vo="macosx"
double="yes"
framedrop="yes"
vf=kerndeint,pp,screenshot="yes"
autoq=100
idx="yes"


Эт значит, что мы будем использовать родной вывод macosx для аудио и видео, плюс двойной буфер для получения чёткой и стабильной картинки, плюс индексацию побитых авишек и динамический режим постобработки изображения. На первых порах этого достаточно, а дальше уж сами (man mplayer).

Проверяем как оно работает. Если всё путём - чешем в каталог mplayerosx, знакомимся с содержанием Makefile-а (я заремил в нём пару несущественных строк) и собираем настоящий Какао-гуй, шоб всё как у взрослых...


: mplayerosx > cat config_build

#!/bin/sh
make clean
export PKG_CONFIG_PATH="/opt/local/lib/pkgconfig:\
/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
make dist


Поскольку гхм... грешен... то автоматическая сборка гуя всегда заканчивается одинаково:

..............................................................................
hdiutil: create failed - internal error


Не беда. Чешем в

mplayerosx/dist/MPlayer OSX.app/Contents/Resources/\
External_Binaries/mplayer.app/Contents/MacOS

и в

mplayerosx/dist/MPlayer OSX.app/Contents/Resources/\
External_Binaries/mplayer_noaltivec.app/Contents/MacOS


Проверяем наличие бинаря 'mplayer', который мы собрали не так давно со всем тщанием и установили в /usr/local/bin. Как правило его там не будет. Копируем ручками (хоть из /usr/local/bin, хоть из каталога с исходниками, где мы его собирали). Всё. mplayerosx/dist/MPlayer OSX.app - и есть наше чудо-юдо-приложение. Смело засовываем его в /Applications вместо прежнего убожества.

Запускаем. Command+L - покажет лог MPlayer-а и параметры, передаваемые гуём. Для полного счастья рисуем в Preferences -> Miscellaneous -> Advanced settings: Additional parameters:

-double -framedrop -vf kerndeint,pp,screenshot -autoq 100 -idx


там же при желании можно сбросить все цепочки фильтров, передаваемых гуём на исполнение, и нарисовать свою собственную.




P.S. для ffmpeg-а схалявил:

> sudo port edit ffmpeg

рихтанул сам порт, добив всего, чего душа пожелала (типа x264, libamr* и т.п.), и засадил тупенько:

> sudo port install ffmpeg

полёт нормальный :)