2. Введение Для многих из нас компьютер давное уже заменил все аудио и видео устройства в доме. У большинства из представителей професии, в том числе и у вашего покорного слуги, в доме отсутствует даже телевизор. Но согласитесь, общение с компьютером как с медиацентром происходит совсем другим образом нежелисдругими устройствами. Хоть способ сей нам привычен и понятен,он все же не очень удобен.
3. Введение Удобно было бы использовать для управления медиацентром пульт. Проблему сию частично решают беспроводные мыши и клавиатуры, но и они громоздки. На проприетарном рынке имеется предложение от Logitech и Microsoft. Цена вопроса начинается где-то с 10$ .
4. Введение Хотя цена сия могла бы исчисляться копейками. Пробежавшись по форумам я ожидаемо узрел в адрес Microsoft Remote Control кучу фраз «Не работает!» И ведь для создания медиацентра вовсе не нужен Windows Media, есть масса решений для Linux ― их рассмотрим позже. В массовом сознании устойчиво сложился стериотип, что вся мультимедия живет под форточками, а в Linux это черезвычайно сложно и не вполне красиво. Стериотипы нужно ломать!
5. Введение В Linux имеется мощный инструмент работы с ПДУ lirc (Linux Infrared Remote Control). В первую очередь для работы с пультом требуется ИК приемник. Подойдет практически любой ИК порт или TV тюнер (список поддерживаемых устройств можно найти на сайте проекта http://lirc.org/html/table.html ). Однако, если такого устройства нет под рукой нет никакой необходимости бежать его покупать. ИК приемник, позволяющий работать с любым пультом, можно изготовить самому. Для этого потребуется лишь инфракрасный датчик от телевизора или любой подобный, расчитанный на напряжение 5 вольт.
6. Схемотехника Для подключения датчика к компьютеру потребуется 1-я ножка последовательного порта DCD ― Carrier Detect. Для питания схемы необходимо подать 5 вольт на вывод питания датчика.
7. Схемотехника Питание можно подать непосредственно с порта ― с 7-го выаода RTS ― Request to Send. Для этого понадобится диод для отсечки обратного тока и стабилизатор напряжения на 5 вольт.
8. Схемотехника Такое решение является наиболее простым и доступным, однако COM порт в наше время уже исчезающий вид, посему более привлекательными выглядят USB приемники. Для его изготовления потребуется микроконтроллер.
10. Схемотехника Приемник базируется на микроконтроллере PIC 18F2455, который может работать с USB портом и является меньшей и более дешевой версией 18F2550. Семейство 18F можно программировать при помощи универсального PIC-программатора. Периферийные устройства для USB требуют внешнюю частоту 20 МГц (Q1, C5-6), для чего используется конденсатор 220 мкФ. Устройство питается от шины USB, и требует дополнительного источника питания.
11. Схемотехника Программное обеспечение написано на С с использованием свободной демонстрационной версии компилятора C18 от Microchip. Использовалась версию 2.3 стека протоколов для USB от Microchip, чтобы создать последовательный USB порт, использующий уже установленные во многих системах драйверы. Реализация протокола UIR/IRMAN/IRA/CTInfra/Hollywood+ просто отвечает ‘OK’ на букву ‘R’. Это должно удовлетворять всем требованиям подтверждения связи любой реализации этого протокола.
12. LIRC Большинство дистрибутивов на сегодняшний день уже имеют в своих репозиториях lirc, остальные могут скачать пакет с сайта проекта http://lirc.org . Процесс установки пакета стандартен для своего дистрибутива. При установке из исходников имеется возможность выбора конкретного драйвера.
13. LIRC В состав пакета входит: драйверы различных устройств (модули ядра) демон lircd , преобразующий ИК сигналы, полученные от драйвера, в стандартные сообщения, которые прикладные программы могут получить через сокет демон lircmd , получающий сообщения от lircd и имитирующий мышку в X Windows irexec - запуск программ по нажатию кнопки ДУ irxeven t - посылка X Windows сообщения по нажатию кнопки ДУ irpty - псевдотерминал, запускает программу и имитирует нажатие клавиш клавиатуры вспомогательные программы для отладки и настройки irrecord - утилита для записи сегналов пульта и создания lircd.conf irw - читает сообщения с сокета lircd и выдает на stdout; в качестве параметра можно указать имя сокета ircat - отладочная программа для конфигурационного файла ~/.lircrc; в качестве параметра указывается имя программы (точнее имя описывающей её секции); по нажатию кнопки на пульте ДУ ircat выводит на stdout строку, привязанную к этой кнопке mode2 , smode2, xmode2 - осциллоскоп для инфракрасных сигналов irsend - посылает команды на инфракрасные приемники (если позволяет оборудование)
14. Конфигурация Полсе подключения ИК приемника к последовательному порту порт необходимо освободить setserial /dev/ttyS0 uart none , а затем загрузить модуль ядра lirc_serial . Если все было сделано правильно lsmod | grep lirc покажет что-то вроде: lirc_serial 12020 1 lirc_dev 10548 1 lirc_serial
15. Конфигурация А dmesg выведет: lirc_dev: IR Remote Control driver registered, at major 61 kernel: lirc_dev: lirc_register_plugin: sample_rate: 0 kernel: lirc_serial: auto-detected active low receiver
16. Конфигурация Теперь можно проверить, работает ли приемник вызвыв mode2 и понажимав клавиши на пульте. При нажатии клавиш будут возникать строки: ~$ mode2 space 3078511 pulse 9025 space 4417 pulse 663 space 454
17. Конфигурация Если при нажатии кнопок появляются эти символы, значит приемник исправно работает. Файл /etc/lirc/hardware.conf должен содержать следующие строки: LOAD_MODULES=true MODULES="lirc_serial" LIRCD_CONF="/etc/lirc/lircd.conf"
18. Крнфигурация Готовую конфигурацию для lircd можно найти на http://lirc.sourceforge.net/remotes/ Однако, если нужного пульта там нет, можно научить lirc понимать его сигналы при помощи irrecord irrecord -d /dev/lirc0 ~/lircd.conf
19. Конфигурация Далее необходимо нажимать на клавиши, чтобы программа могла изучить последовательности сигналов пульта. Затем вводится имя кнопки, после чего указанная конпка нажимается на пульте. Главное при создании конфиuf пульта не медлить, если программа не дождется от вас действий в течении 5 сек, то она оборвет запись. После создания конфигурации lirc следует перезавпустить.
20. Конфигурация Проверить правильность можно утилитой irw # irw 00000000768910ef 00 KEY_PLAY SONY 000000007689c03f 00 KEY_FF SONY 00000000768940bf 00 KEY_REV SONY 00000000768940bf 01 KEY_POWER SONY 00000000768909f6 00 KEY_RIGHT SONY
21. Конфигурация Все настройки команд хранятся в файле ~/.lircrc или /etc/lirc/lircrc , имеющий следующий формат: begin button = (имя кнопки) prog = (имя приложения) config = (команда приложения) repeat = (повторять действие, когда удерживается кнопка, 0 - не повторять) end
22. Конфигурация prog = имя программы, к которой относится данный блок remote = имя приемника (по умолчанию - *, т.е. любой) button = имя клавиши repeat = число (что делать, если клавиша нажата несколько раз; по умолчанию - 0, т.е. игнорировать повторы, иначе учитывать каждое n-е нажатие) delay = число (по умолчанию - 0; сколько повторений пропустить прежде чем начать обработку директивы repeat) config = строка, передаваемая приложению (если задано несколько директив config, то значение каждой строки передается приложению по очереди при нажатии той же клавиши; непечатные символы записываются как в C - или FF)
23. Конфигурация mode = переход в указанный режим (если имя режима совпадает с именем приложения, то оно переходит в данный режим при запуске; действия по переключениям режимов выполняются для всех клиентских программ независимо от значения prog (и похоже, что независимо от текущего режима); все приложения рекомендуется запускать одновременно, чтобы избежать рассогласования режимов) flags = startup_mode (при запуске приложение сразу переходит в указанный в директиве режим) mode (покинуть режим; только для блоков внутри поименованного режима) once (только в сочетании с директивой mode; строка config передается приложению только при входе и выходе из режима) quit (прекратить разбор блоков)
24. Конфигурация В нем можно настроить вызов irexec и выполнить любую команду, также многие мультимкдийные приложения (Amarok, Mplayer) имеют интерфейс работы с lirc. В одном блоке может быть задана последовательность директив remote и button, в этом случае для передачи строки приложению требуется последовательное нажатие указанных кнопок (удобно для задания пароля для poweroff). Если приложение может управляться событиями X Windows, то интерфейс между Lirc и приложением осуществляется с помощью утилиты irxevent (в качестве параметра может задаваться имя файла конфигурации; irxevent надо запускать в начале сеанса вместе с другими lirc-приложениями)
26. ELISA Медиацентр написанный на языке Python, что позволяет легко расширять его плагинами. Есть плагины для просмотра видео с YouTube, фотографий с flickr, Picasa, прослушивания потокового радио. Т.к. базируется на GStreamer, то есть поддержка большинства популярных медиа форматов. Имеется нтеграция с LIRC для управления пультом, можно настроить и использовать тачскрин. Настройка происходит в основном в конфигурационном файле, через меню можно лишь менять темы. Для первоначальной настройки достаточно лишь добавить адреса каталогов в которых хранятся медиа файлы в секции Данный медиацентр имеет огромное количество настроек, все они находятся в конфигурационном файле.
28. XBMC Интересный медиацентр, изначально написанный под xbox, но позже портированный на Linux, Mac OS X, Windows. Имеет множество красивых тем, и большое множество готовых скриптов. Скрипты представляют собой Python код и WindowXML. Среди скриптов есть как простые плагины для сервисов, так и довольно сложние приложения, например почтовый клиент, разнообразные игры. Есть поддержка DVD. Управление клавиатурой, мышкой (т.к. курсор используется свой и довольно большой, пользоваться мышкой довольно удобно), также можно использовать LIRC. Все настройки находятся в меню, и их довольно много, кроме настроек через стандартное меню есть веб интерфейс, однако использование его ― дело неблагодарное. Изобилует багами и имеет очень серьезные проблемы со стабильностью.
30. MythTV Пожалуй, лучший медиацентр для linux. Умеет работать с tv-тюнером, вести записи передач, работает с потоковым видео, радио, поддерживает ленты новостей и многое другое Необходима база данных MySQL. Управление с клавиатур и через LIRC, управления мышью нет. Над конфигурацией придется попотеть, но оно того стоит! Поддерживает распределение на множество серверов, кодирование видео, имеет огромное количество плагинов.
31. MythTV В обычной конфигурации MythTV состоит из следующих компонентов: MythBrowser Оболочка MythTV MythDVD Воспроизведение DVD и запись MythGallery Галерея фотографий MythTV MythGame Игровой эмулятор ROM MythMusic Воспроизведение и запись музыки MythNews Поддержка RSS-потоков MythPhone Поддержка SIP MythVideo Поддержка воспроизведения видео, не связанного с MythTV MythWeather Модуль вывода прогноза погоды MythWeb Модуль web-браузера MythTV
32. Итог MythTV Windows MCE Открытый исходный код. Закрытый код. Нужно покупать, Можно менять кодеки кодеки нельзя менять Поддержка программного и аппаратного кодирования Нет поддержки программного кодирования Запись в DivX и MPEG2 Нельзя записывать в DivX или MPEG2 Работает на Linux и MacOS, переносится под Windows Работает только под Windows Очень низкие системные требования Ощутимые системные требования Поддерживает плагины третьих сторон Не поддерживает плагины Гибкая и масштабируемая сетевая архитектура (сервер/клиенты) Простая поддержка сети TCP/IP Можно записывать, перекодировать и передавать видео Записывать и воспроизводить можно только локально