Главная Форум Wiki Почта Jabber Devel NIX-FILES
Материал из AltLUG Wiki
Перейти к: навигация, поиск

Advanced:television

Содержание

Введение

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

Несколько слов о выборе тюнера

Привычно считать, что чем дороже устройство, тем оно лучше. В ряде случаев это действительно так. Обычно, покупая тюнер за 5 000 рублей, вы получаете большую коробочку, пульт, на котором много кнопочек, и программное обеспечение (очень сильно похожее на Media Center от одного из проприетарных гигантов). Покупая тюнер за 900 рублей, мы получаем маленькую коробочку, пультик с небольшим количеством кнопочек и глючный старый софт... В обоих случаях софт не работает под Linux, а если мы работаем под Linux, то мы можем использовать практически любой пульт! А если нет разницы?

Эти рассуждения не относятся к тем поделкам, которые поддерживают только PAL или только SECAM, однако они справедливы ко львиной доле тюнеров, работающих на чипе Philips saa7134.

Приступая к работе

Дано: компьютер с установленной операционной системой Gentoo Linux, тв-тюнер "неизвестного китайского производства" (продается под маркой RoverMedia Tv Link Pro за 900 рублей =)) и пульт от этого тв-тюнера (хотя можно использовать и любой другой).

Задача: заставить работать тюнер и пульт, телевизор будем смотреть программой tvtime.

Настройка ядра

Если вы используете ядро из вашего дистрибутива, то, наверняка, все необходимое уже включено в ваше ядро. Иначе делаем

 cd /usr/src/linux
 make menuconfig

включаем

 Device Drivers ---> Multimedia devices ---> <M> Video For Linux

и там же

 [*] Enable Video For Linux API 1 compatible Layer

Затем в

 Device Drivers ---> Multimedia devices ---> [*] Video capture adapters ---> <M> Philips SAA7134 support

далее включаем

 Device Drivers ---> I2C support ---> <M> I2C device interface

Устанавливаем модули и переходим к следующему пункту.

Запуск тюнера

В общем виде запуск тюнера выглядит следующим образом:

 rmmod saa7134 
 rmmod tuner
 modprobe tuner secam=d
 modprobe saa7134 tuner=XX card=YY 
 

Главная проблема - подобрать рабочие XX и YY. Однако их можно найти в сети, если у вас распространенная модель тюнера (например AverMedia). Иначе вам придется подбирать эти цифры вручную (как это пришлось в свое время делать мне).

В любом случае для вас будет полезной документация в /usr/src/linux/Documentation/video4linux.

Единственной возможностью проверить правильность выбора параметров является непосредственная проверка работы тв-тюнера. Делать мы это будем с помощью программы tvtime...

Дополнение

Если в комплекте тюнера нету шнура для передачи звука на аудиокарту можно воспользоваться модулем saa7134_alsa для передачи звука по PCI-шине

modprobe saa7134_alsa index={номер алса устройства}

В принципе использование этого модуля оправдано только при использовании mplayer как тв-программы, в остальных случаях этот модуль создает только дополнительные неудобства

Установка и настройка tvtime

В Gentoo Linux установка выполняется простой командой

 emerge tvtime

Теперь запускаем саму программу. Если есть так называемый "белый шум" (необходимо выключить обнаружение входного сигнала) - значит все заработало, если нет - убедитесь, что входной канал установлен в Television (Правая кнопка мыши -> Основные настройки)! Попробуйте попереключать каналы клавишами "вверх" и "вниз". Если у вас обычная антена, то скорее всего на 3-м канале у вас будет первый канал на 5-м канале второй...

Если у вас кабельное телевидение, то сигнал будет поступать как в SECAM, так и в PAL. Каналы, которые транслируются в PAL, будут черно-белыми и с шумом вместо звука. Чтобы tvtime правильно показывал такой канал, необходимо запомнить его порядковый номер и открыть файл ~/.tvtime/stationlist.xml

 nano ~./tvtime/stationslist.xml

Каналы хранятся в следующем xml-тэге с атрибутами:

 <station name="N" active="1" position="N" band="UHF" channel="UM" finetune="0" norm="SECAM" audio="auto" />

где N - порядковый номер канала в сетке, а M так же некоторый номер, который в отличии от N менять нельзя.

Находим запись в xml-файле, соответствующую нашему каналу, и меняем атрибут norm="SECAM" на norm="PAL", а audio="auto" на audio="dk"

 <station name="N" active="1" position="N" band="UHF" channel="UM" finetune="0" norm="PAL" audio="dk" />

И так далее...

Если же у вас нету таких извращений с разными стандартами то создать stationlist можно с помощью комманды

tvtime-scanner

Использование Mplayer

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

 mplayer tv://{номер канала} -tv driver=v4l2:normid=5:device=/dev/video0:chanlist=russia:immediatemode=0

если вывод звука производится через saa7134_alsa

 mplayer tv://{номер канала} -tv tv=driver=v4l2:normid=5:device=/dev/video0:chanlist=russia:alsa=1:adevice=hw.{номер устройства алса}:amode=1:audiorate=32000:forceaudio=1:immediatemode=0:chanlist=russia

Еще более простой способ использования мплеера для просмотра ТВ заключается в прописании данных настроек в конфиг

Пример

cat .mplayer/config
# Write your default config options here!
tv=driver=v4l2:normid=5:device=/dev/video0:chanlist=russia:alsa=1:adevice=hw.1,0:amode=1:audiorate=32000:forceaudio=1:immediatemode=0:chanlist=russia

После этого использование мплеера как тв-программы сведется к банальному

mplayer tv://{номер канала}
Личные инструменты