Журнал LinuxFormat - перейти на главную

LXF79:Freevo

Материал из Linuxformat
Перейти к: навигация, поиск

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

Бытует мнение, что Linux – невероятно сложная в освоении система, от которой трудно ожидать продвинутой работы с мультимедиа. Все это уже в далеком далеком прошлом. За последние годы появились дистрибутивы, максимально дружелюбные к пользователю, а качество приложений предназначенных для просмотра видео, телевизионных программ, изображений и прочего, не только не уступает таковым для Windows, но и в некоторых случаях даже превосходит их. Кроме того, появились специализированные программы (и даже специализированные дистрибутивы), позволяющие объединить все утилиты и сделать из компьютера единый медиа-центр. Среди них стоит отметить китайский Linpus(tm) Media Center (www.linpus.com.tw/Solutions/Embedded/Media_Center/default.htm), внешний вид которого напоминает продукт компании Microsoft, а также два LiveCD: Freevo LiveCD (www.pegasos.org/downloads/torrents/Freevo-live.torrent) и Wolvix Media Edition (wolvix.org). В состав последнего входит установленный и настроенный Freevo, о котором мы сегодня и поговорим.

Содержание


Проект Freevo

(thumbnail)
Меню Freevo.

Freevo (Freevo.sourceforge.net) является открытым домашним медиа-центром, работающим на компьютере под управлением Linux и базирующимся на других свободных разработках. Среди его возможностей: просмотр любых видео, аудио и графических файлов, расположенных на жестком диске компьютера, а также доступных через сеть. Имеется возможность просмотра и сохранения на диск телевизионных и спутниковых программ. Программа позволяет читать новости и просматривать программу телепередач прямо из Интернета. Сигнал может выводиться как на телевизор, через TV-выход графической карты, так и на монитор. Управление осуществляется традиционно (при помощи мыши и клавиатуры), а также с пульта дистанционного управления.

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

Установка

Программа легко устанавливается, не требует компиляции и не имеет большого числа внешних зависимостей, но вот для настройки необходимо иметь достаточные знания, так как документация рассчитана явно на подготовленного пользователя, хорошо знающего английский язык. На сайте проекта доступны исходные тексты, на странице About перечислены основные зависимости: интерпретатор Python, библиотеки SDL, Pygame, Python Imaging Library и Python Twisted, а также Mplayer и Xine. Сразу бросаться и скачивать их я бы не рекомендовал, так как большая часть, скорее всего, уже установлена в вашей системе. Инсталляционный сценарий пожалуется, если ему чего-то не хватает, либо порекомендует обновить те или иные программы, например:

# python setup.py install
checking for mmpython... not found
please download it from http://www.sf.net/projects/mmpython and install it

Скачайте указанный пакет (или найдите его в составе вашего дистрибутива), установите и повторите попытку. Обратите внимание, что для установки потребуется права суперпользователя. Freevo можно найти в портах Gentoo Linux, репозитарии Debian, доступны rpm-пакеты для SUSE Linux, Mandriva, Fedora Core и других дистрибутивов. Есть Freevo и в Сизифе (ALT Linux), поэтому не стесняйтесь использовать свой пакетный менеджер. Кроме всего прочего, для реализации тех или иных возможностей требуется установить сопутствующие библиотеки и приложения: Mplayer или Xine, LIRC и PyLIRC, PyGame, xmltv, jpgtran, библиотеки для работы с DVD и другие.

Настройка

Все настройки Freevo хранятся в трех конфигурационных файлах: Freevo.conf, Freevo_config.py и local_conf.py. Файл Freevo.conf генерируется автоматически во время установки, находится в /etc/Freevo и содержит основные параметры вашей системы, разрешение экрана и пути к исполняемым файлам. Второй файл – 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

Теперь можно приступать к редактированию. Файл содержит несколько секций, некоторые из них можно пока не трогать (более детально все настройки описаны на странице DetailedConfig в документации Freevo). Самое главное: перед параметрами не должно быть никаких пробелов или табуляций, иначе вы получите сообщение ошибке синтаксиса, хотя внешне все будет выглядеть нормально. [хотите знать, почему? Читайте «Уроки Python» Серегя Супрунова! – прим. ред.]

Секция General freevo settings

Первая секция содержит общие установки. Например, строка DEFAULT_VOLUME = 40 указывает на уровень громкости, выставляемый по умолчанию. Изменив значение параметра START_FULLSCREEN_X = 0 на 1, можно заставить Freevo запускаться в полноэкранном режиме. Используйте этот параметр, только когда полностью настроите пакет! Строка ROM_DRIVES = None активирует автоматическое обнаружение всех CD или DVD устройств с использованием /etc/fstab. Для отключения этой возможности используйте пустые скобки []. В некоторых случаях придется прописать путь вручную.

ROM_DRIVES = [ (‘/mnt/cdrom’, ‘/dev/cdrom’, ‘CD-ROM’) ]

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

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_config.py. Например, строка для запуска модуля TV выглядит так.

plugin.activate(‘tv’, level=10)

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

plugin.remove(‘tv’)
plugin.remove(‘joy’)

Каталоги

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

DIRECTORY_AUTOPLAY_ITEMS = [ ‘audio’,‘image’ ]

Позвольте создавать для них список воспроизведения (playlist).

DIRECTORY_CREATE_PLAYLIST = [ ‘audio’,‘image’ ]

И добавьте его в каталог

DIRECTORY_ADD_PLAYLIST_FILES = [‘audio’, ‘image’ ]

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

 <Freevo>
  <folder title=”Заголовок каталога” img-cover=”рисунок.png”>
  <setvar name=”directory_autoplay_single_item” val=”0”/>
  <info>
  <content>Краткое описание каталога</content>
  </info>
  </folder>
 </Freevo>

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

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

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

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

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

VIDEO_ITEMS = [ (‘Movie’, ‘/mnt/media/movies’),(‘Klips’, ‘/mnt/media/klips’) ]

В качестве параметров могут выступать как каталоги, так и fxd файлы. При помощи следующей директивы можно указать используемый видеопроигрыватель. Для Mplayer:

VIDEO_PREFERED_PLAYER = ‘mplayer’

Для XINE:

VIDEO_PREFERED_PLAYER = ‘xine’

Аналогично для каталогов изображений и музыки.

AUDIO_ITEMS = [ (‘Music’, ‘/mnt/media/music’),‘fxd/webradio.fxd’ ]

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

IMAGE_ITEMS = [ (‘Foto’, ‘/mnt/media/foto’),(‘Pics’, ‘/mnt/media/pics’) ]

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

GAMES_ITEMS = [ (‘SUPER NINTENDO’, ‘/home/media/games/snes/roms’,(‘SNES’, ‘/usr/bin/zsnes’, ‘-m -r 3 -k 100 -cs -u’, ‘’, None )) ]

Прочие настройки

Исправляем акцент

К сожалению, при настройках по умолчанию Freevo плохо справляется с выводом локализованного текста, поэтому в меню желательно использовать только английские буквы. Что еще печальнее, данная ситуация сохранится, пока не будет произведен переход на Unicode всех приложений. Проблему можно решить (по крайней мере, частично), заменив используемые по умолчанию TTF-шрифты, хранящиеся в каталоге /usr/share/freevo/fonts/, на mscorefonts (в случае Unicode), либо другие поддерживающие системную кодировку. В локализованных дистрибутивах вроде ALTLinux или ASPLinux, также есть готовые шрифты, которые можно использовать с Freevo. Для полной поддержки русских шрифтов необходимо наложить исправления и пересобрать PyGame. Патч можно загрузить по адресу: m0sia.ru/files/utf8.patch

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

SKIN_XML_FILE = ‘blurr’

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

LOCALE= ‘ru_RU.UTF-8’

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

Управление

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

plugin.activate(‘www’)
WWW_PORT = 8080

И установите пользователя и пароль для доступа к серверу.

WWW_USERS = { ‘user’: ‘password’ }

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

Особенно полезна возможность дистанционного управления Freevo. Для этого можно использовать ИК-пульт через (LIRC) или телефон с поддержкой Bluetooth.

Через Bluetooth

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

$ tar xvf bluetooth.tar
# python setup.py install

Ядро большинства дистрибутивов уже поддерживает Bluetooth, и в комплекте имеются необходимые утилиты. Подобно на работе с USB и Bluetooth в Linux останавливаться не буду – читайте статью «make menuconfig: готовые рецепты» в LXF78. Информацию по настройке демона hcid и подключению телефона можно найти ниже.

Добавьте в local_conf.py следующие строки:

Активируйте модуль.
plugin.activate(‘blue’)

Укажите на связанное устройство (в некоторых дистрибутивах это может быть, например, /dev/ rfcomm0).

BLUE_RFCOMM = “/dev/bluetooth/rfcomm/1”

Переменная для установки значения времени опроса (0 – опрос постоянно, 10 – слишком долго).

BLUE_SLEEP = 1

Проверка соединения.

BLUE_KEEP_ALIVE = 100

Далее запишите соответствие кнопок телефона командам Freevo. Проверить, какая кнопка нажата на телефоне, можно при помощи команды Freevo bluebutton либо Freevo bluetooth_config:

BLUE_CMDS = {
 ‘1’ : ‘PLAY’,
 ‘2’ : ‘VOL+’,
 ‘3’ : ‘VOL-’,
 ‘4’ : ‘LEFT’,
 ‘5’ : ‘UP’,
 ‘6’ : ‘RIGHT’,
 ‘7’ : ‘SELECT’,
 ‘8’ : ‘DOWN’,
 ‘9’ : ‘EXIT’,
 ‘0’ : ‘ UNILOCK ‘ }

Команда UNILOCK позволяет временно блокировать и разблокировать клавиатуру телефона, например, при ответе на звонок.

Связь через BlueTooth

Вставьте USB-Bluetooth адаптер и проверьте его обнаружение при помощи команды:

#lsmod | grep usb
hci_usb 14216 0
bluetooth 44292 1 hci_usb

Кроме того соответствующая информация должна появиться в /var/log/messages.

#cat /var/log/messages
….
Mar 11 21:23:37 (none) kernel: usb 1-1: new full speed USB device using uhci_hcd and address 2
Mar 11 21:23:44 (none) kernel: Bluetooth: Core ver 2.7
Mar 11 21:23:44 (none) kernel: NET: Registered protocol family 31
Mar 11 21:23:44 (none) kernel: Bluetooth: HCI device and connection manager initialized
Mar 11 21:23:44 (none) kernel: Bluetooth: HCI socket layer initialized
Mar 11 21:23:44 (none) kernel: Bluetooth: HCI USB driver ver 2.8
Mar 11 21:23:44 (none) kernel: usbcore: registered new driver hci_usb

Затем отредактируйте файл настройки демона hcid (/etc/bluetooth/hcid.conf)

 options {
 autoinit yes;
 security auto;
 pairing multi;
 pin_helper /etc/bluetooth/bluepin;
}
device {
 name “freevo”;
 class 0x100;
 pkt_type DH1,DM1,HV1;
 iscan enable;
 pscan enable;
 lm master;
 lp hold,sniff,park;
 auth enable;
 encrypt disable;
}

Создайте файл /etc/bluetooth/bluepin, который будет содержать PIN для доступа к телефону.

#!/bin/sh
echo “PIN:12345”

Сохраните его и сделайте исполняемым:

$ chmod 700 bluepin && chown sergej bluepin

Запустите демон hcid.

#hciconfig hci0 up; hcid -f /etc/bluetooth/hcid.conf”

Проверьте, обнаружено ли Bluetooth устройство:

#hciconfig –a

Просканируйте сеть в поисках телефона:

# hcitool scan
Scanning ...
00:0F:DE:1A:34:05 T630

И свяжите канал:

#rfcomm bind rfcomm0 1”

Проверьте, все ли сделано правильно:

#rfcomm show
rfcomm0: 00:0F:DE:1A:34:05 channel 1 clean

Настройка телевизора

Последним шагом будет вывод изображения на телевизор. Для этого необходимо добавить запись о новом устройстве в файл /etc/X11/xorg.conf. Формат записи будет зависеть от используемой видеокарты. За дополнительной информацией попробуйте обратиться на сайт производителя или разработчика драйвера. Если ничего из перечисленного не помогло – напишите вопрос на наш форум www.linuxforum.ru или в рубрику «Вопрос? Ответ!». Приятного просмотра!

Персональные инструменты
купить
подписаться
Яндекс.Метрика