Перевод H. Sandmann

  • 1. Введение


    1.1. Предисловие
    Этот документ содержит описание к Инсталяции стабильной версии VDR версии 1.2 с plugins. Эта версия предлагает такие фишки как Timeshifting и одновременное записывание передач с одного и того же транспондера с помощью всего одной карты. Представленный концепт не является единственной возможностью построения диск-рекордера при помощи VDR-software от Klaus Schmidinger, а только лишь одна возможность из многих. Этот путь описывает инсталяцию на SuSE 7.3 Professional, которая работает у автора ( но не у переводчика) великолепно.


    1.2. Взляд


    Дла построения дигитального рекордера на базе Linux и VDR достаточен персональный компьютер в минимальном исполнении, с процессором класса P-II и с RAM не меньше 32. Во всяком случае потребуется одна или несколько DVB-карта для приёма цифровых передач или с сателита или через кабель или терестриально. Как минимум на одной карте должен быть встроенный активный MPEG-декодер с TV-out. Управление может происходить через менюшки . Запись дигитальных передач может быть очень удобно реализована через передаваемые данные EPG (чего не скажеш о наших русских программах). Также возможна разрезка полученных данных, например вырезка рекламы. Как и ожидается при любой цифровой записи, качество картинки при воспроизведении великолепно (опять таки не касается русских программ), потому что MPEG2 сигнал записывается без каких либо компрессий 1:1. 1 ГБ на винчестере хватает для 1/2 часа записи. Вывод картинки и звука происходит через соответствующие подключения на карте прямо на телевизор
    Преимущество такой реализации на базе PC лежит в расширяемости например в дополнительном использовании как DVD-,VCD-,MP3-проигрыватель. Также проигрывание Аудио,CD,DivX и картинок с дигитальной камеры возможно. Также возможна конвертация записей в различные форматы DivX или изготовление VCD & SVCD. Управление и программирование может быть реализовано не только через пульт но через локальную сеть или даже через Интернет. Открытость концепта позволяет развитие к мултимедиальному центру для комнаты с бОльшими возможностайми чем это могут предложить другие коммерческие продукты. Позади стоит мысль о Свободном и с открытым кодом Software. Это всё должно быть достаточным хотя бы раз ознакомиться с операционной системой Linux. Оно стоит того!

  • 2. Инсталяция


    2.1 Дрова для DVB


    Для DVB-карт нужны соответствующие дрова, которые разрабатываются фирмой Convergence и которые выставлены как свободное Software на Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу. Предпосылкой для успешной компиляции исходного кода является актуальное Linux ядро 2.4 с поддержкой модулей для video4linux и i2c. Также должна присутствовать поддержка input-core и event-interface. В стандартном SuSE ядре это есть. Также должны быть установлены исходники ядра kernel-source а также такие инструменты как autoconf и automake и конечно же Компилятор gcc/gpp. Следующие шаги должны быть как правило исполнены как пользователь root. В некоторых дистрибуцуиях понадобится предварительно подогнать конфигурационный файл к ядру. Т.е.


    cp /boot/vmlinuz.config /usr/src/linux/.config
    cd /usr/src/linux
    make oldconfig
    make dep


    Версия дров, используемая разработчиками VDR можно также скачать тут Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Теперь можно приступать к инсталяции дров, которая происходит в usr/local/src


    cd /usr/local/src
    tar -xjvf linux-dvb.2003-11-08.tar.bz2
    ln -s linux-dvb.2003-11-08 DVB
    cd DVB/driver
    make
    ./makedev.napi
    make insmod


    При загрузке дров на экране телевизора (если карта подключена конечо же к нему) должна появится на короткое время цветная абракадабра и потом Copyright значок фирмы Convergence. Если да, то по крайней мере загрузка модуля прошла удачно. Данных по Каналам к этом моменту ещо нет.
    Актуальная версия модулей позволяет одновременнуй запись нескольких программ с одного и того же транспондера а также Timeshifting на единственной карте. Firmware поддерживает основные функции для управления CAM. Основная часть работы проводится в Link-Layer VDRа программно, чтобы избежать несоответствия и недостаточные возможности Firmware которое не является открытым. Это служит к улучшенной поддержке различных CAM включая меню CAM. Поближе с этим можно ознакомиться Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.

  • 2.2 VDR
    Домашнюю страницу VDR можно найти и оттуда скачать актуальную версию VDR здесь
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Компиляция этого софта должно происходить обязательно в той же директории /usr/local/src где лежат DVB-дрова


    cd /usr/local/src
    tar -xjvf vdr-1.2.6.tar.bz2
    ln -s vdr-1.2.6 VDR
    cd VDR
    make VFAT=1


    Управление с помощью клавиатуры при выбранной выше опции всегда возможно. Можно также выбрать опцию REMOTE=LIRC, если собираетесь управлять пультом. Опция VFAT=1 нужна если вы например писать на VFAT партицию или собираетесь експортировать через Samba в сети.
    Нужно изготовить новый бинарник с измененными опциями, тогда надо предварительно удалить предыдущуюу версию прежде чем приступите с новой компиляции


    cd /usr/local/src/VDR
    make clean
    make VFAT=1 REMOTE=LIRC


    При полной инсталяции софта, бинарник и скрипт runvdr будет скопирован в /usr/local/bin
    make install


    Одновременно предварительно подготовленные конфиги будут автоматом скопированы в /video. Если этого при инсталяции не произошло придется установить их вручную
    cp *conf /video
    В эту директорию будут позднее сбрасываться запусанные видео-файлы. Поэтому соответсвующий раздел на диске должен быть очень большим.
    Теперь можно Software для теста стартануть и после обучения с помощю клавиатуры управляемо. Вызов на консоли


    cd /usr/local/src/VDR
    ./vdr


    Программу всегда можно остановить исползуя [Ctrl-C]
    Различные опции можно узнать вызвав:


    ./vdr --help


    VDR стартует только если в этот момент загружены DVB модули. Самый удобный способ это использовать скрипт runvdr. Если вызвать как root то будут загрижены модули и затем стартанёт VDR. К тому же там есть встроенный Watchdog, который при падении VDR автоматически загружает модули DVB по новому и потом сновы вызывает VDR.
    Предварительно нужно сделать кое что, чтобы управление клавиатурой оставалось. Для этого создаётся tty8 как контролирующий терминал в скрипте runvdr. Переход на 8 терминал возможен с помощью клавиш [Ctrl-Alt-F8] из графической оболоцки или [Alt-F8] из другой консоли.


    ...
    DVBDIR="../DVB/driver"
    VDRPRG="./vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 $*"
    ...


    После этого можно вызвать скрипт в исходной директории


    cd /usr/local/src/VDR
    ./runvdr


    Следующей помощю кроме Документации в поставке является manpage в системе и которыую можно вызвать так
    man vdr
    Такое же действительно для раздела 5 в котором описаны форматы отдельных файлов
    man 5 vdr
    Поиск ошибок при загрузке драйверов а также при работе VDR очень облегчает взгляд в логи.
    tail -f /var/log/messages

  • 2.3 Конфигурационные файлы


    2.3.1 remote.conf


    При первом вызове VDR, программа попадает в обучаемый модус, для того чтобы сделать соответствие клавиш с функциями. Во время этой фазы можно делать изменения и преждевременно обрывать. Результат будет запомнен в remote.conf Содержимое может выглядеть приблизительно так


    KBD.Up 00000000001B4F41
    KBD.Down 00000000001B4F42
    KBD.Menu 000000001B5B317E
    KBD.Ok 000000000000000D
    KBD.Back 000000001B5B347E
    KBD.Left 00000000001B4F44
    KBD.Right 00000000001B4F43
    KBD.Red 00000000001B4F50
    KBD.Green 00000000001B4F51
    KBD.Yellow 00000000001B4F52
    KBD.Blue 00000000001B4F53
    KBD.0 0000000000000030
    KBD.1 0000000000000031
    KBD.2 0000000000000032
    KBD.3 0000000000000033
    KBD.4 0000000000000034
    KBD.5 0000000000000035
    KBD.6 0000000000000036
    KBD.7 0000000000000037
    KBD.8 0000000000000038
    KBD.9 0000000000000039
    KBD.Power 0000000000000070
    KBD.Volume+ 000000000000002B
    KBD.Volume- 000000000000002D
    KBD.Mute 000000000000006D
    LIRC.Up UP
    LIRC.Down DOWN
    LIRC.Menu MENU
    LIRC.Ok OK
    LIRC.Back BACK
    LIRC.Left LEFT
    LIRC.Right RIGHT
    LIRC.Red RED
    LIRC.Green GREEN
    LIRC.Yellow YELLOW
    LIRC.Blue BLUE
    LIRC.0 0
    LIRC.1 1
    LIRC.2 2
    LIRC.3 3
    LIRC.4 4
    LIRC.5 5
    LIRC.6 6
    LIRC.7 7
    LIRC.8 8
    LIRC.9 9
    LIRC.Power POWER
    LIRC.Volume+ VOLUME+
    LIRC.Volume- VOLUME-
    LIRC.Mute MUTE


    Как можно увидеть здесь есть и соответствия для использования LIRC. Можно также продефинировать и свои кнопки которым можно присвоить специальные функции. В примере показаны только минимальное решение. Если не нравится соответствие, то можно всегда удалить remote.conf и стартанув VDR по новому автоматически попадёте в фазу обучения.


    2.3.2 channels.conf


    Этот файл в поставке содержит относительно свежий сетинг для дигитальных програм со спутника Астра 19.2Е. Также лежат файлы для Кабеля и Терестриал. К сожалению предложения котороe существует в DVB-c & DVB-T оставляет желать лучшего и очень регионально отличается
    Пример:
    ...
    ORF1:12692:h:S19.2E:22000:160:161:165:102:13001:0:0:0
    ORF2:12692:h:S19.2E:22000:500:501:505:102:13002:0:0:0
    ZDF.info:11954:h:S19.2E:27500:610:620:0:0:28011:0:0:0
    CNN:12168:v:S19.2E:27500:165:100:0:0:28512:0:0:0
    Super RTL:12188:h:S19.2E:27500:165:120:65:0:12040:0:0:0
    VOX:12188:h:S19.2E:27500:167:136:71:0:12060:0:0:0
    Kabel 1:12480:v:S19.2E:27500:511:512:33:0:899:0:0:0
    Neun Live:12480:v:S19.2E:27500:767:768:35:0:897:0:0:0
    DSF:12480:v:S19.2E:27500:1023:1024:0:0:900:0:0:0
    HOT:12480:v:S19.2E:27500:1279:1280:0:0:40:0:0:0
    Bloomberg TV Germany:12552:v:S19.2E:22000:162:99:0:0:12160:0:0:0
    Bloomberg TV France:11817:v:S19.2E:27500:163:92:0:0:8004:0:0:0
    Bloomberg TV Spain:12168:v:S19.2E:27500:167:112:0:0:12721:0:0:0
    Sky News:12552:v:S19.2E:22000:305:306:0:0:3995:0:0:0
    Fox Kids Netherlands:12574:h:S19.2E:22000:163:92:0:0:5020:0:0:0
    Alice:12610:v:S19.2E:22000:162:96:0:0:12200:0:0:0
    n-tv:12670:v:S19.2E:22000:162:96:55:0:12730:0:0:0
    Grand Tourisme:12670:v:S19.2E:22000:289:290:0:0:17300:0:0:0
    TW1:12692:h:S19.2E:22000:166:167:0:0:13013:0:0:0
    Eurosport:11954:h:S19.2E:27500:410:420:0:0:28009:0:0:0
    EinsExtra:12110:h:S19.2E:27500:101:102:0:0:28201:0:0:0
    EinsFestival:12110:h:S19.2E:27500:201:202:0:0:28202:0:0:0
    EinsMuXx:12110:h:S19.2E:27500:301:302:0:0:28203:0:0:0
    ZDF Theaterkanal:11954:h:S19.2E:27500:1110:1120:0:0:28016:0:0:0
    ZDF.doku:11954:h:S19.2E:27500:660:670:0:0:28014:0:0:0
    MDR:12110:h:S19.2E:27500:401:402:404:0:28204:0:0:0
    ORB:12110:h:S19.2E:27500:501:502:504:0:28205:0:0:0
    B1:12110:h:S19.2E:27500:601:602:604:0:28206:0:0:0
    :Premiere World
    Premiere Start:11797:h:S19.2E:27500:255:256:0:101:8:0:0:0
    Premiere 1:11797:h:S19.2E:27500:511:512,513;515:0:101:10:0:0:0
    Premiere 2:11797:h:S19.2E:27500:1791:1792,1793;1795:0:101:11:0:0:0
    Premiere 3:11797:h:S19.2E:27500:2303:2304:0:101:43:0:0:0
    Premiere 4:11797:h:S19.2E:27500:767:768:0:101:9:0:0:0
    Premiere 5:11797:h:S19.2E:27500:1279:1280:0:101:29:0:0:0
    Premiere 6:11797:h:S19.2E:27500:1535:1536:0:101:41:0:0:0
    Premiere 7:11797:h:S19.2E:27500:1023:1024:0:101:20:0:0:0
    ...


    Значения полей таковы:
    имя:частота:поларизация:SR:VPID:APID:TPID:CA:ServiceID:NetworkID:TransportStreamID:RadioID
    Различные группы программ могут быть объединены с помощью
    значка ":", чтобы можно быстрее добратся до них. Дополнительно можно после значка "@" также указать следующий номер канала


    2.3.3 ca.conf


    Тот кто имеет CI-модуль а также CAM и естественно абонемент, может также смотреть кодированные программы. Каждый используемый тип кодировки должен быть выбран через OSD. Значения в файле ca.conf ничто иное как пятое с конца поле в каждой строке channels.conf


    # Conditional Access configuration for VDR
    #
    # Format:
    #
    # number description
    #
    # Please contact kls@cadsoft.de before assigning a new number
    # to a description, in order to keep them unique.


    0 Free To Air


    # BetaCrypt


    101 Premiere World
    102 ORF
    103 DIGI-Kabel


    Максимально возможно просмотр до 2 закодированных систем на каздую DVB-карту. Свободные программы FTA могут без особых ограничений приниматься
    (от переводчика: No comment)


    2.3.4. svdrphosts.conf


    Через так называемый Simple VDR Protokol можно управлять рекордером через сеть. Стандартно в svdrphosts.conf прописан только localhost с IP 127.0.0.1/255.255.255.0 с которого можно делать управление. По желанию это можно расширить для всей локальной сети. К сожалению отрабатывается одновременно только один клиент.
    #
    # svdrphosts This file describes a number of host addresses that
    # are allowed to connect to the SVDRP port of the Video
    # Disk Recorder (VDR) running on this system.
    # Syntax:
    #
    # IP-Address[/Netmask]
    #


    127.0.0.1 # always accept localhost
    192.168.1.0/24 # any host on the local net
    #204.152.189.113 # a specific host
    #0.0.0.0/0 # any host on any net (USE THIS WITH CARE!)



    Default исползуется порт 2001.


    telnet localhost 2001


    Возможные комманды можно узнать сделав


    help
    help command

  • 2.3.5 sources.conf


    VDR работает с различными картами. В мену к установке источников для канала используется sources.conf Соответственно его можно найти в channels.conf
    # Sources configuration for VDR
    #
    # Format:
    #
    # code description
    #
    # S (satellite) xy.z (orbital position in degrees) E or W (east or west)
    # Note: only the first part is actually used by VDR. The description part
    # is for the "human" interface for clarity.
    #
    # '&' means same orbital position but different host company.
    # '/' means same (or very little deviation) orbital position & host.
    # A value in () means this satellite is still in it's test phase.
    #
    # Please contact kls@cadsoft.de before assigning a new code
    # to a description, in order to keep them unique.


    # Satellites


    S5E Sirius 2/3
    S7E Eutelsat W3
    S10E Eutelsat W1R
    S13E Hotbird 1-(5)-6
    S16E Eutelsat W2
    S19.2E Astra 1B/C/E/F/G/H/2C


    ...


    # Cable


    C Cable


    # Terrestrial


    T Terrestrial


    2.3.6 diseqc.conf


    Файл diseqc.conf служит для управления системой для нескольких сателитов.
    # DiSEqC configuration for VDR
    #
    # Format:
    #
    # satellite slof polarization lof command...
    #
    # satellite: one of the 'S' codes defined in sources.conf
    # slof: switch frequency of LNB; the first entry with
    # an slof greater than the actual transponder
    # frequency will be used
    # polarization: V = vertical, H = horizontal
    # lof: the local oscillator frequency to subtract from
    # the actual transponder frequency
    # command:
    # t tone off
    # T tone on
    # v voltage low (13V)
    # V voltage high (18V)
    # A mini A
    # B mini B
    # Wnn wait nn milliseconds (nn may be any positive integer number)
    # [xx ...] hex code sequence (max. 6)
    #
    # The 'command...' part is optional.
    #
    # Examples:


    # Full DiSEqC sequence:


    S19.2E 11700 V 9750 t v W15 [E0 10 38 F0] W15 A W15 t
    S19.2E 99999 V 10600 t v W15 [E0 10 38 F1] W15 A W15 T
    S19.2E 11700 H 9750 t V W15 [E0 10 38 F2] W15 A W15 t
    S19.2E 99999 H 10600 t V W15 [E0 10 38 F3] W15 A W15 T


    S21.5E 11700 V 9750 t v W15 [E0 10 38 F4] W15 B W15 t
    S21.5E 99999 V 10600 t v W15 [E0 10 38 F5] W15 B W15 T
    S21.5E 11700 H 9750 t V W15 [E0 10 38 F6] W15 B W15 t
    S21.5E 99999 H 10600 t V W15 [E0 10 38 F7] W15 B W15 T


    ...
    В случае затруднений пользуйтесь закоментированными строчками

  • 2.3.7 commands.conf


    VDR предоставляет возможность вызывать комманды комфортабельно (нажатием кнопки на пульте). Для этого служит файл commands.conf
    Возможны выполнения различных программ и ихние output выдавать форматировано на телевизор


    Internet on : sudo /usr/sbin/cinternet -start; echo "PPPD started"
    Internet off : sudo /usr/sbin/cinternet -stop; echo "PPPD stoped"


    Различным командам при вызове даётся автоматически номер для "быстрого выбора". Если в конце текста добавить знак "?" то перед выполнением команды будет запрошено подтверждение на выполнение. Комманды выполняются с привилегией пользователя под которым бегает VDR. Для комманд которые должны отрабатываться пользователем root желательно пользоваться sudo-концептом.


    2.3.8 reccmds.conf


    Если в меню записей определенная "запись" помечена , то для неё можно выполнить определенные комманды. Формат reccmds.conf соответствует commands.conf. Вызов просходит нажатием клавиши на номерном блоке пульта


    Add to convertlist? : echo $1 >> /video/toconvert.txt


    В этом случае после подтверждения имя помеченной записи будет добавлено с списку конвертации


    2.3.9 keymacros.conf


    Также есть файл keymacros.conf для обозначения коротких комманд, которые при нажатии на цветные кнопки или заранее определенные кнопки во время проигрывания разрешает выполнение пунктов меню. Если впереди стоит "@" то можно таким способом вызвать плагин. Можно также одним нажатием кнопки симулировать несколько клавиш сразу
    # Remote control key macros for VDR
    #
    # Format:
    #
    # macrokey key1 key2 key3...
    # macrokey @plugin key1 key2 key3...
    #
    # See man vdr(5)


    Red Recordings
    Green Schedule
    Blue Timers
    Yellow Commands



    2.3.10 timers.conf


    timers.conf создаётся и изменяется автоматически через VDR или утилиты master-timers и epg2timers. Ручное вмешательство не желательно


    2.3.11 setup.conf


    Создаётся автоматически при первом запуске VDR и содержит персональный сетинг для VDR из OSD-Меню.

  • 2.4 Системный пользователь


    Из соображений безопасности не рекомендуется службу запускать под superuser root.Но не надо забывать что VDR делает некоторые системные установки ( например устанавливает время). Поэтому вводится в систему новый пользователь с неполными правами. КОнцепт базируется на пакете vdrdaemon_SuSE.tar.gz из Tool директории на сервер VDR. Этот пакет содержит скрипт mk_vdrdaemon который полностью автоматически делает нужные шаги для установки нового системного пользователя и вносит соответствующие скрипты в систему, но к сожалению предполагает полную и коректную Инсталяцию DVB-driver в системе.К сожалению это мне не удалось.Поэтому я ограничиваюсь той частью которая мне удалась.
    Вначале создаётся user vdr который принадлежит к предварительно созданной группе vdradaem и для него создаётся password
    groupadd -g 99 vdrdaem
    useradd -u 99 -g vdrdaem -d /usr/local/vdr -p vdrdaem -c 'VDR User' vdr
    Обычно пользователи и группы с номером меньше 100 являются системными. Теперь надо директорию для Видео и Конфигурации сделать доступной для write пользователю vdr


    chown -R vdr:vdrdaem /video
    mkdir -p /usr/local/vdr/etc/plugins
    chown -R vdr:vdrdaem /usr/local/vdr
    chown vdr:vdrdaem /dev/dvb/adapter?/*
    chown vdr:vdrdaem /dev/video?
    chown vdr:vdrdaem /dev/input/event?


    Кроме того нужно скопировать конфигурации в /usr/local/etc/vdr и соответственно изменить права доступа. Также не надо забывать о консоли на которой будет работать VDR и права доступа к приводам


    cp /usr/local/src/VDR/*.conf /usr/local/vdr/etc
    chmod a+rw /dev/tty8
    chmod a+rw /dev/dvd
    chmod a+rw /dev/video?

  • 2.5 Системный старт


    Чего теперь не хватает, так это елегантного старта VDR в момент когда компьютер совершает boot. Для этого подойдет все тот же runvdr, потому что одновременно будут проинициализированы драйвера для DVB-карт.Для того чтобы стартовать скрипт runvdr из /usr/local/bin/ нужно сделать несколько изменений
    -------------------------------------------------


    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $*"
    VDRUSR=vdr
    ...


    Как видно, успользуемая директория для конфигфайлов передаэтся с опцией, а также есть переменная окружения в которой прописан пользователь под правами которого бегает VDR. Кроме того задан путь в котором будут лежать библиотеки plugins. Для того чтобы драйвера загрузились скрипт должен вначале выполнится под пользователем root
    Для полнейшей автоматизации старта можно в конце файла /etc/inittab добавить такую строчку. Она дефинирует подьем VDR в runlevel 3 и 5.
    --------------------------------------------
    ...
    vdr:35:once:/usr/local/bin/runvdr


    2.6 Системный стоп


    VDR позволяет останавливать систему после определенного интервала времени инактивности и если впереди не предстоит какая нибудь запись автоматически. Для этого потребуется маленький скрипт который мы назовём vdrshutdown и поместим его в /usr/local/bin такого содержания
    -------------------------------------------------


    #!/bin/bash
    sudo /sbin/halt -p


    ------------------------------------------------


    Скрипт должен быть выполняемым
    chmod +x /usr/local/bin/vdrshutdown
    Так как VDR ограничен правами пользователя vdr то надо с помощью sudo дать возможность без ввода password посылать систему в down. Для этого надо вызвать visudo.
    И сделать такое ...
    --------------------------------------
    ...
    # User privilege specification
    root ALL=(ALL) ALL
    vdr ALL=(ALL) NOPASSWD: /sbin/halt


    --------------------------------------
    Ну и теперь дополнить пресловутый runvdr
    ----------------------------------------


    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $* \
    -s /usr/local/bin/vdrshutdown"
    VDRUSR=vdr
    ...
    ]

  • 3.PLUGINS


    3.1 VCD


    Plugin для воспроизведения VCD/SVCD инсталируется очень просто потому что не требует никаких дополнителных библиотек или программ. Потребуется только сам исходный код plugin.
    Инсталяция происходит в директории /usr/local/src


    cd /usr/local/src/
    tar -xzvf vdr-vcd-0.0.6c.tgz -C VDR/PLUGINS/src
    cd VDR/PLUGINS/src
    ln -s vcd-0.0.6c vcd


    Название линка на директорию с plugin должен содержать только маленькие буквы или цифр
    Теперь просходит сборка


    cd /usr/local/src/VDR
    make plugins


    Теперь можно стартовать VDR из директории с осходниками с дополнительной опцией для активации plugin. Предварительно надо убедиться, что /dev/cdrom является линком на устройство на котором будет воспроизводиться. Предварительное монтирование не нужно


    ./vdr -Pvcd
    Подсказки для специальных функций можно узнать так


    /vdr -Pvcd --help


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


    cd /usr/local/src/VDR
    make plugins-clean
    make plugins


    Загрузку желаемого plugin можно интегрировать все также в /usr/local/bin/runvdr
    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $* \
    -s /usr/local/bin/vdrshutdown \
    -P vcd"
    VDRUSR=vdr
    ...

  • 3.2 DVD


    Также существует plugin и для воспрозведения DVD. Чтобы его собрать понадобятся предварительно некоторые подготовительные работы.
    Для начала чтобы иметь доступ к DVD а также к менюшкам понадобится библиотека libdvdnav Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    Итак:


    tar -xzvf libdvdnav-0.1.9.tar.gz
    cd libdvdnav-0.1.9
    ./configure --prefix=/usr
    make
    make install


    Большинство Video-DVD оснащены так называемым CSS-Content Scrambling System. Чтобы обойти эту защиту потребуется libdvdcss из проекта VideoLAN. С точки зрения закона такое запрещено, но нужно для того что бы смотреть легально купленные DVD на легальных DVD-приводах
    Поехали дальше


    tar -xzvf libdvdcss-1.2.8.tar.gz
    cd libdvdcss-1.2.8
    ./configure --prefix=/usr
    make
    make install


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


    tar -xzvf a52dec-0.7.4.tar.gz
    cd a52dec-0.7.4
    ./configure --prefix=/usr
    make
    make install


    Ну и наконец сам plugin


    cd /usr/local/src/
    tar -xjvf vdr-dvd-0.3.4-rc10.tar.bz2 -C VDR/PLUGINS/src
    cd VDR/PLUGINS/src
    ln -s dvd-0.3.4-rc10 dvd


    Теперь можно заняться сборкой


    cd /usr/local/src/VDR
    make plugins


    Теперь можно поднять VDR


    cd /usr/local/src/VDR
    ./vdr -Pdvd


    При этом надо учитывать, что линк /dev/dvd показывает на реалный device. Если же нет то можно пользоваться опциями


    ./vdr -P"dvd -C /media/dvd"


    Ни и наконец увековечим проделанную работу в runvdr


    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $* \
    -s /usr/local/bin/vdrshutdown \
    -P vcd \
    -P dvd"
    VDRUSR=vdr
    ...


    Для того чтобы уменьшить нагрузку на систему нужно включить DMA для привода. В SuSE это делается прописыванием в /etc/init.d/boot.local


    ...
    /sbin/hdparm -d1 -X34 /dev/dvd


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


    gcc -o dvd_region dvd_region.c


    Считываем актуальный код


    ./dvd_region


    К сожалению региональный код можно максимально 5 раз записать в firmware. В случае надобности можно все таки изменить на значение 2 (Германия/Европа)


    ./dvd_region -s -r 2

  • 3.3 MP3


    Следующий plugin для воспроизведения mp3 и других звуковых файлов с жесткого диска или CD-ROM (прим. переводчика: любого сетевого ресурса)
    Предпосылкой для инсталяции является наличие libid3tag & libmad


    Устанавливаем libid3tag


    tar -xzvf libid3tag-0.15.0b.tar.gz
    cd libid3tag-0.15.0b
    ./configure
    make
    make install
    ldconfig
    Теперь очередь за libmad. Но предварительно ещё можно наложить заплату для ускорения декодирования, которую можно найти на Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.



    tar -xzvf libmad-0.15.0b.tar.gz
    cp libmad-0.15.0b-speedup.diff.gz libmad-0.15.0b
    cd libmad-0.15.0b
    zcat libmad-0.15.0b-speedup.diff.gz | patch
    ./configure
    make
    make install
    ldconfig


    Дополнительно можно влючить поддержку OggVorbis инсталировав libogg, libvorbis,libogg-devel, libvorbis-devel
    С помощью MP3-plugin можно также проирывать и wav. Для это нужна библиотека libsndfile


    tar -xzvf libsndfile-1.0.5.tar.gz
    cd libsndfile-1.0.5
    ./configure
    make
    make install
    ldconfig


    Этим мы обеспечили проигрывание wav с жесткого диска. Чтобы воспроиводить диски нужен cdfs
    tar -xjvf cdfs-0.5c.tar.bz2
    cd cdfs-0.5c
    ./configure
    make
    make install
    ldconfig

  • .....продолжение
    В нормальном случае Audio-CD не монтируется, т.к. не содержит никакой файловой системы. При помощи cdfs появляются отдельные треки как wav и их тогда можно слушать. Но при этом нету никаких корекций ошибок, как это происходит с программами cdda2wav &cdparonoia, так что поцарапанные CD могут прерываться.
    Теперь сам plugin


    cd /usr/local/src
    tar -xzvf vdr-mp3-0.8.2.tar.gz -C VDR/PLUGINS/src
    cd VDR/PLUGINS/src
    ln -s mp3-0.8.2 mp3
    cd /usr/local/src/VDR
    make plugins


    Теперь создаём директорию /mp3 а также точку монтировки для сидюков


    mkdir /mp3
    mkdir /cdfs


    И наконец примеры конфигов из поставки а также примеры скриптов копируются на соотв. директории


    cd PLUGINS/src/mp3/examples
    cp mount.sh.example /usr/local/vdr/mount.sh
    chmod +x /usr/local/vdr/mount.sh
    cp mp3sources.conf.example /usr/local/vdr/etc/plugins/mp3sources.conf
    Мой файл mp3sources.conf выглядит так


    /mp3;Locale Platte;0
    /media/cdrom;CDROM;1
    /cdfs;CD-Audio;1;*.wav


    Теперь надо внести несколько изменений в /etc/fstab
    ...
    /dev/cdrom /media/cdrom auto ro,noauto,user,exec 0 0
    /dev/hdc /cdfs cdfs ro,noauto,user 0 0
    ...


    Ну тепер можно и поднимать VDR с mp3


    cd /usr/local/src/VDR
    ./vdr -P"mp3 -m /usr/local/vdr/mount.sh"


    Тот кто хочет может ещё добиться чтобы показывались имена треков. Ето присходит либо с локальной базой данных либо через Интернет. Для этого нужно сдеалть директорию где будут скалдироваться данные и расширить вызов plugin несколькими опциями


    mkdir /var/lib/cddb
    chown vdr:vdrdaem /var/lib/cddb


    Кроме того можно пользоваться ресурсами streaminga. Для этого в директории /mp3 кладём файл например следующего содержания


    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    Ну и наконец автоматизируем подьём


    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $* \
    -s /usr/local/bin/vdrshutdown \
    -P vcd \
    -P dvd \
    -P'mp3 -m /usr/local/vdr/mount.sh -B /var/lib/cddb'"
    VDRUSR=vdr
    ...

  • 3.4 MPlayer


    Особенностью плагина MP3 также является возможность проигрывания различных видео форматов таких например как DivX с помощью MPlayer. В модусе slave управление происходит через on-screen-display и кнопки на пульте.
    Software лежит на Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    Поддержку выдачи сигнала через DVB карту включается так:


    tar -xjvf MPlayer-1.0pre2.tar.bz2
    cd MPlayer-1.0pre2
    ./configure --with-extraincdir=/usr/local/src/DVB/include
    make
    make install


    Вместо скрипта mplayer.sh из поставки используем более продвинутый скрипт взятый с Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
    И его можно например инсталлировать в директории /usr/local/vdr


    tar -xzvf mplayer.sh-0.8.4.tar.gz -C /usr/local/vdr



    Теперь можно сделать старт


    cd /usr/local/src/VDR
    ./vdr -P"mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh"



    Ну и как всегда увековечить


    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $* \
    -s /usr/local/bin/vdrshutdown \
    -P vcd \
    -P dvd \
    -P'mp3 -m /usr/local/vdr/mount.sh' \
    -P'mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh'"
    VDRUSR=vdr
    ...

  • 3.5 Teletext


    Также для представления Телетекста на экране есть соответствуйщий plugin.
    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    Как всегда инсталяция происходит в директории /usr/local/src



    cd /usr/local/src/
    tar -xzvf vdr-osdteletext-0.3.2.tgz -C VDR/PLUGINS/src
    cd VDR/PLUGINS/src
    ln -s osdteletext-0.3.2 osdteletext
    cd ../..
    make plugins


    Теперь надо создать директорию /vtx где будут запоминаться вызванные страницы и соответственно дать туда права доступа



    mkdir /vtx
    chown vdr:vdrdaem /vtx



    Для того чтобы эта директория не была сборщиком мусора, можно создать tmpfs. В отличие от RAM-диска не надо создавать файловою систему. В этом примере в файле /etc/fstab создаётся динамическая область размером до 16 МБ. Содержимое при каждом старте теряется


    ...
    tmpfs /vtx tmpfs size=16m 0 0



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


    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $* \
    -s /usr/local/bin/vdrshutdown \
    -P vcd \
    -P dvd \
    -P'mp3 -m /usr/local/vdr/mount.sh' \
    -P'mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh' \
    -P'osdteletext -r'"
    VDRUSR=vdr
    ...

  • 3.6 Streaming


    При помощи Streaming-Plugin можно принятый поток раздавать через сеть на один или несколько компьютеров


    Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.


    Всё опять таки происходит в /usr/local/src



    cd /usr/local/src/
    tar -xzvf vdr-stream-0.1.1.tgz -C VDR/PLUGINS/src
    cd VDR/PLUGINS/src
    ln -s stream-0.1.1 stream
    cd ../..
    make plugins



    Прописываем в runvdr


    ...
    DVBDIR="/usr/local/src/DVB/driver"
    VDRPRG="/usr/local/bin/vdr"
    VDRCMD="$VDRPRG -w 60 -t /dev/tty8 -L /usr/local/src/VDR/PLUGINS/lib -c /usr/local/vdr/etc $* \
    -s /usr/local/bin/vdrshutdown \
    -P vcd \
    -P dvd \
    -P'mp3 -m /usr/local/vdr/mount.sh' \
    -P'mplayer -m /usr/local/vdr/mount.sh -M /usr/local/vdr/mplayer.sh' \
    -P'osdteletext -r' \
    -P stream"
    VDRUSR=vdr
    ...



    На удалённой машене (клиенте) собираем клиентскую программу



    tar -xzvf vdr-stream-0.1.1.tgz
    cd stream-0.1.1/client
    make
    cp stream /usr/local/bin



    Ну и теперь пытаемся смотреть


    stream IP_VDR_SERVER | mplayer -


    Можно также передавать поток через Multicast. Но для этого надо иметь соответствуйщую route


    route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0


    Поддержка Multicast должна быть в ядре включена. Чтобы каждый раз не прописывать можно это прописать в /etc/route.conf



    224.0.0.0 0.0.0.0 240.0.0.0 eth0



    Тогда вызов на клиенте выглядит так


    mplayer rtp://224.0.1.2:5002 -cache 2048



    Самое главное, чтобы Multicast был настроен и на клиентской машине. В птотивном случае ничего не произойдёт.
    Ещё одна возможность предоставляется при использовании FFMpeg-Server. Который может транспортировать данные в различных форматах


    З.Ы. К сожалению эта инфо уже достаточно устарела....