Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #97, ЯНВАРЬ 2007 г.

Мультимедиа центр для тукса

Сергей «grinder» Яремчук

Хакер, номер #097, стр. 122

(grinder@ua.fm)

Freevo - платформа для организации домашнего медиацентра

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

Что имеем?

Когда говорят о домашней мультимедийной станции, в первую очередь вспоминают о специализированных аппаратных решениях вроде TiVo, а из программных продуктов на ум приходит широко разрекламированный Windows XP Media Edition, который, правда, в наших краях такая же редкость, как и пингвины. Естественно, бравым парням из секретного общества opensource это не могло понравиться. И в настоящее время мультимедийную станцию можно реализовать на базе любого дистрибутива GNU/Linux, не заплатив за это ни копейки. Более того, для особо ленивых собрали даже специализированные дистрибутивы, позволяющие создать такую станцию в минимальные сроки и с минимальными усилиями. Таковым является китайский Linpus Media Center (www.linpus.com), внешний вид рабочего стола которого напоминает MS-продукт, а также Freevo LiveCD (www.pegasos.org/downloads/torrents/freevo-live.torrent) и норвежский Wolvix Media Edition (wolvix.org). В последних двух основным компонентом является Freevo, о настройке которого мы и поговорим.

Что за зверь такой?

Канадец Кристер Лагерстром (Krister Lagerstrom) очевидно и был одним из тех парней, которым не нравилось текущее положение дел в плане работы с мультимедиа в Linux. Программа, созданная им на языке высокого уровня Python, называется Freevo. На момент выхода первой версии (май 2002 года) она была еще довольно примитивна: после загрузки пользователю показывался синий экран с очень простым меню. Сейчас это полноценная платформа для организации домашнего медиацентра. А поддержка плагинов предоставляет возможность существенно расширить ее функционал и даже превзойти некоторые известные аппаратные решения. Имеющиеся сейчас плагины не только позволяют изменить внешний вид системы, но и кодировать аудио и видео, записывать CD- и DVD-диски, отправлять и принимать почту, интегрироваться с iPod, получать погоду и многое другое. Работает Freevo под управлением Linux, используя при этом и некоторые другие свободные разработки. Среди его возможностей - просмотр любых видео, аудио и графических файлов, расположенных на жестком диске и доступных через сеть. Телевизионные или спутниковые программы при необходимости сохраняются на диск. Программу телепередач, как, впрочем, и новостные RSS-потоки, можно просмотреть прямо из основного окна Freevo. Сигнал может выводиться на телевизор или на монитор. Управление осуществляется традиционно при помощи мыши и клавиатуры, а также при помощи пульта дистанционного управления.

Пора ставить

При написании статьи использовался Kubuntu (=Ubuntu + KDE), поэтому и ставить Freevo будем на него. Запрос «apt-cache search freevo» показал, что в репозитарии Ubuntu Freevo, к великому сожалению, нет. За информацией и исходным текстом идем на сайт проекта freevo.sourceforge.net. Так как при создании использовался Python, Freevo при установке не требует компиляции. А вот зависимостей на странице SourceDependencies я насчитал аж 31 основную и 7, помеченных как optional. В Kubuntu по умолчанию не установлена и половина из этого списка, но в репозитарии они есть. Вручную выискивать нужные пакеты - это не стиль Ubuntu. В WiKi-документации проекта нашелся раздел, рассказывающий об установке Freevo на Ubuntu. «Вот оно, - думаю, - сейчас быстренько поставим и будем развлекаться». Но здесь меня постигла неудача. Сайт, указанный в настройках, на протяжении недели был недоступен. Пришлось обращаться к настройкам братского Kubuntu дистрибутива - Debian (freevo.sf.net/cgi-bin/doc/FreevoAptDebian).

На этом присказка заканчивается, и начинается собственно установка. Для последующих действий потребуются права суперпользователя. Открываем свой любимый редактор и добавляем в /etc/apt/sources.list информацию о новом репозитарии.

$ sudo mcedit /etc/apt/sources.list

deb http://freevo.sourceforge.net/debian unstable main

deb http://debian-multimedia.org sarge main

Обновляем базу и ставим:

$ sudo apt-get update

Здесь apt будет ругаться таким образом:

W: GPG error: debian-multimedia.org sarge Release: Следующие подписи не могут быть проверены, так как недоступен общий ключ: NO_PUBKEY 07DC563D1F41B907

W: Вы можете запустить «apt-get update» для исправления этих ошибок

Ничего страшного в этом нет, просто apt не может проверить подписи пакетов. Если тебя это смущает, используй опцию «--allow-unauthenticated» или лучше импортируй и добавь gpg-ключ:

$ gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 1F41B907

$ gpg --armor --export 1F41B907 | sudo apt-key add –

Теперь очередь Freevo. Смотрим, что у нас есть:

$ sudo apt-cache search freevo

freevo-plugin-weather - Enhanced Weather Plugin for Freevo

freevo-media - Themes and non-application data for Freevo

freevo - A Python based PVR/DVR Framework for Music and Movies

Обязательным является пакет freevo, freevo-media содержит в основном дополнительные темы, а вот freevo-plugin-weather относится к более ранней версии, поэтому устанавливаться он не будет. Ставим:

$ sudo apt-get install freevo freevo-media

Всего будет дополнительно скачано 44 пакета общим размером чуть меньше 14 Мб. На последнем этапе установки стартует мастер настройки пакетов Ubuntu, который поможет выставить некоторые базовые настройки. Советую пройтись по всем пунктам - меньше потом набивать ручками. Выбираем систему вывода (в большинстве случаев подойдет X11), разрешение экрана, устанавливаемое при работе Freevo, телевизионный стандарт (secam) и регион (europe-east). Если что-то не сложилось, мастер всегда можно запустить повторно, набрав «dpkg-reconfigure freevo» или «freevo setup».

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

# python setup.py install

checking for mmpython... not found

please download it from www.sf.net/projects/mmpython and install it.

Скачай недостающий пакет, установи его и повтори попытку. Учти, Freevo можно найти в портах Gentoo Linux, доступны rpm-пакеты для SUSE Linux, Mandriva, Fedora Core и других дистрибутивов. Есть Freevo и в Сизифе ALTLinux. Поэтому первым делом попробуй установить его с помощью менеджера пакетов используемого дистрибутива. Кроме этого, для реализации тех или иных возможностей потребуется установить сопутствующие библиотеки и приложения: Mplayer или XINE, lirс и pylirc, Pygame, xmltv, jpgtran, библиотеки для работы с DVD и другие.

Файлы настроек Freevo

После успешной установки пришла пора заставить Freevo работать. Если ты попробуешь запустить его сейчас, то «Error: freevo.conf not found» тебе обеспечен. Поэтому давай разбираться дальше. Все настройки Freevo может хранить аж в трех конфигурационных файлах: freevo.conf, freevo_config.py и local_conf.py. Файл freevo.conf как раз и генерируется во время установки или с помощью команды «freevo setup». По умолчанию он находится в /etc/freevo и содержит основные параметры твоей системы, разрешение экрана и пути к исполняемым файлам. Хотя бывает и так, что мастер настройки вроде бы отработал без ошибок, а файл не создал. Запусти его еще раз и посмотри, на что конкретно он ругается. Дело в том, что скрипт требует наличия всех компонентов. Например, должны быть установлены mplayer и xine. А зачем нам столько видеопроигрывателей в системе? Для обмана можно создать символическую ссылку на недостающий компонент:

$ sudo ln -s /usr/bin/xine /usr/bin/mplayer

Перезапусти «freevo setup», все должно работать.

Второй файл freevo_config.py находится в /usr/share/freevo и содержит настройки Freevo, используемые по умолчанию. Трогать его не рекомендуется. Вместо него следует использовать файл ~/.freevo/local_conf.py, находящийся в домашнем каталоге пользователя, и в нем уже переопределить необходимые параметры. Создать его нужно из freevo_config.py.

$ cd; mkdir .freevo

$ cp /usr/share/freevo/freevo_config.py ~/.freevo/local_conf.py

Вот теперь можно приступать непосредственно к редактированию.

Редактируем local_conf.py

Файл local_conf.py содержит несколько секций, часть из которых можно пока не трогать (более детально со всеми настройками ты можешь ознакомиться на странице DetailedConfig документации). Но для настройки Freevo все же желательно иметь некоторые знания Unix-систем, так как документация рассчитана явно на подготовленного пользователя, к тому же владеющего языком Шекспира. Да, и самое главное. Помни, что ты имеешь дело с питоном: ни в коем случае не ставь в начале строки перед параметрами пробел или табуляцию, иначе «SyntaxError: invalid syntax» тебе обеспечен. Хотя внешне все будет выглядеть правильно.

Секция General freevo settings

Логически файл разбит на несколько секций, каждая отвечает за свой участок работы. Обо всех настройках я тебе рассказать не смогу по причине их засекреченности, но тайну некоторых приоткрою. Первая секция содержит общие установки. Например, строка «DEFAULT_VOLUME = 40» указывает на уровень громкости, выставляемый по умолчанию. Изменив значение параметра «START_FULLSCREEN_X = 0» на 1, дадим указание Freevo, чтобы он стартовал сразу же в полноэкранном режиме. Рекомендую использовать этот параметр, только когда Freevo полностью настроен и консоль не ругается на невозможность загрузки модулей или утилит. Параметр «ROM_DRIVES = None» позволит обнаруживать при запуске все CD- или DVD-устройства, прописанные в /etc/fstab. Если такая возможность не нужна, используй пустые квадратные скобки («[]»). В особо тяжелых случаях требуется прописать путь к таким устройствам вручную:

ROM_DRIVES = [ ('/media/cdrom', '/dev/cdrom', 'CD-ROM') ]

Чтобы при просмотре фильма не мешал шум, ограничим скорость CD-ROM‘ма до восьми:

ROM_SPEED = 8

Разрешим выключать компьютер через меню Freevo:

ENABLE_SHUTDOWN_SYS = 1

Также в этой секции традиционно переопределяются события (events), которые описаны в файле src/event.py. Например, чтобы во время просмотра фильма увеличить контрастность до 100 нажатием на клавишу «1», создадим следующее правило:

EVENTS['video']['1'] = Event(VIDEO_SEND_MPLAYER_CMD, arg='contrast -100')

Настройка плагинов

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

$ freevo plugins -l

Некоторые плагины уже включены в базовый состав Freevo, поэтому список вряд ли будет пустым. Все это хозяйство, занимающее пару экранов, автоматически запускается из файла freevo_config.py. Например, строка для запуска TV выглядит так:

plugin.activate('tv', level=10)

Но если сейчас попробовать запустить Freevo, он будет нещадно ругаться. Смотрим на все это профессиональным взглядом и отключаем ненужное в пользовательском файле. Или, как вариант, переопределяем параметры запуска плагина. У меня нет TV-тюнера и джойстика, поэтому я в свой файл добавил следующие строки:

plugin.remove('tv')

plugin.remove('joy')

Погоду я, кстати, тоже пока в состоянии определить, просто выглянув в окно:

plugin.remove('weather')

Настройка каталогов

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

DIRECTORY_AUTOPLAY_ITEMS = [ 'audio', 'image' ]

Укажем на необходимость создания плей-листа:

DIRECTORY_CREATE_PLAYLIST = [ 'audio', 'image' ]

Добавим его в каталог:

DIRECTORY_ADD_PLAYLIST_FILES = [ 'audio', 'image' ]

Для большего удобства можно создать в любом каталоге файл folder.fxd. Он должен быть приблизительно такой структуры:

$ sudo mcedit folder.fxd

<freevo>

<folder title="Заголовок каталога" img-cover="рисунок.png">

<setvar name="directory_autoplay_single_item" val="0"/>

<info>

<content>Краткое описание каталога</content>

</info>

</folder>

</freevo>

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

<directory recursive="1">/mnt/mp3/party/rock</directory>

Файл изображений должен быть в формате jpeg или png и иметь размер 280x200 для фильмов, 200x200 для аудио и 200x160 для директорий с рисунками. Теперь, если указать этот каталог Freevo, в меню будет выведен заголовок и рядом - соответствующий ему рисунок. Кроме того, Freevo позволяет защитить некоторые папки от просмотра. Для этого в такой каталог необходимо поместить файл .password и в нем указать пароль для доступа. Защита эта не спасет при локальном доступе, но при управлении с ПДУ ее достаточно. Пароль желательно использовать цифровой, так как в таком случае его можно будет ввести с пульта. А вот пароль на рабочие каталоги указываем в следующей секции.

Настройка каталогов видео, аудио, изображений и игр

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

Кстати, в качестве параметров могут выступать как каталоги, так и fxd-файлы:

VIDEO_ITEMS = [ ('Movie', '/media/movies'),

('Klips', '/media/klips') ]

К сожалению, в настройках по умолчанию Freevo плохо справляется с выводом локализованного текста, поэтому в меню и именах файлов желательно использовать только английские буквы. И пока не будет произведен переход всех приложений на Unicode, такая ситуация сохранится. Частично решить проблему можно, заменив используемые по умолчанию TTF-шрифты, лежащие в каталоге /usr/share/freevo/fonts, применяемыми в Windows (в случае Unicode), либо другими, поддерживающими системную кодировку. Если боишься все поломать, обрати внимание на указанные ниже параметры.

Добавляем каталог, в котором лежат фонты:

OSD_EXTRA_FONT_PATH = [ '/usr/share/fonts/truetype' ]

И алиас на используемый в Freevo шрифт:

OSD_FONT_ALIASES = { 'arial_bold.ttf' : 'VeraBd.ttf' }

В локализованных дистрибутивах вроде ALTLinux или ASPLinux уже есть готовые шрифты, которые можно использовать с Freevo. Для полной поддержки русских шрифтов необходимо пропатчить m0sia.ru/files/utf8.patch и пересобрать pygame.

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

Для MPlayer:

VIDEO_PREFERED_PLAYER = 'mplayer'

Или XINE:

VIDEO_PREFERED_PLAYER = 'xine'

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

AUDIO_ITEMS = [ ('Music', '/media/music'), 'fxd/webradio.fxd' ]

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

IMAGE_ITEMS = [ ('Foto', '/media/foto'), ('Pics', '/media/pics') ]

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

GAMES_ITEMS = [ ('SUPER NINTENDO', '/home/media/games/snes/roms',

('SNES', '/usr/bin/zsnes', '-m -r 3 -k 100 -cs -u', '', None )) ]

Остальные настройки

Freevo поддерживает скины. В комплекте поставляются Blurr, Info и Noia, на сайте проекта можно найти еще несколько готовых тем.

SKIN_XML_FILE = 'blurr'

В качестве скинов используются XML-файлы (с расширением fxd), на основе которых никто не запрещает создать и свой вариант. Далее в файле идет описание вывода меню, установки xine, mplayer, просмотра TV и локаль:

LOCALE = 'ru_RU.UTF-8'

Практически последним пунктом идут параметры управления Freevo. Об этом далее и поговорим.

Управление Freevo

Управление является одной из сильных сторон Freevo. Кроме клавиатуры и мыши, для управления можно использовать джойстик. Управлять Freevo можно и через сеть, используя встроенный web-сервер, который позволяет не только просматривать локальные данные, но и производить запись веб-трансляций по расписанию и вручную. Кроме того, с помощью веб-браузера можно просмотреть файлы помощи.

Для запуска веб-сервера редактируем следующие строки в файле:

plugin.activate('www')

WWW_PORT = 8080

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

WWW_USERS = { 'user': 'password' }

Теперь набираем в веб-браузере адрес http://localhost:8080, регистрируемся, и можно начинать работать.

Но особенно полезна возможность дистанционного управления Freevo. С ее помощью можно просматривать фильм, управляя компьютером, так сказать, не отрывая спины от дивана. Для этих целей подойдет пульт на инфракрасных лучах (LIRC) или телефон с поддержкой синего зуба (модуль bluetooth.tar).

Когда настройка закончена, пускаем Freevo и наслаждаемся результатом. Вот, в принципе, и все. Как ты, наверное, уже убедился, Freevo - довольно полезный в хозяйстве и мощный инструмент. Успехов.

MythTV тоже хорошо

Помимо Freevo, существуют и другие аналогичные программы. Наиболее популярным из них является MythTV (www.mythtv.org). Его основное назначение - наделить ПК с установленным ТВ-тюнером функциональностью «живого телевидения». Используя единое приложение, можно смотреть, записывать передачи по расписанию, пропускать рекламу, делать паузу, перематывать вперед/назад. Программа поддерживает возможность работы сразу с несколькими картами, в качестве драйверов используется Video4Linux. При просмотре это позволяет реализовать режим «картинка в картинке», а при захвате - записывать информацию сразу с нескольких источников. Все это, естественно, можно вывести на телевизор и управлять дистанционно при помощи пакета LIRC. Основной упор сделан именно на функцию захвата видео, которая тесно завязана с планировщиком. Готовые записи можно смонтировать, вырезав ненужные фрагменты и сэкономив таким образом место на диске. Но если у тебя нет ТВ-тюнера, то MythTV также будет полезен. При помощи дополнительных модулей можно просматривать видеофайлы, хранящиеся на жестком диске, в том числе и DVD, прослушивать музыку, категоризировать и преобразовывать mp3- ,Ogg-, FLAC-, CD-аудиофайлы, создавать плей-листы, просматривать изображения, серфить интернет, читать RSS-новости, получать данные о погоде прямо в основном окне программы, разговаривать посредством SIP. Из MythTV запускаются обычные PC-игры и ROM'ы через эмуляторы MAME, NES и SNES. Если раннее для просмотра DVD-видео использовались внешние программы MPlayer или xine, то сейчас доступен встроенный проигрыватель, что упрощает настройку и уменьшает количество дополнительных приложений. В отличие от Freevo, в MythTV плагины доступны единым архивом, за исключением всего лишь трех-четырех, которые можно найти через поисковики, и модуля Webmin (webadminmodules.sourceforge.net/?page=Servers).

Содержание
ttfb: 8.5010528564453 ms