Форум Beholder http://beholder.ru/bb/ | |
ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство http://beholder.ru/bb/viewtopic.php?f=11&t=7233 |
Страница 1 из 4 |
Автор: | Константин Н. Терских [ 18 окт 2008, 18:31 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство |
Это аккумулирование своего и чужого опыта по установке, настройке и использованию тюнера на чипе saa7134 в ОС Linux (используется дистрибутив Ubuntu 7.10, но это совершенно не важно). Сразу оговорим: мы не будем использовать PCI для передачи звука между тюнером и звуковой картой - это не очень хорошо. Почему? Потому что, во-первых, это дополнительно нагружает ЦПУ, во-вторых, это чревато рассинхронизацией изображения и звука. Гораздо проще и "чище" использовать аппаратный метод ![]() Тут же второе: никаких патчей никуда накладывать не надо ![]() 0. Отключаем компьютер, отрываем системный блок. 1. Устанавливаем плату в слот PCI. 2. Соединяем внутренний звуковой выход тюнера (плоский чёрный разъём) с внутренним звуковым входом на материнской плате (или со входом на отдельной звуковой плате, если такая имеется). Звуковой вход на материнской плате - это вход, находящийся на краю материнской платы, обычно внизу, рядом с другими внутренними разъёмами. Вход обозначен как "CD-IN" контрастной краской на материнской плате. Вход выглядит точно так же, как выход на тюнере. Соединяем разъёмы комплектным кабелем. С одной стороны кабеля имеется два штепселька - один широкий, такой же, как с другой стороны, а другой мелкий. Сторону с двумя штепсельками вставляем в маму, а одинокий штепселёк - в тюнер. Надеюсь, что всё понятно. 3. Загружаемся, входим. 4. Далее предполагается, что тюнер обнаружен ядром автоматически и нужные модули загружены. По-другому просто не может быть ![]() Проверено на: 2.6.22-14-generic #1 SMP Sun Oct 14 21:45:15 GMT 2007 x86_64 GNU/Linux 5. Открывам терминал. 6. su [ENTER] (Если вы всё-таки упёртый убунтуец и не знаете, как это сделать, т.к. это не делается, то сделайте сначала следующее: sudo passwd root [ENTER] Введите сначала свой пароль, а потом новый пароль суперюзера. Теперь su [ENTER]:)) 7. dmesg | grep saa7 | less Вывод ДОЛЖЕН быть примерно таким: Код: kostus@TERSKIKH-UBUNTU:~$ dmesg | grep saa7 [ 40.918724] saa7130/34: v4l2 driver version 0.2.14 loaded [ 40.919755] saa7134[0]: found at 0000:03:07.0, rev: 1, irq: 16, latency: 32, mmio: 0xfdeff000 [ 40.919763] saa7134[0]: subsystem: 5ace:5070, board: Beholder BeholdTV 409 FM [card=67,insmod option] [ 40.919771] saa7134[0]: board init: gpio is 0 [ 40.919873] input: saa7134 IR (Beholder BeholdTV 4 as /class/input/input3 [ 41.379831] saa7134[0]: i2c eeprom 00: ce 5a 70 50 54 20 00 00 00 00 00 00 00 00 00 01 [ 41.379840] saa7134[0]: i2c eeprom 10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 41.379848] saa7134[0]: i2c eeprom 20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 41.379855] saa7134[0]: i2c eeprom 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 41.379861] saa7134[0]: i2c eeprom 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 41.379868] saa7134[0]: i2c eeprom 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 41.379875] saa7134[0]: i2c eeprom 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 41.379881] saa7134[0]: i2c eeprom 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 41.491208] tuner 2-0043: chip found @ 0x86 (saa7134[0]) [ 41.511242] tuner 2-0060: chip found @ 0xc0 (saa7134[0]) [ 41.513560] saa7134[0]: registered device video0 [v4l2] [ 41.513587] saa7134[0]: registered device vbi0 [ 41.513615] saa7134[0]: registered device radio0 [ 41.613123] saa7134 ALSA driver for DMA sound loaded [ 41.613161] saa7134[0]/alsa: saa7134[0] at 0xfdeff000 irq 16 registered as card -2 Тут важно, чтобы карта была обнаружена и опознана (card=67, например), тюнер (tuner) был обнаружен, драйвер alsa для карты был загружен. 8. gedit /etc/modprobe.d/saa7134 [ENTER] Вводим единственную строчку: options saa7134 secam=d gbuffers=4 Сохраняем, закрываем редактор. 9. gedit /etc/modprobe.d/tuner [ENTER] Вводим: Код: options saa7134 secam=d gbuffers=4 alias bttv off alias cx88xx off alias ivtv off alias usbvision off Сохраняем, закрываем редактор. 10. Перегружаемся. 11. Открываем терминал. 12. alsamixer -c 0 [ENTER] У меня это Intel ICH. Увидим консольный интерфейс. Здеcь 3 (три) закладки: Playback, Capture, All. Переключаемся между ними клавишей TAB. На закладке Playback тупо выставляем все уровни в 80..100% (по вкусу) - потом будете экспериментировать сами ![]() На закладке Capture ("захват"!) выбираем устройство захвата звука - это CD. Выбираем клавишей "ПРОБЕЛ". Далее все уровни так же ставим на максимум (потом отрегулируете как вам надо). На закладке All просто проверим, что всё, что доступно, выставлено в 100%. Нажимаем [ESC] на клавиатуре. 13. alsamixer -c 1 [ENTER] У меня это SAA7134. Здесь всё так же, но выбирать ничего не нужно. Просто всё ставим на 100%. Нажимаем [ESC] на клавиатуре. 14. Миксер alsa настроен. 15. Проверяем звук в GNOME, кстати: Система->Параметры->Звук. Там везде выбираем ALSA. Проверить нужно только собственно функционирование вывода звука через ALSA. Запись проверять не рекомендую - может зависнуть. 16. Всё. Остались только приложения для просмотра и записи каналов ТВ! 17. Для просмотра используйте tvtime. Для записи - mplayer. Настройки этих программ и скрипты, облегчающие жизнь, будут позднее в этой же теме. Да, есть классные скрипты и классные методики для записи и просмотра передач! Заодно и поучим матчасть прекрасной юниксоподобной ОС Линукс ![]() Продолжение следует... (сейчас я хочу спать). 18. Ладно, пока не уснул, проверим работу тюнера: Код: mplayer tv:// -tv driver=v4l2:audiorate=32000:forceaudio:volume=100:normid=5:chanlist=russia:amode=0:alsa:channel=11
Это нужно ввести одной строкой, естественно. Ну и нажать [ENTER], если не боитесь. Здесь channel - это номер канала ТВ в нашей с вами российской сетке каналов. У меня 11-й канал (СТС) показывает даже без антенны, так что вы можете выбирать любой другой гарантированно работающий у вас канал. normid=5 - это стандарт SECAM. Если же укажете 3, то это уже будет PAL. Должно появиться изображение. И звук из ваших колонок, подключённых к вашей звуковой плате (встроенной или внешней). Звук в mplayer может не регулироваться. Это проблема, но небольшая. Ладно, должно работать. Остальное - позже. Я пошёл спать. |
Автор: | Константин Н. Терских [ 19 окт 2008, 06:42 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.2) |
19. Скрипт для просмотра ТВ. (Скрипт для ТВ смотри ниже. Просто бывший здесь скрипт устарел, и я его удалил.) |
Автор: | Константин Н. Терских [ 19 окт 2008, 08:11 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.3) |
20. Скрипт для записи сигнала с антенного входа на определённой частоте. Это основной скрипт, который непосредственно не вызывается (см. объяснения ниже). Этот скрипт используется мной для переписывания (или для предпросмотра) старых записей с видеокассет на компьютер (впоследствии перевожу на DVD). Видео записывается в xvid, т.к. этот кодек поддерживается абсолютным большинством плейеров. Открываем терминал. Код: mkdir ~/bin [ENTER] cd ~/bin gedit vhs.sh & Содержимое файла vhs.sh: ---------------- cut ------------ Код: #!/bin/bash pname=`basename $0` echo "Usage: " echo " $pname filename end_pos norm width height video_br crop_size xvidopt" if [ $pname = "vhs.sh" ] ; then echo "Use vhs-rec or vhs-view or vhs-rec-big instead!" exit 1 fi # Разрешения картинки в видео #Типичное разрешение видео для дисков NTSC — 720:480, #а для дисков PAL — 720:576. #Cпецификации для видео файлов на DVD могут быть следующими: #MPEG-2 видео — до 9,8 Mbit/s (9800 кбит/сек); #MPEG-1 видео — до 1,856 Mbit/s (1856 кбит/сек). # #PAL: #720x576 пикселов, MPEG-2 (называется «полный D1») #704x576 пикселов, MPEG-2 #352x576 пикселов, MPEG-2 (как в стандарте CVD, называется Half-D1) #352x288 пикселов, MPEG-2 #352x288 пикселов, MPEG-1 (как в стандарте VCD) #(25 кадров в секунду) # #NTSC: #720x480 пикселов, MPEG-2 (называется «полный D1») #704x480 пикселов, MPEG-2 #352x480 пикселов, MPEG-2 (как в стандарте CVD, называется Half-D1) #352x240 пикселов, MPEG-2 #352x240 пикселов, MPEG-1 (как в стандарте VCD) #(29.97 кадров в секунду) # #16:9 формат изображения (анаморфный) видео поддерживается только в 720x576/480, #4:3 формата изображения поддерживается везде # константы PAL=0 PAL_BG=1 PAL_I=2 PAL_DK=3 NTSC=4 SECAM=5 SECAM_DK=6 SECAM_L=7 SECAM_Lc=8 PAL_M=9 PAL_Nc=10 PAL_60=11 # константы video_dev=/dev/video0 video_in=0 audio_rate=32000 audio_volume=100 audio_br=96 capt_base=/media/hda1/capture/video fr=640.15 log=$pname.log norm=$PAL_DK file=$capt_base/capture-`date +%F-%H-%M-%S`.mpg end_pos=01:00:00 norm=$PAL_DK w=352 h=288 video_br=600 crop_size=$w:$h:0:0 if [ $w = 352 ] ; then crop_size=320:240:15:20 fi #if [ $w = ... ] ; then # crop_size=w:h:x:y #fi xvid_opt= if [ ! -z "$1" ] ; then file=$capt_base/$1 fi if [ ! -z "$2" ] ; then end_pos=$2 fi if [ ! -z "$3" ] ; then norm=$3 fi if [ ! -z "$4" ] ; then w=$4 fi if [ ! -z "$5" ] ; then h=$5 fi if [ ! -z "$6" ] ; then video_br=$6 fi if [ ! -z "$7" ] ; then crop_size=$7 fi xvid_opt=$8 # norm if [ $norm = "PAL_DK" ] ; then norm=$PAL_DK fi if [ $norm = "SECAM" ] ; then norm=$SECAM fi #if [ $norm in 0 1 2 3 4 5 6 7 8 9 ] ; then # norm = $norm #else # echo "Unknown normid!" # exit 3 #fi echo "For now: " echo " $pname $file $end_pos $norm $w $h $video_br $crop_size $xvid_opt" #exit 0 mkdir $capt_base if [ $pname = "vhs-rec" ] ; then echo "----------------------------------------------------------------" >> $log echo "Encoding started: $file" >> $log echo " $pname $file $end_pos $norm $w $h $video_br $crop_size $xvid_opt" >> $log #echo "A line is:" #echo "mencoder tv:// -tv driver=v4l2:device=$video_dev:input=$video_in:normid=$norm:freq=$fr:width=$w:height=$h:alsa:audiorate=$audio_rate:forceaudio:volume=$audio_volume -o \"$file\" -oac mp3lame -lameopts br=$audio_br -ovc xvid -xvidencopts bitrate=$video_br$xvid_opt -endpos $end_pos -vf softskip,kerndeint,crop=$crop_size" #exit 0 # запись в xvid mencoder tv:// \ -tv driver=v4l2:device=$video_dev:input=$video_in:normid=$norm:freq=$fr:width=$w:height=$h:alsa:audiorate=$audio_rate:forceaudio:volume=$audio_volume \ -o "$file" \ -oac mp3lame -lameopts br=$audio_br \ -ovc xvid -xvidencopts bitrate=$video_br$xvid_opt \ -endpos $end_pos \ -vf softskip,kerndeint,crop=$crop_size fi if [ $pname = "vhs-view" ] ; then echo "----------------------------------------------------------------" >> $log echo "Viewing started: $file" >> $log echo " $pname $file $end_pos $norm $w $h $video_br $crop_size $xvid_opt" >> $log #echo "A line is:" #echo "mplayer tv:// -tv driver=v4l2:device=$video_dev:input=$video_in:normid=$norm:freq=$fr:width=$w:height=$h:alsa:audiorate=$audio_rate:forceaudio:volume=$audio_volume -endpos $end_pos -vf softskip,kerndeint,crop=$crop_size" #exit 0 # просмотр источника mplayer tv:// \ -tv driver=v4l2:device=$video_dev:input=$video_in:normid=$norm:freq=$fr:width=$w:height=$h:alsa:audiorate=$audio_rate:forceaudio:volume=$audio_volume \ -endpos $end_pos \ -vf softskip,kerndeint,crop=$crop_size fi if [ $pname = "vhs-rec-big" ] ; then echo "----------------------------------------------------------------" >> $log echo "Encoding started: $file" >> $log echo " $pname $file $end_pos $norm $w $h $video_br $crop_size $xvid_opt" >> $log #exit 0 # запись в lavc mencoder tv:// \ -tv driver=v4l2:device=$video_dev:input=$video_in:normid=$norm:freq=$fr:width=$w:height=$h:alsa:audiorate=$audio_rate:forceaudio:volume=$audio_volume \ -o "$file" \ -oac pcm \ -ovc lavc -lavcopts vcodec=ffvhuff \ -endpos $end_pos \ -vf softskip,kerndeint,crop=$crop_size fi echo "Finished: $file" >> $log exit 0 ---------------- cut ------------ Сохраняем. Закрываем. Код: cd ~/bin [ENTER] chmod u+x vhs.sh [ENTER] ln -s vhs.sh vhs-rec [ENTER] ln -s vhs.sh vhs-view [ENTER] Использование скрипта. Настройка выхода видеомагнитофона на нужную частоту - не моя проблема. Читайте инструкцию на свой видак. При необходимости поправьте частоту в скрипте (я использую частоту 640.15; см. переменную fr). Далее считаем, что видак выдаёт сигнал в стандарте PAL (переменная norm) на частоте 640.15. Так же полагаем, что для передачи сигнала используется ТВ-антенна (коаксиальный кабель между модулятором видеомагнитофона и антенным входом тюнера) - переменная video_in. Полагаем, что каталог /media/hda1/capture/video существует, или создаём свой каталог для хранения записей. Корректируем путь в скрипте при необходимости ($capt_base). Итак, включаем видак в тестовом режиме или воспроизводим кассету. vhs-view [ENTER] или vhs-view test.mpg [ENTER] или vhs-view test.mpg 00:01:00 [ENTER] или vhs-view test.mpg 00:01:00 3 [ENTER] Смотрите начало скрипта для того, чтобы понять, какие параметры передаются скрипту: vhs-view (или vhs-rec) имя_файла_записи_с_расширением_но без_путей часы:минуты:секунды стандарт_записи_3_или_5 ширина высота видео_битрейт параметры_обрезки доп_параметры_кодека_xvid Стандарты PAL_DK и SECAM (самые распространённые у нас) можно вводить прямо так, текстом. Пример: Код: vhs-rec "Том и Джерри - 01.mpg" 00:28:00 PAL_DK 352 288 900 320:240:15:20 :cartoon (запись файла "Том и Джерри - 01.mpg" в каталоге $capt_base длиной 28 минут в стандарте PAL_DK; размер захватываемого изображения - 352x288 (стандарт VCD) с потоком видео 900 кбит/с, с обрезкой кадра до 320x240 (4:3), смещением вырезаемого окна на 15 влево и на 20 вниз; дополнительно даём кодеку xvid понять, что оцифровывается мультфильм - он от этого только лучше работать будет) или Код: vhs-view test01.mpg 00:10:00 3 352 288 600 [ENTER]
(просмотр 10 минут в стандарте PAL_DK (3); размер захватываемого изображения - 352x288 (стандарт VCD) с потоком 600 кбит/с, с обрезкой кадра до 320x240 (4:3), смещением вырезаемого окна на 15 влево и на 20 вниз; обрезка в случае с шириной 352 - по-умолчанию именно такая!) В ходе записи изображение не будет появляться на экране, но звук будет слышен. |
Автор: | Константин Н. Терских [ 19 окт 2008, 08:27 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.4) |
21. Настройка tvtime. В программе tvtime у меня работает всё, и всё работает как с клавиатуры, так и с пульта - и переключение каналов, и регулировка громкости, и прочее. Устанавливаем пакет tvtime. Открываем терминал. Код: mv ~/.tvtime ~/.tvtime-old [ENTER] rm -fr ~/.tvtime [ENTER] tvtime [ENTER] Закрываем tvtime. Код: tvtime-configure -A -c 1 -f russia -n SECAM -d /dev/video0 -b /dev/vbi0 [ENTER] Эта строка заставит tvtime использовать российскую сетку каналов, использовать по-умолчанию стандарт SECAM, в качестве источника видео использовать /dev/video0, vbi - /dev/vbi0. При этом не будет использован широкоэкранный режим (-A), а при запуске будет открываться 1-й канал. tvtime & [ENTER] Правая кнопка мыши в окне открывает меню tvtime. Заходим в "Channel management" и ВКЛЮЧАЕМ "Обнаружение входного сигнала" - это приведят к тому, что появятся новые пункты меню, в том числе и пункт "Сканирование каналов". Сканируем каналы, естественно. После завершения сканирования ОТКЛЮчаем "обнаружение входного сигнала". Всё, tvtime практически настроен. ![]() В терминале набираем: Код: man tvtime [ENTER]
Читаем обязательно! |
Автор: | Константин Н. Терских [ 19 окт 2008, 08:50 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.5) |
22. Автоматизация просмотра передач с использованием возможностей unix и tvtime. Допустим, на http://tv.yandex.ru/ мы увидели, что в 22:00 на первом канале (допустим что у вас это действительно 1-й канал; это следует проверить с помощью команды типа tv.sh номер_канала обязательно!) идёт суперкино. Сейчас 14 часов, и не факт, что вы не забудете за интересной работой об этом замечательном фильме (шучу) с замечательными актёрами Фоменко и Иваном Ургантом (тоже шучу, естественно, и ещё как шучу...). Открываем терминал. echo $DISPLAY [ENTER] Вы увидите нечно вроде ":0.0" - это и есть адрес дисплея. В данном случае это локальный дисплей (имя localhost опущено в этом случае) на сервере 0 с поверхностью 0. Теперь автоматизируем запуск tvtime: at 22:00 [ENTER] Появится значок ">", приглашающий ввести команду для запуска. Вводим: DISPLAY=:0.0 tvtime -c 1 [ENTER] Снова появится значок ">", приглашающий ввести следующую команду для запуска. Но мы заканчиваем ввод, введя с клавиатуры Ctrl+D (это символ EOT). Всё, задача запланирована. Проверим: atq [ENTER] Увидим нечто вроде: 4 Sun Oct 19 22:00:00 2008 a kostus В 22:00, если компьютер будет включён и сервер X будет работать (вы же в графическом режиме "работаете", так?), запустится окно tvtime с Первым каналом. Наслаждайс ![]() Для регулярного просмотра передачи в одно и то же время (ужас!) используем возможности демона cron. Запускаем терминал. crontab -e [ENTER] Откроется консольный редактор текста по-умолчанию. Вводим последовательно в одной строке: минуту,час,день месяца,месяц,день недели, команду через пробел(ы) или табуляцию: Код: 0 22 * * * DISPLAY=:0.0 /usr/bin/tvtime -c 1 > /dev/null
Сохраним файл и закроем редактор. Cron сообщит, что новый crontab установлен. Теперь ровно в 22:00, каждый день месяца, каждый месяц, каждый божий день недели будет выполняться команда "DISPLAY=:0.0 /usr/bin/tvtime -c 1 > /dev/null". Ужас, но ведь вы этого хотели. Последний "> /dev/null" отправляет все сообщения программы tvtime фтопку ![]() |
Автор: | Константин Н. Терских [ 19 окт 2008, 10:38 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.6) |
23. Скрипт для автоматизации записи эфирных передач с использованием mplayer/mencoder. Открываем терминал. Код: cd ~/bin [ENTER] gedit tv.sh & [ENTER] Содержимое файла tv.sh: ---------------- cut ------------ Код: #!/bin/bash pname=`basename $0` echo "Usage: " echo " $pname channel end_pos norm filename width height video_br xvidopt" if [ $pname = "tv.sh" ] ; then echo "Use tv-rec or tv-view instead!" exit 1 fi # Разрешения картинки в видео #Типичное разрешение видео для дисков NTSC — 720:480, #а для дисков PAL — 720:576. #Cпецификации для видео файлов на DVD могут быть следующими: #MPEG-2 видео — до 9,8 Mbit/s (9800 кбит/сек); #MPEG-1 видео — до 1,856 Mbit/s (1856 кбит/сек). # #PAL: #720x576 пикселов, MPEG-2 (называется «полный D1») #704x576 пикселов, MPEG-2 #352x576 пикселов, MPEG-2 (как в стандарте CVD, называется Half-D1) #352x288 пикселов, MPEG-2 #352x288 пикселов, MPEG-1 (как в стандарте VCD) #(25 кадров в секунду) # #NTSC: #720x480 пикселов, MPEG-2 (называется «полный D1») #704x480 пикселов, MPEG-2 #352x480 пикселов, MPEG-2 (как в стандарте CVD, называется Half-D1) #352x240 пикселов, MPEG-2 #352x240 пикселов, MPEG-1 (как в стандарте VCD) #(29.97 кадров в секунду) # #16:9 формат изображения (анаморфный) видео поддерживается только в 720x576/480, #4:3 формата изображения поддерживается везде # константы PAL=0 PAL_BG=1 PAL_I=2 PAL_DK=3 NTSC=4 SECAM=5 SECAM_DK=6 SECAM_L=7 SECAM_Lc=8 PAL_M=9 PAL_Nc=10 PAL_60=11 # константы video_dev=/dev/video0 video_in=0 audio_rate=32000 audio_volume=100 audio_br=96 chan_list=russia capt_base=/media/hda1/capture/video log=$pname.log ch=11 end_pos=01:00:00 norm=$SECAM file=$capt_base/capture-`date +%F-%H-%M-%S`.mpg w=352 h=288 video_br=600 xvid_opt= if [ ! -z "$1" ] ; then ch=$1 fi if [ ! -z "$2" ] ; then end_pos=$2 fi if [ ! -z "$3" ] ; then norm=$3 fi if [ ! -z "$4" ] ; then file=$capt_base/$4 fi if [ ! -z "$5" ] ; then w=$5 fi if [ ! -z "$6" ] ; then h=$6 fi if [ ! -z "$7" ] ; then video_br=$7 fi echo "For now: " echo " $pname $ch $end_pos $norm $file $w $h $video_br $xvid_opt" #exit 0 mkdir $capt_base if [ $pname = "tv-rec" ] ; then echo "----------------------------------------------------------------" >> $log echo "Encoding started: $file" >> $log echo " $pname $ch $end_pos $norm $file $w $h $video_br $xvid_opt" >> $log #exit 0 # запись в xvid mencoder tv:// \ -tv driver=v4l2:device=$video_dev:input=$video_in:normid=$norm:chanlist=$chan_list:channel=$ch:width=$w:height=$h:alsa:audiorate=$audio_rate:forceaudio:volume=$audio_volume \ -o "$file" \ -oac mp3lame -lameopts br=$audio_br \ -endpos $end_pos \ -ovc xvid -xvidencopts bitrate=$video_br$xvid_opt fi if [ $pname = "tv-view" ] ; then echo "----------------------------------------------------------------" >> $log echo "Viewing started: $file" >> $log echo " $pname $ch $end_pos $norm $file $w $h $video_br $xvid_opt" >> $log #exit 0 # просмотр источника mplayer tv:// \ -tv driver=v4l2:device=$video_dev:input=$video_in:normid=$norm:chanlist=$chan_list:channel=$ch:width=$w:height=$h:alsa:audiorate=$audio_rate:forceaudio:volume=$audio_volume \ -endpos $end_pos fi echo "Finished: $file" >> $log exit 0 ---------------- cut ------------ Сохраняем, закрываем. Код: chmod u+x tv.sh [ENTER] ln -s tv.sh tv-rec [ENTER] ln -s tv.sh tv-view [ENTER] Скрипт используется вот так: Код: tv-rec 11 00:35:00 5 cast_01.mpg 320 240 600 [ENTER]
С 11-го канала будет записано 35 минут по стандарту SECAM в файл /media/hda1/capture/video/cast_01.mpg. Размеры кадра - 320х240, поток - 600 килобит. Все параметры могут быть и дефолтными (см. скрипт собственно). Предпросмотр работает точно так же, но вызываем не tv-rec, а tv-view - запись произведена не будет, но каталог скрипт попытается создать. |
Автор: | Константин Н. Терских [ 19 окт 2008, 11:00 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.7) |
24. Автоматизация записи эфирных передач с помощью mplayer/mencoder, at и cron. Допустим, на http://tv.yandex.ru/ мы увидели, что в 22:00 на первом канале (допустим что у вас это действительно 1-й канал; это следует проверить с помощью команды типа tv-view номер_канала обязательно!) идёт суперкино, и вы хотите его записать. Кино длится вместе с рекламой 2 часа 15 минут. О вас как о ценителе прекрасного, мы говорить не станем. Это уже бессмысленно, скорее всего ![]() Немедленно открываем терминал. echo $DISPLAY [ENTER] Вы увидите нечно вроде ":0.0" - это и есть адрес дисплея. В данном случае это локальный дисплей (имя localhost опущено в этом случае) на сервере 0 с поверхностью 0. Это мы уже должны были проходить. Теперь поставим на автомат запись шедеврального выкидыша: at 22:00 [ENTER] Появится значок ">", приглашающий ввести команду для запуска. Вводим: DISPLAY=:0.0 tv-rec 1 02:15:00 5 "greate_shit_01.mpg" [ENTER] Снова появится значок ">", приглашающий ввести следующую команду для запуска. Но мы заканчиваем ввод, введя с клавиатуры Ctrl+D (это символ EOT). Всё, задача запланирована. Проверим: atq [ENTER] Увидим нечто вроде: 5 Sun Oct 19 22:00:00 2008 a kostus (Вы уже поняли, что указание DISPLAY в задании для at не имеет смысла? Мы же ничего не выводим в этот самый дисплей...) В 22:00, если компьютер будет включён, если демон atd будет работать, запустится запись. Для регулярной записи передачи в одно и то же время снова используем возможности демона cron. Запускаем терминал. crontab -e [ENTER] Откроется консольный редактор текста по-умолчанию. Вводим последовательно в одной строке: минуту,час,день месяца,месяц,день недели, команду через пробел(ы) или табуляцию: PATH=/usr/bin:/home/kostus/bin:$PATH Код: 55 23 * * * DISPLAY=:0.0 /home/kostus/bin/tv-rec 58 00:20:00 > /dev/null
Сохраним файл и закроем редактор. Cron сообщит, что новый crontab установлен. Теперь ровно в 23:55, каждый день месяца, каждый месяц, каждый божий день недели будет выполняться команда "DISPLAY=:0.0 /home/kostus/bin/tv-rec 58 00:20:00 > /dev/null". Значит, утром следующего дня вы сможете обнаруживать в папке /media/hda1/capture/video файлы вида "capture-2008-10-19-15-13-52.mpg" с двадцатиминутными записями вечерней передачи. -------------------------------- Собственно, для начала достаточно. В дальнейшем, по возможности, буду дополнять тему полезными - на мой совсем нескромный взгляд - ссылками. Наше вам с кисточкой!... ![]() -------------------------------- |
Автор: | Константин Н. Терских [ 19 окт 2008, 16:32 ] |
Заголовок сообщения: | ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.8) |
Ссылки Оцифровка видео с камеры. Очень хорошая статья. Можно почерпнуть об обрезке краёв, полос и прочего: http://www.opennet.ru/base/X/linux_capture.txt.html |
Автор: | svm [ 25 окт 2008, 12:26 ] |
Заголовок сообщения: | |
Огромное спасибо за столь подробное описание. У меня вопрос: где в скрипте можно с настройками Хvid поиграть? |
Автор: | DarkNord [ 19 фев 2009, 23:16 ] |
Заголовок сообщения: | |
Делал все как описано но звука нет ( При изменении громкости в tvtime ползунок микшера бегает.. если вставить в Line-out тюнера нашники звук идет... |
Автор: | Glor [ 22 мар 2009, 23:58 ] |
Заголовок сообщения: | |
DarkNord, а кабель звуковой от тюнера куда-нибудь подсоединен? У меня похожая проблема, усугубляющаяся тем, что на моей встроенной звуковухе входы не распаяны. А рецепта каким образом снимать звук по шине, как в виндах, никак найти не могу. Ввести звук снаружи тоже никак - гнезда на звуковухе уже заняты. Подскажите, пожалуйста, как звук по PCI в линуксе получить? Создается ли какое-то устройство в /dev? (Dmesg говорит, что только video0, vbi0 и radio0 создаются, на звук ни одно не похоже.) |
Автор: | Imperator [ 23 мар 2009, 00:22 ] |
Заголовок сообщения: | |
Так и не понимаю тех, кто использует юниксы на пользовательских компах. Под виндой воткнул тюнер, запустил два екзешника и пользуйся. А тут... Ради чего такой гимор-то? |
Автор: | Lion-Simba [ 23 мар 2009, 10:12 ] |
Заголовок сообщения: | |
писал(а): Так и не понимаю тех, кто использует юниксы на пользовательских компах.
Печально. PS. Для получения более развернутого ответа на поставленный вопрос вы можете создать новую тему. ![]() |
Автор: | igk72 [ 11 апр 2009, 20:02 ] |
Заголовок сообщения: | Cкрипт для сканирования и определения каналов |
для Константина Н. Терских вариант скрипта для сканирования и определения каналов Код: mkfifo /tmp/mplayer.fifo > /dev/null 2>&1
mplayer -ao null tv:// \ -tv driver=v4l2:fps=25:width=720:height=576:immediatemode=0:chanlist=russia:normid=6:buffersize=16:noaudio -nolirc -noconsolecontrols -slave -input file=/tmp/mplayer.fifo 2>&1 | tee /tmp/mplayer.log & echo "osd_show_text \"Scaning channels...\" 360000" > /tmp/mplayer.fifo echo "tv_start_scan" > /tmp/mplayer.fifo while [ "`pidof mplayer`" ] do channels=`cat /tmp/mplayer.log | tr "V:" "\n" | grep "channels=" | sed -e 's/.*channels=\(.*\)/\1/g'` if [ "$channels" ] ; then echo $channels | sed -e 's/,/,\n/g' > ~/.mplayer/channels.conf echo "quit" > /tmp/mplayer.fifo exit 0 fi sleep 1 done rm -f /tmp/mplayer.log Можно взять мое решение и добавить в ваши скрипты. А остальном наши идеи и решения приятно совпадают. Еще у меня есть готовые легкие решения по параллельной записи и просмотру, и по работе с tv-расписанием (xmltv). |
Автор: | svm [ 11 апр 2009, 22:41 ] |
Заголовок сообщения: | Re: Cкрипт для сканирования и определения каналов |
писал(а): Еще у меня есть готовые легкие решения по параллельной записи и просмотру, и по работе с tv-расписанием (xmltv).
Поподробнее пожалуйста. |
Страница 1 из 4 | Часовой пояс: UTC + 3 часа |