Текущее время: 17 апр 2024, 00:10 • Часовой пояс: UTC + 3 часа
Сообщения без ответов | Активные темы

ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство

Начать новую темуОтветить на тему Страница 1 из 4 [ Сообщений: 56 ] На страницу   1, 2, 3, 4  След.
Версия для печати Пред. тема | След. тема
АвторСообщение
Сообщение Добавлено: 18 окт 2008, 18:31. Заголовок сообщения:  ТВ-тюнер 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 может не регулироваться. Это проблема, но небольшая.

Ладно, должно работать. Остальное - позже. Я пошёл спать.
--
Терских К.Н.
Последний раз редактировалось Константин Н. Терских 19 окт 2008, 09:24, всего редактировалось 1 раз.
Профиль WWW ICQ 
Сообщение Добавлено: 19 окт 2008, 06:42. Заголовок сообщения:  ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.2)
Зарегистрирован:
    18 окт 2008, 17:05
Сообщения: 8
Откуда: Красноярск
19. Скрипт для просмотра ТВ.

(Скрипт для ТВ смотри ниже. Просто бывший здесь скрипт устарел, и я его удалил.)
--
Терских К.Н.
Последний раз редактировалось Константин Н. Терских 20 окт 2008, 04:25, всего редактировалось 4 раз(а).
Профиль WWW ICQ 
Сообщение Добавлено: 19 окт 2008, 08:11. Заголовок сообщения:  ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.3)
Зарегистрирован:
    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 - по-умолчанию именно такая!)

В ходе записи изображение не будет появляться на экране, но звук будет слышен.
--
Терских К.Н.
Последний раз редактировалось Константин Н. Терских 22 окт 2008, 12:41, всего редактировалось 8 раз(а).
Профиль WWW ICQ 
Сообщение Добавлено: 19 окт 2008, 08:27. Заголовок сообщения:  ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.4)
Зарегистрирован:
    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]


Читаем обязательно!
--
Терских К.Н.
Последний раз редактировалось Константин Н. Терских 19 окт 2008, 09:40, всего редактировалось 1 раз.
Профиль WWW ICQ 
Сообщение Добавлено: 19 окт 2008, 08:50. Заголовок сообщения:  ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.5)
Зарегистрирован:
    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 скажет как или книжка вумная покажет).
--
Терских К.Н.
Профиль WWW ICQ 
Сообщение Добавлено: 19 окт 2008, 10:38. Заголовок сообщения:  ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.6)
Зарегистрирован:
    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 - запись произведена не будет, но каталог скрипт попытается создать.
--
Терских К.Н.
Последний раз редактировалось Константин Н. Терских 19 окт 2008, 18:23, всего редактировалось 1 раз.
Профиль WWW ICQ 
Сообщение Добавлено: 19 окт 2008, 11:00. Заголовок сообщения:  ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.7)
Зарегистрирован:
    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" с двадцатиминутными записями вечерней передачи.

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

Наше вам с кисточкой!... :)
--------------------------------
--
Терских К.Н.
Профиль WWW ICQ 
Сообщение Добавлено: 19 окт 2008, 16:32. Заголовок сообщения:  ТВ-тюнер BeholdTV 409 FM в Linux: краткое руководство (ч.8)
Зарегистрирован:
    18 окт 2008, 17:05
Сообщения: 8
Откуда: Красноярск
Ссылки

Оцифровка видео с камеры. Очень хорошая статья. Можно почерпнуть об обрезке краёв, полос и прочего:
http://www.opennet.ru/base/X/linux_capture.txt.html
--
Терских К.Н.
Профиль WWW ICQ 
Сообщение Добавлено: 25 окт 2008, 12:26. Заголовок сообщения: 
Аватара пользователя
Зарегистрирован:
    24 фев 2006, 19:31
Сообщения: 23
Откуда: Нск
Огромное спасибо за столь подробное описание.

У меня вопрос:
где в скрипте можно с настройками Хvid поиграть?
Профиль 
Сообщение Добавлено: 19 фев 2009, 23:16. Заголовок сообщения: 
Зарегистрирован:
    19 фев 2009, 22:37
Сообщения: 1
Делал все как описано но звука нет (
При изменении громкости в tvtime ползунок микшера бегает.. если вставить в Line-out тюнера нашники звук идет...
Профиль 
Сообщение Добавлено: 22 мар 2009, 23:58. Заголовок сообщения: 
Зарегистрирован:
    22 мар 2009, 23:27
Сообщения: 1
DarkNord, а кабель звуковой от тюнера куда-нибудь подсоединен?

У меня похожая проблема, усугубляющаяся тем, что на моей встроенной звуковухе входы не распаяны. А рецепта каким образом снимать звук по шине, как в виндах, никак найти не могу. Ввести звук снаружи тоже никак - гнезда на звуковухе уже заняты.
Подскажите, пожалуйста, как звук по PCI в линуксе получить? Создается ли какое-то устройство в /dev? (Dmesg говорит, что только video0, vbi0 и radio0 создаются, на звук ни одно не похоже.)
Профиль ICQ 
Сообщение Добавлено: 23 мар 2009, 00:22. Заголовок сообщения: 
Зарегистрирован:
    27 мар 2005, 17:01
Сообщения: 375
Откуда: Москва
Так и не понимаю тех, кто использует юниксы на пользовательских компах. Под виндой воткнул тюнер, запустил два екзешника и пользуйся. А тут... Ради чего такой гимор-то?
Профиль ICQ 
Сообщение Добавлено: 23 мар 2009, 10:12. Заголовок сообщения: 
Зарегистрирован:
    19 мар 2009, 19:57
Сообщения: 4
писал(а):
Так и не понимаю тех, кто использует юниксы на пользовательских компах.

Печально.

PS. Для получения более развернутого ответа на поставленный вопрос вы можете создать новую тему. ;)
Профиль 
Сообщение Добавлено: 11 апр 2009, 20:02. Заголовок сообщения:  Cкрипт для сканирования и определения каналов
Эксперт
Зарегистрирован:
    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
Профиль ICQ 
Сообщение Добавлено: 11 апр 2009, 22:41. Заголовок сообщения:  Re: Cкрипт для сканирования и определения каналов
Аватара пользователя
Зарегистрирован:
    24 фев 2006, 19:31
Сообщения: 23
Откуда: Нск
писал(а):
Еще у меня есть готовые легкие решения по параллельной записи и просмотру, и по работе с tv-расписанием (xmltv).

Поподробнее пожалуйста.
Профиль 
Показать сообщения за:  Поле сортировки:    
Начать новую темуОтветить на тему  Страница 1 из 4  [ Сообщений: 56 ]  На страницу   1, 2, 3, 4  След.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Найти:  
Перейти: