Fedora linux forum

Форум русской поддержки ОС Fedora linux

 

#1 2008-09-18 14:47:01

oNe3
Member
Зарегистрирован: 2008-09-18
Сообщений: 36

Просмотр DVB в Fedora с помощью VDR

Информация о просмотре DVB под ОС LINUX с помощью программы VDR



Стабильная версия VDR 1.6.0

Новая devel версия VDR VDR 1.7.0

Список каналов и необходимые для плагина файлы находятся тут




Инструкция по сборке VDR

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

Я опишу сборку и настройку в дистрибутиве Fedora 9.   Аналогичным образом сборка и настройка осуществляется и в других RED HAT Based дистрибутивах. Fedora, Centos, ASP и других основанных на продуктах компании RED HAT. Возможно в других дистрибутивах вам придется пользоваться другим менеджером пакетов. В дистрибутивах линукс основанных на RED HAT используется менеджер пакетов YUM. Хочу обратить Ваше внимание что работа с YUM, а именно установка ПО требует прав суперпользователя root. Чтобы стать root от другого пользователя нужно выполнить команду su -. После ввода комманды вам потребуется ввести пароль root и обратите внимание что при вводе пароля в консоли символы не отображаются. Я буду использовать следующие обозначения для комманд консоли:
строка начинающаяся с символа $ означает что действия выполняются от имени текущего пользователя.
строка начинающаяся с символа # означает что действия выполняются от имени суперпользователя root.

Как вы уже наверное догадались все действия будут происходить в консоли smile
Совет: Откройте две консоли (либо две вкладки) в одной вы будете работать от своего имени — собирать VDR и плагины, а в другой вы от пользователя root будете устанавливать нужные для сборки пакеты.

Итак начнем сборку VDR.

Берем VDR 1.6.0 отсюда

Можно также пойти другим путем и воспользоваться консольной программой для закачки файлов wget. Если wget не установлен в вашей системе то его можно установить командой:
[INDENT]# yum install wget

Переходим в домашний каталог текущего пользователя.
$ cd ~
Скачиваем файл с исходниками.
$ wget ftp://ftp.cadsoft.de/vdr/vdr-1.6.0.tar.bz2
Распаковываем архив.
$ tar -jxvf vdr-1.6.0.tar.bz2
Перейдем в каталог VDR-1.6.0
$ cd vdr-1.6.0
Для сборки нам будут необходимы некоторые пакеты. Установим их коммандой:
# yum install make gcc-c++ fontconfig fontconfig-devel gettext gettext-devel libcap libcap-devel libjpeg libjpeg-devel
После того как менеджер пакетов разберется с зависимостями вам нужно будет ответить y на запрос скачивания и установки файлов.

Теперь выполняем
$ make

И все готово, VDR собран smile


Установка плагинов.

Плагин Softdevice

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

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

Перейдем в каталог плагинов VDR.
$ cd ./PLUGINS/src/
Скачаем последнюю версию плагина.
$ cvs -z3 -d:pserver:anonymous@cvs.softdevice.berlios.de:/cvsroot/softdevice co softdevice

Для успешной сборки плагина softdevice, нам будут необходимы пакеты из репозитория (источник программ) Livna. Этот репозиторий содержит в основном мультимедийный софт.
Для дальнейшей сборки softdevice нам будет необходимо подключить этот репозиторий. Для этого выполняем следующую последовательность команд:
# wget http://rpm.livna.org/livna-release-9.rpm
# yum localinstall livna-release-9.rpm
Далее скачаем необходимые для сборки softdevice пакеты:
# yum --enablerepo=livna-development install ffmpeg ffmpeg-devel alsa-lib-devel libXv-devel

Теперь нам нужно настроить плагин для использования с различными типа видео и аудио систем линукс. Именно нас интересуют XV (видео для возможности вывода в окне) и ALSA (аудиомикшер звукой платы). Для этого выполним команду:
$ ./softdevice/configure --disable-vidix
В процессе выполнения мы увидим следующий вывод консоли

$ ./softdevice/configure --disable-vidix
Testing system and cpu type... found Linux on i386 cpu.
Checking for pkg-config... Found.
Checking for ffmpeg... Ok.
Checking for ffmpeg/libswscale... Using libswscale.
Checking for pp_postprocess 1st arg ... is: uint8_t **
Checking for ALSA sound... Enabled audio-alsa.
Checking for OSS sound... Enabled audio-oss.
Checking for linux frambuffer... Enabled video-fb.
Checking for yaepg patch... Not Found.
Checking for DirectFB and DFB++... Not Found.
Checking for vidix... Not found.
Checking for Xv... Enabled video-xv.
Checking for Xinerama... Not found.
Creating temporary config.h and config.mak
updated config.h
updated config.mak
Configure is finished. Please check config.log in case of problems.

Жирным шрифтом я специально выделил строки на которые следует обратить внимание.

Итак плагин softdevice готов к сборке!!! smile

Дополнительная информация: Подробнее об этом плагине Вы можете почитать на этой странице официальной wiki VDR http://www.free-x.de/wiki/index.php/Softdevice-plugin посвященной этому плагину его описанию, настройке и установке.


Плагин SC
Следующим плагином будет софтдекодер sc. Нам ведь не интересно смотреть только открытые каналы wink. Этот плагин содержит в себе все что нужно для декодирования и шаринга, поэтому ничего другого нам для декодирования не понадобится.

Для сборки плагина нам понадобится выполнить несколько действий:
Установим нужные для сборки и получения последней версии плагина пакеты.
# yum install hgsvn openssl-devel
Получим последнюю версию плагина.
$ hg clone http://85.17.209.13:6100/sc

Так как работа этого плагина тесно связазана с вычислениями, при его сборке применяется система оптимизаций под конкретный тип процессора и операционной системы.
Хочется сразу предупредить Вас о том что возможно Вам и не понадобится конфигурировать sc. Ну а если все таки Вы столкнулись с тем что плагин отказался собраться то все же необходимо будет подправить Makefile в каталоге sc/. 
Найдем следующие строки в файле Makefile
CPUOPT     ?= pentium
PARALLEL   ?= PARALLEL_32_INT

Внимание! При ошибках сборки плагина правильно укажите тип вашего процессора в секции, особенно это касается x86_64 систем.

# FFdeCSA
CPUOPT     ?= pentium
PARALLEL   ?= PARALLEL_32_INT

в файле Makefile

[size=1]CPUOPT=type   Для определения типа процессора, компилятор gcc 3.2 может использовать следующие опции:
               pentium, pentium-mmx, pentiumpro, pentium2, pentium3, pentium4, k6, k6-2, k6-3, athlon, athlon-tbird, athlon64, athlon-xp and
               athlon-mp.
Вы должны определить тип Вашего процессора для наилучшей производительности
По умолчанию значение: pentium.

PARALLEL=mode
Для определения какой тип данных будет использоваться для параллельных вычислений используются следующие опции:
                  PARALLEL_32_4CHAR
                 PARALLEL_32_4CHARA
                 PARALLEL_32_INT
                 PARALLEL_64_8CHAR
                 PARALLEL_64_8CHARA
                 PARALLEL_64_2INT
                 PARALLEL_64_LONG
                 PARALLEL_64_MMX
                 PARALLEL_128_16CHAR
                 PARALLEL_128_16CHARA
                 PARALLEL_128_4INT
                 PARALLEL_128_2LONG
                 PARALLEL_128_2MMX
                 PARALLEL_128_SSE

Подсказка: Если вы имеете Pentium4 или AthlonXP используйте PARALLEL_64_MMX. Если Ваш процессор поддерживает 64-битные расширения пробуйте значение PARALLEL_128_SSE. Для любых случаев используйте PARALLEL_32_INT что является не самым быстрым вариантом но имеет хорошую переносимость подходит к большинству 32-битных систем

Для дополнительной информации ознакомьтесь с документацией FFdecsa


[FONT=Courier New]
Тип данных  _________  Скорость (Mbit/s) ___ Примечания
---------------------------------------------------------------------
PARALLEL_32_4CHAR ---------- 14
PARALLEL_32_4CHARA --------- 12
PARALLEL_32_INT ------------ 125          довольно быстро и хорошо переносимо
PARALLEL_64_8CHAR ---------- 17
PARALLEL_64_8CHARA --------- 15           нуждается в векторизации компилятора
PARALLEL_64_2INT ----------- 75           x86 которые имеют два регистра
PARALLEL_64_LONG ----------- 97           пробуйте это на x86_64 системах
PARALLEL_64_MMX ------------ 165          Самый быстрый вариант!!!
PARALLEL_128_16CHAR -------- 6
PARALLEL_128_16CHARA ------- 7
PARALLEL_128_4INT ---------- 69
PARALLEL_128_2LONG --------- 52
PARALLEL_128_2MMX ---------- 36           
PARALLEL_128_SSE ----------- 156         
64_MMX
[/FONT]

Лучшая скорость достигается с теми типами данных и инструкциями под работу с которыми оптимизирован Ваш процессор: int, mmx, sse

64 bit процессоры должны использовать 64_LONG.

В моем случае на системе x86_64 и процессоре Athlon 64 3200 пришлось изменить эти опции следующим образом

CPUOPT     ?= athlon64
PARALLEL   ?= PARALLEL_64_MMX

Если все сделано правильно то плагин без проблем скомпилируется. Если нет рекомендую почитать документацию которая поставляется с плагином.



Теперь когда все нужные нам плагины готовы к сборке нам необходим выполнить следующие команды для компиляции плагинов:
Возвращаемся на 2 каталога выше. (Если Вы будете четко действовать по инструкции то эта команда вернет Вас в каталог /~/vdr-1.6.0/ , Если вы совершали какие либо движения то Вам придется самостоятельно зайти в каталог где находится VDR)
$ cd ./../../
И выполняем сборку плагинов
$ make plugins



Радуемся тому что все собралось. Мы уже в нескольких шагах от того как увидим картинку smile


p.s. Существует также огромное количество плагинов расширяющих функциональность с их списком можно ознакомится на этой странице



Вперед за картинкой smile

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


В моем случае я решил «свалить все в кучу», то есть и конфиги и записи у меня лежат в одном каталоге /home/one/vdr/video


Главные конфигурациооные файлы VDR
channels.conf — список каналов.
setup.conf — основные настройки программы
diseqc.conf — описание конфигурации дисек коммутаторов
remote.conf — описание клавиш управления и комманд lirc
sources.conf — названия и список спутников
timers.conf — таймеры записей


в папке конфигурации /home/one/vdr/video/plugins для нормального запуска плагина sc нужны файлики 
cardclient.conf — описание серверов дающих ключики smile и Softcam.key

Если все эти файлы VDR должно без проблем запустится. В моем случае VDR запускается таким скриптом. Так как я имею 2 двб карты я спрашиваю у udev какая из карт нужная мне скайстар 2 и даю VDR использовать только ее.


#!/bin/bash
if [ -d /dev/dvb/adapter1 ]; then
d=$(udevinfo -a -p $(udevinfo -q path -n /dev/dvb/adapter1/frontend0)| grep b2c2 -c)
fi;
LANG=ru_RU.UTF-8 ./vdr -c /home/one/vdr/video -D $d -v /home/one/vdr/video --no-kbd --lirc=/dev/lircd  \
    -P "sc" \
    -P "softdevice -vo xv:aspect=normal -ao oss:"



Решение проблем с 2ми и более DVB картами
При работе в линукс имея 2 двб карты я столкнулся со следующей проблемой. Я имею 2 двб карты ТТ1401 и СС2. СС2 смотрю тв и ворочаю мотором, а ТТ1401 использую в основном для рыбалки.
Причиной проблемы являлся udev демон управляющий именами устройств в линукс. Проблема заключалась в том что при перезагрузке иногда двб карты менялись местами что соотвественно приводило к необходимости править конфиг VDR и причиняло массу неудобств.
В результате раскопок и написания маленького скриптика предшествующего запуску vdr проблема разрешилась.
Вот мой пример скрипта запуска vdr:

#!/bin/bash
if [ -d /dev/dvb/adapter1 ]; then
d=$(udevinfo -a -p $(udevinfo -q path -n /dev/dvb/adapter1/frontend0)| grep b2c2 -c)
fi;
LANG=ru_RU.UTF-8 ./vdr -c /home/one/video -D $d -v /home/one/video --no-kbd --lirc=/dev/lircd  \
    -P "sc" \
    -P "softdevice -vo xv:" \



Объясню что за что отвечает в кратце.
Получаем номер вхождений b2c2 (это является подстрокой имени драйвера СС2)
d=$(udevinfo -a -p $(udevinfo -q path -n /dev/dvb/adapter1/frontend0)| grep b2c2 -c)
Если имеем 0, значит СС2 сейчас адаптер 0, а если имеем 1 значит 1 smile
Далее подставляем это в параметр vdr -D который указывает программе использовать указанный адаптер.

Вот и все, теперь никаких проблем, проблеммы из-за udev решились им самим же.




В аттаче архивчик с необходимыми файлами ключиков и каналов smile

Вот в принципе и все, с остальными настройками будем разбиратся по мере поступления вопросов

Неактивен