| Текущее время: 04 ноя 2025, 05:30 • Часовой пояс: 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). 
Поподробнее пожалуйста.  
	  
	 | 
       
      
	 | 
	
	  
	  
	     
	      
	     
	  
	 | 
       
    
   
  
  
    | Кто сейчас на конференции |  
    | Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0 |  
   
  
    
    
      Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения 
     | 
   
 
 
 |