Текущее время: 02 май 2025, 01:43 • Часовой пояс: UTC + 3 часа |
ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство
Автор | Сообщение |
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
Это аккумулирование своего и чужого опыта по установке, настройке и использованию тюнера на чипе 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 может не регулироваться. Это проблема, но небольшая.
Ладно, должно работать. Остальное - позже. Я пошёл спать.
--
Терских К.Н.
|
|
|
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
19. Скрипт для просмотра ТВ.
(Скрипт для ТВ смотри ниже. Просто бывший здесь скрипт устарел, и я его удалил.)
--
Терских К.Н.
|
|
|
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
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 - по-умолчанию именно такая!)
В ходе записи изображение не будет появляться на экране, но звук будет слышен.
--
Терских К.Н.
|
|
|
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
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]
Читаем обязательно!
--
Терских К.Н.
|
|
|
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
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 фтопку  Кроме сообщений об ошибках. Их тоже можно фтопку, но это уже сами (перенаправить канал stderr в stdout и потом уже всё фтопку - google скажет как или книжка вумная покажет).
--
Терских К.Н.
|
|
|
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
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 - запись произведена не будет, но каталог скрипт попытается создать.
--
Терских К.Н.
|
|
|
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
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" с двадцатиминутными записями вечерней передачи.
--------------------------------
Собственно, для начала достаточно.
В дальнейшем, по возможности, буду дополнять тему полезными - на мой совсем нескромный взгляд - ссылками.
Наше вам с кисточкой!...
--------------------------------
--
Терских К.Н.
|
|
|
Константин Н. Терских
|
|
Зарегистрирован: 18 окт 2008, 17:05 Сообщения: 8 Откуда: Красноярск
|
Ссылки
Оцифровка видео с камеры. Очень хорошая статья. Можно почерпнуть об обрезке краёв, полос и прочего:
http://www.opennet.ru/base/X/linux_capture.txt.html
--
Терских К.Н.
|
|
|
svm
|
Добавлено: 25 окт 2008, 12:26. Заголовок сообщения: |
|
|
Зарегистрирован: 24 фев 2006, 19:31 Сообщения: 23 Откуда: Нск
|
Огромное спасибо за столь подробное описание.
У меня вопрос:
где в скрипте можно с настройками Хvid поиграть?
|
|
|
DarkNord
|
Добавлено: 19 фев 2009, 23:16. Заголовок сообщения: |
|
|
Зарегистрирован: 19 фев 2009, 22:37 Сообщения: 1
|
Делал все как описано но звука нет (
При изменении громкости в tvtime ползунок микшера бегает.. если вставить в Line-out тюнера нашники звук идет...
|
|
|
Glor
|
Добавлено: 22 мар 2009, 23:58. Заголовок сообщения: |
|
|
Зарегистрирован: 22 мар 2009, 23:27 Сообщения: 1
|
DarkNord, а кабель звуковой от тюнера куда-нибудь подсоединен?
У меня похожая проблема, усугубляющаяся тем, что на моей встроенной звуковухе входы не распаяны. А рецепта каким образом снимать звук по шине, как в виндах, никак найти не могу. Ввести звук снаружи тоже никак - гнезда на звуковухе уже заняты.
Подскажите, пожалуйста, как звук по PCI в линуксе получить? Создается ли какое-то устройство в /dev? (Dmesg говорит, что только video0, vbi0 и radio0 создаются, на звук ни одно не похоже.)
|
|
|
Imperator
|
Добавлено: 23 мар 2009, 00:22. Заголовок сообщения: |
|
|
Зарегистрирован: 27 мар 2005, 17:01 Сообщения: 375 Откуда: Москва
|
Так и не понимаю тех, кто использует юниксы на пользовательских компах. Под виндой воткнул тюнер, запустил два екзешника и пользуйся. А тут... Ради чего такой гимор-то?
|
|
|
Lion-Simba
|
Добавлено: 23 мар 2009, 10:12. Заголовок сообщения: |
|
|
Зарегистрирован: 19 мар 2009, 19:57 Сообщения: 4
|
Imperator писал(а): Так и не понимаю тех, кто использует юниксы на пользовательских компах.
Печально.
PS. Для получения более развернутого ответа на поставленный вопрос вы можете создать новую тему. 
|
|
|
igk72
|
|
Зарегистрирован: 09 апр 2007, 12:50 Сообщения: 135
|
для Константина Н. Терских
вариант скрипта для сканирования и определения каналов
Код: 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).
Beholder M6 и H6, Linux Debian/Ubuntu
|
|
|
svm
|
|
Зарегистрирован: 24 фев 2006, 19:31 Сообщения: 23 Откуда: Нск
|
igk72 писал(а): Еще у меня есть готовые легкие решения по параллельной записи и просмотру, и по работе с tv-расписанием (xmltv).
Поподробнее пожалуйста.
|
|
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1 |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|