Сегодня на работе потребовалось записывать телевизионный канала в низком качестве, для контроля за рекламными блоками бегущей строки. На складе нашелся ТВ-тюнер Avermedia AVerTV Studio 307.
dmesg приятно удивил, что устройство известно системе:
[ 47.068861] saa7130/34: v4l2 driver version 0.2.14 loaded [ 47.069024] ACPI: PCI Interrupt 0000:02:04.0[A] -> GSI 18 (level, low) -> IRQ 18 [ 47.069037] saa7134[0]: found at 0000:02:04.0, rev: 1, irq: 18, latency: 32, mmio: 0xfeafec00 [ 47.069047] saa7134[0]: subsystem: 1461:9715, board: Avermedia AVerTV Studio 307 [card=45,autodetected] [ 47.069065] saa7134[0]: board init: gpio is 0 [ 47.069224] input: saa7134 IR (Avermedia AVerTV St as /devices/pci0000:00/0000:00:1e.0/0000:02:04.0/input/input5 [ 47.097048] e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex [ 47.268581] saa7134[0]: i2c eeprom 00: 61 14 15 97 ff ff ff ff ff ff ff ff ff ff ff ff [ 47.268604] saa7134[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 47.268624] saa7134[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 47.268645] saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 47.268671] saa7134[0]: i2c eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 47.268713] saa7134[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 47.268736] saa7134[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 47.268762] saa7134[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 47.603338] tuner 0-0043: chip found @ 0x86 (saa7134[0]) [ 47.603394] tda9887 0-0043: tda988[5/6/7] found @ 0x43 (tuner) [ 47.603401] tuner 0-0043: type set to tda9887 [ 47.611969] tuner 0-0061: chip found @ 0xc2 (saa7134[0]) [ 47.612003] tuner-simple 0-0061: type set to 51 (Philips PAL/SECAM_D (FM 1256 I-H3)) [ 47.612007] tuner 0-0061: type set to Philips PAL/SECAM_D [ 47.612011] tuner-simple 0-0061: type set to 51 (Philips PAL/SECAM_D (FM 1256 I-H3)) [ 47.612014] tuner 0-0061: type set to Philips PAL/SECAM_D [ 47.614700] saa7134[0]: registered device video0 [v4l2] [ 47.614739] saa7134[0]: registered device vbi0 [ 47.614786] saa7134[0]: registered device radio0
Видим, что драйвер: saa7314, номер карты: 45, аудио тюнер: 51.
Создадим файл /etc/modprobe.d/tv для подгрузки модуля:
options saa7134 card=45 alsa=1 secam=dk tuner=51 options tuner secam=d
Здесь: alsa=1 -поддержка alsa драйве; secam=dk -Российский формат ТВ
Перегружаемся и устанавливаем tvtime:
$ sudo apt-get install tvtime
Запускаем сканирование каналов:
$ tvtime-scanner --norm=SECAM
После чего создается файл ~/.tvtime/stationlist.xml со списком каналов.
Все, можно смотреть, запускаем tvtime
Теперь займемся записью.
Скрипт для запуска tvtime для настройки устройства video0 на канал 32:
/usr/bin/tvtime -d /dev/video0 -c 32 > /dev/null 2>&1 &
Скрипт для записи видео, запускаем скрипт через cron раз в час:
#!/bin/sh D=`date +%Y.%m.%d_%H.%M` /usr/bin/streamer -q -o /home/video/CH32/${D}.avi \ -O /dev/null -c /dev/video0 -r 5 -f mjpeg \ -j 20 -s 320x240 -t 60:00 -p2 > /home/video/CH32/ch32.log &
#Удаление старых файлов более $DAY_RM дней назад DAY_RM=20 /usr/bin/find /home/video/ -type f -name '*.avi' -ctime +${DAY_RM} -exec rm {} \;
Настройку устройства /dev/video0 можно осуществить с помощью утилиты dov4l.
примеры:
$ dov4l -q
$ dov4l -d /dev/video0 -b 32896 -u 32896 -c 10000 -n 10000 -w 0 -s 640,480
В общем man.
Почитать:
http://www.mjmwired.net/kernel/Documentation/video4linux/CARDLIST.tuner http://liski.vsi.ru/ubuntu/index.php?topic=84.msg413 http://mydebianblog.blogspot.com/2006/07/beholder-beholdtv-409fm.html http://mydebianblog.blogspot.com/2007/08/blog-post_8710.html