Смотрим/пишем TV под OpenSuse 11.2

Аватар пользователя lecksys

Категория: 

В данной статье я, расскажу о своем опыте по установке ТВ-тюнера в систему и различном программном обеспечении для просмотра и записи аналогового ТВ.
Если вы еще не купили тюнер и вы планируете использовать его в Linux очень сильно советую посмотреть Linux Kernel Documentation и посмотреть поддерживается ли Ваша модель модулем ядра saa7134. Это очень сильно облегчит установку и настройку тюнера.
Почти все современные ТВ-тюнеры построены на чипе SAA713X последняя цифра может отличаться в зависимости от модели и производителя тюнера. Причем обратите внимание, что не все современные модели, особенно USB тюнеров, можно вообще заставить работать под Linux на сегодняшний день (если вы конечно сами не напишите нужный модуль ). Старые модели использовали чипы BT848/878 для работы они используют модуль ядра bttv. Есть еще чипы Conexant, но с такими тюнерами я не сталкивался и ни чего про них рассказать не могу.
В любом случае желательно перед покупкой, узнать поддерживается ли ваша модель вашим ядром, это можно узнать по приведенной выше ссылке.

Первый тюнер про установку которого я расскажу, это
LifeView FlyTV Platinum FM. На модели устанавливаются АЦП Philips SAA7135, значит используется модуль ядра saa7134. Чипы серии SAA713X умеют передавать звук по PCI, т.е. не обязательно подключать audio выход тюнера к входу звуковой карты для передачи звука. Но я, отключил эту возможность и подключил тюнер шнурком от CD-ROM к внутреннему входу материнской платы, по причине, что тестовая машинка имеет слабый процессор и я не хотел его дополнительно загружать. При установке системы, тюнер уже был установлен в компьютер и установщик SUSE правильно определил модель тюнера, загрузил модуль, установил ПО MoTV для просмотра и настроил все каналы. Параметры загрузки модуля saa7134, при настройке через YAST хранятся в файле /etc/modprobe.d/50-tv.conf. Кстати, настройка через YAST-TV-карта довольно удобная и позволяет выполнить все настройки тюнера через GUI. Но я воспользовался непосредственной правкой конфигурационных файлов. Все дополнительные параметры загрузки модуля я вносил в файл /etc/modprobe.d/99-local.conf, который как раз и предназначен для управления параметрами к подгружаемым модулям ядра.
Привожу для примера свои файлы 50-tv.conf и 99-local.conf


#/etc/modprobe.d/50-tv.conf
alias char-major-81 videodev
options i2c-algo-bit bit_test=1

# YaST configured TV card
# 37TO.zsC18zm2qL1:SAA7131/SAA7133/SAA7135 Video Broadcast Decoder
alias char-major-81-0 saa7134
alias char-major-81-1 off
alias char-major-81-2 off
alias char-major-81-3 off



# /etc/modprobe.d/99-local.conf
# please add local extensions to this file
#
options saa7134 card=54 secam=dk alsa=0 disable_ir=1

Остановлюсь на параметрах загрузки модуля более подробно.
card=54 - Указывает модулю что используется карта LifeView FlyTV Platinum FM/Gold
secam=dk - Использовать стандарт звука SECAM D/K
alsa= 0 - Не использовать передачу звука по PCI. Следовательно если вы хотите использовать возможность передачи звука по PCI указываем alsa=1. Тогда загружается дополнительный модуль ядра saa7134_alsa, и в системе создается новое звуковое устройство /dev/dspX/. Часть программ для просмотра ПО умеют воспроизводить звук с PCI, а некоторые нет, этот вопрос я рассмотрю, чуть позже. Да чуть не забыл, все современные тюнеры, могут принимать стерео звук в формате NICAM, в котором вещает ряд Российских каналов.
disable_ir=1 - параметр который отключает встроенную в тюнер поддержку IR пульта, так как родного ресивера и ДУ тюнера у меня нет, и я использовал другой ресивер, подключенный в USB.
Все доступные параметры модуля можно посмотреть командой


sudo /sbin/modinfo saa7134

Для просмотра ТВ в Linux, существует большое количество различных программ от мультимедийного "комбайна" MythTV, на основе которого создают отдельные дистрибутивы, до достаточно простой, но функциональной xawtv. Для себя я выбрал Tvtime, не тянет много зависимостей, достаточно легок, имеет русский интерфейс, но каждый может выбрать ту программу которая ему нравиться больше. У Tvtime есть несколько минусов, но для меня они не критичны, для других они могут быть критичны и я их опишу.
- Не воспроизводит звук через PCI, я не использую данную возможность. Если же вы используете передачу звука через PCI, то для того чтобы звук появился можно использовать следующий скрипт для запуска tvtime


#!/bin/sh
if [ -f /usr/bin/arecord ]; then arecord -q -D hw:1,0 -r 32000 -c 2 -f S16_LE | aplay -q - &
fi
if [ -f /usr/bin/tvtime ]; then tvtime -m --mixer=/dev/mixer:pcm --xmltv=/var/lib/tvtime/tvguide.xml
fi
pid=`pidof arecord`
if [ $pid ]; then kill -9 $pid
fi

-не умеет записывать передачу. Я использую для записи streamer и запускаю его с помощью cron


#! /bin/sh
if [ -z $1 ]; then
kmvTimeToRecord=50;
else
kmvTimeToRecord=$1;
fi
streamer -o ~/movie.avi -r 24 -f mjpeg -j 75 -s 720x520 -F mono16 -t $kmvTimeToRecord:00 -p2

В качестве параметра можно задать время записи в минутах (по умолчанию стоит 50 мин).Не забываем установить селектор тюнера на нужный канал (В программе просмотра выбираем нужный канал, и выходим перед записью)
-из "коробки" не все существующие каналы активировались автоматически, пришлось ручками править /home/usr_name/.tvtime/stationlist.xml
Из плюсов TVtime
- Есть возможность передавать команды управления программой из командной строки в виде


tvtime-command

, что дает возможность управлять программой с пульта ДУ,полный список команд можно посмотреть на Tvtime Home (язык английский)
-Имеет русский интерфейс, понимает название каналов и программу передач на русском.
-Не привязана к конкретному рабочему столу.
Но еще раз повторюсь, существует много различных программ для просмотра TV и каждый сможет найти, то что ему по душе.
К Tvtime можно подключить программу телепередач в формате xmltv.
В большинстве случаев в софте для просмотра ТВ под MS Windows, для работы с программой телепередач используется форматы JTV или Listtv и именно в этих форматах и выкладывались данные на различных интернет ресурсах. В Linux используется формат XMLTV, существует пакет xmltv, который содержит набор скриптов, для закачки листингов телепрограмм в формате JTV и преобразованию их в XMLTV. Но на сайте Teleguide.info я нашел программу телепередач уже в формате XMLTV, так что ни каких преобразований и дополнительных пакетов мне не понадобилось.
Подключаем скачанную программу телепередач к Tvtime командой


tvtime-configure --xmltv=~/.tvtime/xmltv.xml


путь до листинга естественно у вас может быть другой
Данная команда прописывает в файл конфигурации Tvtime путь по которому надо искать листинг.
Есть еще нюанс, для того чтобы TVtime понимал данные по какому каналу ему брать из листинга, надо прописать соответствие названий каналов в ~/.tvtime/stationlist.xml с названиями каналов в файле с программой телепередач xmltv.xml. Сделать это можно двумя способами.
Так выглядит описание канала (в примере канал ТВ-3) в stationlist.xml в примерах символы "" заменен на "( и )" иначе в теге "code" данные не отображаются


(station name="55" active="1" position="55" band="UHF" channel="U46" finetune="0" norm="SECAM" audio="auto"/)"

А так выглядит описание канала ТВ-3 в файле xmltv.xml


(channel id="105" languge="ru") (display-name)ТВ-3(/display-name)
(/channel)

Меняем значение station name="55" на station name="ТВ-3" в файле stationlist.xml и так делаем для всех каналов. Второй способ который был описан на сайте Tvtime, это добавить в описание канала в файле stationlist.xml тег xmltvid="ТВ-3". Все наслаждаемся аннотаций к идущим в эфире программам и смотрим продолжительность идущей передачи.
Для работы с просмотра программы телепередач вне TVtime я выбрал программу FreeGuide. Супер функциональностью она не отличается, фактически она позволяет только просматривать программу телепередач в удобном формате. Но она имеет русский интерфейс и позволила загрузить уже скачанный файл в формате XMLTV (например tvbrowser, я так и не сумел заставить подхватить существующий файл)

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


#getTVguide.sh
#!/bin/bash
rm ~/.tvtime/xmltv.xml
rm ~/.tvtime/xmltv.xml.gz
wget http://www.teleguide.info/download/new3/xmltv.xml.gz ~/.tvtime/xmltv.xml.gz
gunzip ~/.tvtime/xmltv.xml.gz

Если вы еще захотели просмотреть teletext, то ставим пакет AleVT, ни каких нюансов в его использовании я не обнаружил.

ЧАСТЬ 2

Второй тюнер про установку которого я расскажу называется Mr.Vision TVLink выпускался и продавался он еще в далеком 98 году. На примере установки данного раритета я попытаюсь описать методы установки тюнера, который автоматически не определяется системой и требует определенных параметров драйвера. Тюнер собран на основе чипа BT848 и соответственно использует драйвер bttv. После установки в систему был чип был автоматически опознан и драйвер bttv подгружался, но ни в одной из программ не было ни изображения ни звука. С помощью было найдено, что ближайшем аналогом данного девайса является TV тюнер TEKRAM 250. После установки параметра


options bttv card=119 tuner=23

в файле /etc/modprobe.d/99-local.conf, что соответствует тюнеру TEKRAM 250, появилось изображение, но звук неработал. С помощью поиска я нашел интересную информацию bttv and sound mini howto, осталось найти нужные значения параметров драйвера. Для этого мне пришлось установить WINDOWS 98 , так как драйверов под XP и тем более под VISTA, под данный тюнер не существует, а универсальный драйвер под XP тоже запускал тюнер без звука.Для считывания с тюнера я использовал програму BTSPY, взять можно отсюда >WDM Video Capture Driver, данная программа может считывать данные с тюнеров с чипами BT848/878. Для считывания данных с тюнеров с чипами SAA713X можно воспользоваться программой FlyTest. Данные программы позволяют найти правильные значения GPIO.

Приведу свои параметры


options bttv audiomux=2,1,1 automute=1 bttv_gpio=1 bttv_verbose=2 card=119 tuner=23 gpiomask=0x0f radio=0

С данными параметрами тюнер прекрасно работает под Linux.
Ну вот пожалуй и все.
Всем приятного просмотра

PS: Статья перенесена со старого форума, под авторством DrStrip 25/07/2010

Теги: