PVR
Pilotage d'une carte Hauppauge WinTV
PVR 350
dernière modification 12
août 2005
Présentation
La carte Hauppauge WinTV PVR 350 est une carte tuner qui vous permet
d'acquérir en plein écran la vidéo provenant du
tuner, de l'entrée vidéo analogique (caméscope,
magnétoscope, TV, terminal satellite, ...). Elle est
dotée
d'une compression MPEG2 hard ce qui permet de décharger
complètement la CPU de ce fastidieux travail.
Dans cette page est présentée l'installation de
ivtv qui permet de piloter la carte
et
MythTV qui vous permettra
d'utiliser votre poste linux comme un vrai magnétoscope, avec
enregistrement programmé ou manuel. Les fichiers sont
sauvegardés ensuite au format MPEG2, libre à vous de
passer ensuite par transcode pour générer du MPEG4 (divx,
xvid, ...).
Vous trouverez davantages d'informations sur la carte WinTV PVR sur le
site d'Hauppauge
www.hauppauge.fr.
Pour information j'utilise cette carte pour enregistrer le signal
vidéo provenant de mon décodeur numérique Canal
Satellite SAGEM branché à la livebox. Il provient de la
sortie péritel du terminal et se branche sur
l'entrée SVHS de la carte (péritel d'un
côté, composite et RCA de l'autre, je passe par un
adaptateur composite-SVHS et RCA-prise jack). . Mon
signal vidéo reçu en numérique est
transformé en analogique via le péritel et
retransformé en numérique sur ma carte...
Ayant une très mauvaise réception hertzienne je n'utilise
pas le tuner de la carte, cela dit dans cette page vous trouverez un
paragraphe pour le
configurer avec les chaînes françaises.
Dans un avenir proche viendra la configuration de la commande infra
rouge puis peut être de la radio FM intégrée
à la carte.
Installation de ivtv
On récupèrera
ivtv
sur le site
ivtv.sourceforge.net/.
Attention de ne pas récupérer la version 0.3.X qui est
instable comme précisé sur le site. On
récupèrera la version 0.2.0. On décompresse
l'archive en tapant
tar xvfz ivtv-0.2.0-rc3j.tgz
Cela donne le répertoire
ivtv-0.2.0-rc3j.
On veillera à ce que les sources du
noyau (
kernel-source) soient
installées, dans ce répertoire tapez
cd driver
make
Puis en tant que root
make install
On va compiler maintenant les utilitaires, on revient
utilisateur normal, à partir du répertoire
ivtv-0.2.0-rc3j.
cd utils
make
Puis en tant que root
make install
Les modules ont été installés sous
/lib/modules/2.6.11-6mdkcustom/ivtv (à
adapter avec votre numéro de version de kernel ainsi que dans la
suite des opérations), déplacez les sous
/lib/modules/2.6.11-6mdk comme ceci
cd /lib/modules/2.6.11-6mdkcustom/ivtv
mv * /lib/modules/2.6.11-6mdk/kernel/drivers/media/video
Confirmer l'écrasement des modules qui portent le même
nom. Supprimez éventuellement le répertoire
/lib/modules/2.6.11-6mdkcustom
rmdir /lib/modules/2.6.11-6mdkcustom
Maintenant si votre noyau d'origine est fourni avec des modules
fournis par
ivtv supprimez
les, voilà les modules que j'ai supprimés avec la
Mandriva LE2005.
rm -R /lib/modules/2.6.11-6mdk/kernel/3rdparty/ivtv
A présent on va installer le firmware de la carte, vous
pouvez soit le récupérer aux adresses suivantes
http://www.hauppauge.com/pages/support/support_pvr250-350.html
ftp://ftp.shspvr.com/download/wintv-pvr_250-350/win9x-2k-xp_mpeg_wdm_drv
Soit utiliser votre CD-ROM d'installation, j'ai utilisé cette
dernière solution, pour l'installation tapez
./ivtv-0.2.0-rc3j/utils/ivtvfwextract.pl
/mnt/cdrom2
Chargement des modules
Pour commencer tapez (en tant que root)
/sbin/depmod -a
Dans le fichier
/etc/modprobe.conf
j'ai mis en commentaire la ligne suivante
#options ivtv radio=0 card= gbuffers=4
C'est une configuration par défaut de la Mandriva LE2005 qui ne
convient
pas du tout. On charge maintenant le module
ivtv, le chargement de ce dernier
entrainera automatiquement le chargement des modules qui sont
liés
modprobe ivtv
Voilà ce que donne le fichier
/var/log/messages
Aug 5 15:09:46 mana kernel:
ivtv: ==================== START INIT IVTV ====================
Aug 5 15:09:46 mana kernel:
ivtv: version 0.2.0 (rc3j) loading
Aug 5 15:09:46 mana kernel:
ivtv: Linux version: 2.6.11-6mdk 686 gcc-3.4
Aug 5 15:09:46 mana kernel:
ivtv: In case of problems please include the debug info
Aug 5 15:09:46 mana kernel:
ivtv: between the START INIT IVTV and END INIT IVTV lines when
Aug 5 15:09:46 mana kernel:
ivtv: mailing the ivtv-devel mailinglist.
Aug 5 15:09:46 mana kernel:
ivtv: Autodetected WinTV PVR 350 card
Aug 5 15:09:46 mana kernel:
ivtv: Found an iTVC15 based chip
Aug 5 15:09:46 mana kernel: PCI:
Found IRQ 4 for device 0000:00:13.0
Aug 5 15:09:46 mana kernel:
ivtv: Unreasonably low latency timer, setting to 64 (was 32)
Aug 5 15:09:46 mana kernel:
ivtv: VIA PCI device: 0x3189 vendor: 0x1106
Aug 5 15:09:46 mana kernel:
tveeprom: Hauppauge: model = 48139, rev = J352, serial# = 6657326
Aug 5 15:09:46 mana kernel:
tveeprom: tuner = Microtune 4049 FM5 (idx = 52, type = 45)
Aug 5 15:09:46 mana kernel:
tveeprom: tuner fmt = PAL(D/K) (eeprom = 0x74, v4l2 = 0x00400e17)
Aug 5 15:09:46 mana kernel:
tveeprom: audio_processor = CS5331 (type = 9)
Aug 5 15:09:46 mana kernel:
ivtv: i2c attach [client=tveeprom[0],ok]
Aug 5 15:09:46 mana kernel:
ivtv: Tuner Type 45, Tuner formats 0x00400e17, Radio: yes, Model
0x00a93552, Revision 0x00000001
Aug 5 15:09:46 mana kernel:
ivtv: PAL tuner detected
Aug 5 15:09:46 mana kernel:
ivtv: SECAM tuner detected
Aug 5 15:09:46 mana kernel:
ivtv: Radio detected
Aug 5 15:09:46 mana kernel:
tuner: Ignoring new-style parameters in presence of obsolete ones
Aug 5 15:09:46 mana kernel:
tuner: chip found at addr 0xc2 i2c-bus ivtv i2c driver #0
Aug 5 15:09:46 mana kernel:
ivtv: i2c attach [client=(tuner unset),ok]
Aug 5 15:09:46 mana kernel:
saa7115: starting probe for adapter ivtv i2c driver #0 (0x10005)
Aug 5 15:09:46 mana kernel:
saa7115: detecting saa7115 client on address 0x42
Aug 5 15:09:46 mana kernel:
saa7115: writing init values
Aug 5 15:09:46 mana kernel:
ivtv: i2c attach [client=saa7115[0],ok]
Aug 5 15:09:46 mana kernel:
saa7115: status: (1E) 0x40, (1F) 0xc0
Aug 5 15:09:46 mana kernel:
saa7127: Ignoring new-style parameters in presence of obsolete ones
Aug 5 15:09:46 mana kernel:
saa7127: video encoder driver version V 0.3 loaded
Aug 5 15:09:46 mana kernel:
saa7127: detecting saa7127 client on address 0x88
Aug 5 15:09:46 mana kernel:
saa7127: Selecting NTSC video Standard
Aug 5 15:09:46 mana kernel:
saa7127: Selecting S-Video+Composite
Aug 5 15:09:46 mana kernel:
saa7127: Turn WSS off
Aug 5 15:09:46 mana kernel:
saa7127: Widescreen Mode 4:3 Full Format
Aug 5 15:09:46 mana kernel:
saa7127: Selecting Normal Encoder Input
Aug 5 15:09:46 mana kernel:
saa7127: Enable Video Output
Aug 5 15:09:46 mana kernel:
ivtv: i2c attach [client=saa7127[0],ok]
Aug 5 15:09:46 mana kernel:
msp34xx: ivtv version
Aug 5 15:09:46 mana kernel:
msp34xx: init: chip=MSP3418W-A2, has NICAM support, simple (D) mode,
simpler (G) no-thread mode
Aug 5 15:09:46 mana kernel:
msp34xx: $Id$ compiled on: Aug 5 2005 14:17:55
Aug 5 15:09:47 mana kernel:
ivtv: i2c attach [client=MSP3418W-A2,ok]
Aug 5 15:09:47 mana kernel:
ivtv: Encoder revision: 0x02040011
Aug 5 15:09:47 mana kernel:
ivtv: Decoder revision: 0x02020023
Aug 5 15:09:47 mana kernel:
ivtv: Configuring WinTV PVR 350 card with 9 streams
Aug 5 15:09:47 mana kernel:
ivtv: Create DMA stream 0 using 256 16384 byte buffers 4194304
kbytes total
Aug 5 15:09:47 mana kernel:
ivtv: Registered v4l2 device, streamtype 0 minor 0
Aug 5 15:09:47 mana kernel:
ivtv: Create DMA stream 1
Aug 5 15:09:47 mana kernel:
ivtv: Registered v4l2 device, streamtype 1 minor 32
Aug 5 15:09:47 mana kernel:
ivtv: Create stream 2 using 40 52224 byte buffers 2097152 kbytes
total
Aug 5 15:09:47 mana kernel:
ivtv: Registered v4l2 device, streamtype 2 minor 224
Aug 5 15:09:47 mana kernel:
ivtv: Create DMA stream 3 using 455 4608 byte buffers 2097152
kbytes total
Aug 5 15:09:47 mana kernel:
ivtv: Registered v4l2 device, streamtype 3 minor 24
Aug 5 15:09:47 mana kernel:
ivtv: Create stream 4
Aug 5 15:09:47 mana kernel:
ivtv: Registered v4l2 device, streamtype 4 minor 64
Aug 5 15:09:47 mana kernel:
ivtv: Create DMA stream 5 using 16 65536 byte buffers 1048576
kbytes total
Aug 5 15:09:48 mana kernel:
ivtv: Registered v4l2 device, streamtype 5 minor 16
Aug 5 15:09:48 mana kernel:
ivtv: Create stream 6 using 1024 2048 byte buffers 262144 kbytes
total
Aug 5 15:09:48 mana kernel:
ivtv: Registered v4l2 device, streamtype 6 minor 228
Aug 5 15:09:48 mana kernel:
ivtv: Create stream 7
Aug 5 15:09:48 mana kernel:
ivtv: Registered v4l2 device, streamtype 7 minor 232
Aug 5 15:09:48 mana kernel:
ivtv: Create DMA stream 8
Aug 5 15:09:48 mana kernel:
ivtv: Registered v4l2 device, streamtype 8 minor 48
Aug 5 15:09:48 mana kernel:
ivtv: Setting Tuner 45
Aug 5 15:09:48 mana kernel:
tuner: type set to 45 (Microtune 4049 FM5) by ivtv i2c driver #0
Aug 5 15:09:48 mana kernel:
saa7115: decoder set input (4)
Aug 5 15:09:48 mana kernel:
saa7115: now setting Composite input
Aug 5 15:09:48 mana kernel:
ivtv: Setting audio matrix to input 3, output 1
Aug 5 15:09:48 mana kernel:
ivtv: Switching standard to PAL.
Aug 5 15:09:48 mana kernel:
ivtv: ivtv_enc_thread: pid = 28882, itv = 0xf11857e0
Aug 5 15:09:48 mana kernel:
ivtv: ivtv_dec_thread: pid = 28883, itv = 0xf11857e0
Aug 5 15:09:48 mana kernel:
saa7115: decoder set norm PAL
Aug 5 15:09:48 mana kernel:
saa7115: set audio: 0x01
Aug 5 15:09:48 mana kernel:
saa7127: Setting Encoder Video Standard
Aug 5 15:09:48 mana kernel:
saa7127: Set PAL Video Mode
Aug 5 15:09:48 mana kernel:
saa7127: Selecting PAL video Standard
Aug 5 15:09:48 mana kernel:
ivtv: Initialized WinTV PVR 350, card #0
Aug 5 15:09:48 mana kernel:
ivtv: ==================== END INIT IVTV
====================
Un répertoire
/dev/v4l/
s'est créé, voici son contenu
lrwxrwxrwx 1
root root 9
aoû 5 15:09 radio0 -> ../radio0
crw-rw---- 1 olivier video 81,
224 aoû 5 15:09 vbi0
crw-rw---- 1 olivier video 81,
228 aoû 5 15:09 vbi4
crw-rw---- 1 olivier video 81,
232 aoû 5 15:09 vbi8
crw-rw---- 1 olivier video
81, 0 aoû 5 15:09 video0
crw-rw---- 1 olivier video
81, 16 aoû 5 15:09 video16
crw-rw---- 1 olivier video
81, 24 aoû 5 15:09 video24
crw-rw---- 1 olivier video
81, 32 aoû 5 15:09 video32
crw-rw---- 1 olivier video
81, 48 aoû 5 15:09 video48
Pour automatiser tout ça, sur ma Mandriva,
il suffira de rajouter dans
/etc/modules
ivtv
(il y était déjà par défaut) puis dans le
fichier
/etc/modules.conf les lignes suivantes
alias char-major-81 videodev
alias char-major-81-0 ivtv
Voilà au prochain reboot, plus besoin de taper de
modprobe.
Tests de fonctionnement
Pour configurer votre carte vous disposez de la commande
ivtvctl (en
tant que root).
ATTENTION Si vous avez deux
cartes tuner, il faudra préciser à
ivtvctl le fichier
spécial
à utiliser pour accéder à la carte (
-d /dev/videoX par défaut
c'est
/dev/video0 qui est
utilisé).
La commande suivante permet d'avoir les formats vidéo disponibles
ivtvctl -s
Résultat
ioctl: VIDIOC_ENUMSTD
index : 0
ID :
0x0000000000003000
Name : NTSC
Frame period: 1001/30000
Frame lines : 525
index : 1
ID :
0x00000000000000FF
Name : PAL
Frame period: 1/25
Frame lines : 625
index : 2
ID :
0x00000000007F0000
Name : SECAM
Frame period: 1/25
Frame lines : 625
Pour passer en SECAM on tapera
ivtvctl -u 0x7f
Résultat
ioctl: VIDIOC_S_STD
Standard set to 0000007f
Pour voir les entrées vidéo disponibles, on tapera
ivtvctl -n
Résultat
ioctl: VIDIOC_ENUMINPUT
Input : 0
Name : Composite 0
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 1
Name : Composite 1
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 2
Name : Composite 2
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 3
Name : Composite 3
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 4
Name : Tuner 0
Type : 0x00000001
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F00FF ( PAL SECAM )
Status : 0
Input : 5
Name : Composite 4
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 6
Name : S-Video 0
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 7
Name : S-Video 1
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 8
Name : S-Video 2
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Input : 9
Name : S-Video 3
Type : 0x00000002
Audioset: 0x00000003
Tuner : 0x00000000
Standard: 0x00000000007F3FFF ( PAL NTSC SECAM )
Status : 0
Mon signal vient du péritel qui aboutit à un signal
composite (même si j'ai un adapteur vers le SVHS de la carte), je
précise donc entrée composite 0 (pour le tuner il faudra
choisir l'entrée 4).
ivtvctl -p 0
résultat
ioctl: VIDIOC_S_INPUT
Input set to 0
On définit la taille de l'image comme cela
ivtvctl -f width=720,height=576
résultat
ioctl: VIDIOC_S_FMT
Before:
Type : Video Capture
Width : 720
Height : 576
After:
Type : Video Capture
Width : 720
Height : 576
voilà le résultat dans le fichier
/var/log/message
Aug 5 15:28:05 mana kernel:
saa7115: decoder set input (6)
Aug 5 15:28:05 mana kernel:
saa7115: now setting Composite input
Aug 5 15:28:05 mana kernel:
ivtv: Setting audio matrix to input 1, output 1
Aug 5 15:28:05 mana kernel:
saa7115: decoder enable output
Aug 5 15:28:51 mana kernel:
saa7115: decoder set size
C'est parti pour un test d'enregistrement, c'est très simple il
suffit de taper
cat /dev/video0 > essai.mpeg
on interrompt avec CTRL-C, vous pouvez lire votre vidéo avec
n'importe quel lecteur vidéo. Voilà ce que donne
/var/log/messages pendant la capture
Aug 5 15:30:33 mana kernel:
saa7115: decoder disable output
Aug 5 15:30:33 mana kernel:
saa7115: decoder enable output
Aug 5 15:30:41 mana kernel:
ivtv: ENC: User stopped capture
Pour visualiser en temps réel vous pouvez utiliser
mplayer
gmplayer /dev/video0
Ne vous étonnez pas s'il y a un léger décalage
entre la vidéo en entrée et ce que vous voyez à
votre écran, c'est le temps de compression MPEG de la carte.
Maintenant on peut copier
ptune.pl,
ptune-ui.pl et
record_v4l2.p
dans un répertoire accessible par
MythTV /usr/local/bin par exemple
cp
ivtv-0.2.0-rc3j/utils/ptune.pl /usr/local/bin
cp ivtv-0.2.0-rc3j/utils/ptune-ui.pl
/usr/local/bin
cp
iivtv-0.2.0-rc3j/utilsrecord-v4l2.pl
/usr/local/bin
Pour le prochain reboot, vous pouvez créer un script pour
initialiser votre carte
qui
sera lancé automatiquement. Pour de la vidéo SECAM sur
l'entrée composite, avec une capture en 720*576, on rajoutera
à
la fin du fichier
/etc/rc.d/rc.local
les lignes suivantes:
ivtvctl -u 0x7F0000
ivtvctl -p 0
ivtvctl -f width=720,height=576
Vous devez aussi rajouter la ligne
ivtvctl -c stream_type=10
Si vous voulez créer des fichiers compatibles DVD pour faire
de l'"authoring" (création de DVD personnalisé).
Configuration
du tuner pour la France
On part sur le principe que le tuner est sélectionné.
ivtvctl -p 4
Au niveau de
sourceforge.net/projects/ivtv/
on récupèrera les deux archives tarballs. Sous
ivtv/utils on décompresse la
première archive en tapant
tar xvfz Video-ivtv-0.13.tar.gz
Cela donne le répertoire
Video-ivtv-0.13
dans lequel on tape
perl Makefile.PL
make
Puis en tant que root
make install
Dans le même endroit on désarchive la deuxième
archive en tapant
tar xvfz Video-Frequencies-0.03.tar.gz
Cela donne le répertoire
Video-Frequencies-0.03
dans lequel on tape
perl Makefile.PL
make
Puis en tant que root
make install
Maintenant il faudra installer un module de
perl, toujours en tant que root on
tape
perl -MCPAN -e shell
install
Config::IniFiles
Maintenant on tape
ptune-ui.pl voilà
ce que ça donne
Choisissez les paramètres qui
vont bien (25 correspond à France 2). Dans le shell après
avoir choisi cette chaîne, j'ai le message suivant
frequency table now secam-france
Channel changed to 25, freq = '503250'
Un fichier ~/.ivtvrc va se
créer, je l'ai légèrement modifié ainsi
[defaults]
VideoDevice=/dev/video0
FrequencyTable=secam-france
TunerNum=0
Debug=1
# options pour la commande record-v4l2.pl
OutputDirectory=/maurice/store
VideoStandard=SECAM
VideoWidth=720
VideoHeight=576
StreamType=10
Les fois suivantes quand je relance, j'obtiens comme trace
Standard: 0x007f0000
Input: 0x00000004
0 0x00003000 NTSC 1001/30000 525
1 0x000000ff PAL 1/25 625
2 0x007f0000 SECAM 1/25 625
Maintenant on passe à la commande
record-v4l2 qui permet de faire des
enregistrements voilà le résultat de la commande qui vous
permet de voir ses paramètres
record-v4l2.pl 1.33 for
use with http://ivtv.sf.net/
Usage: record-v4l2.pl [--channel CHANNEL] [--duration TIME]
[--directory DIRECTORY] [--output
OUTPUT]
[--directory-format FORMAT]
[--date-format FORMAT]
[--input VIDEO_DEV][--width WIDTH
--height HEIGHT]
[--standard STANDARD] [--type TYPE]
[--inputnum INPUT#] [--inputname
INPUT NAME]
[--freqtable FREQENCY MAP]
[--frequency FREQUENCY]
[--bitrate-mode MODE]
[--bitrate BITRATE] [--peakbitrate
PEAK_BITRATE]
[--profile PROFILE]
[--list-freqtable] [--list-channels]
[--no-record] [--noreset] [--save]
[--help] [--version]
[--aspect ASPECT] [--audio-bitmask
AUDIO-BITMASK] [--bframes BFRAMES]
[--dnrmode DNRMODE] [--dnrspatial
DNRSPATIAL]
[--dnrtemporal DNRTEMPORAL]
[--dnrtype DNRTYPE]
[--framerate FRAMERATE]
[--framespergop FRAMESPERGOP]
[--gopclosure GOPCLOSURE]
[--capture-last-gop GOP_END]
[--pulldown PULLDOWN]
[--streamtype STREAMTYPE] [--debug]
[--tuner-num TUNERNUM]
[--output-settings BOOL]
[--output-settings-name FNAME]
[--output-settings-type TYPE]
[--list-inputs] [--list-standards]
[CHANNEL]
-c/--channel CHANNEL: channel number to switch to
NOTE: You can also specify the channel
by itself.
Ex. record-v4l2.pl 73
would change to channel 73 using the default settings
or
the settings from your ~/.ivtvrc config file.
-t/--duration TIME: number of seconds to record
-D/--directory DIRECTORY: Base directory to record into
--directory-format FORMAT: format string that specifies the
sub-directory to create under the
base directory that
the output file will be created
in. This can be empty
to indicate no sub-directory
should be created.
Available tokens are:
%d - date formatted by
--date-format
%I - input name
recorded from
Any white space in the name is converted to
underscores (_). Ex. 'Tuner 0' => 'Tuner_0'
%c - channel or
"freq-#" frequency
--date-format FORMAT: format string that specifies the
date format string to generate and
substitute for
%d in the --directory-format
string.
Available tokens: see the
date commands man page.
The string must start
with a + (plus).
-o/--output OUTPUT: name of file to create
-d/--input VIDEO_DEV: video device to capture from
-W/--width WIDTH: width of screen (720 for NTSC fullscreen)
-H/--height HEIGHT: height of screen (480 for NTSC fullscreen)
-s/--standard STANDARD: NTSC, PAL or SECAM - video standard to
record in
-T/--type TYPE: mpeg or yuv output
-i/--inputnum INPUT#:
The index number of the input you
want to use (0 -> n-1)
-I/--inputname INPUT NAME: The name of the input you want to use.
-f/--freqtable FREQUENCY MAP: Specify the frequency mapping to
use.
-F/--frequency FREQUENCY: Specify the frequency to tune to.
ex. 517250 = NTSC Cable 73 (SCiFi)
--tuner-num TUNERNUM: Specify the tuner to use.
-L/--list-freqtable:
list all available frequency
mappings that Video::Frequencies knows
--list-channels: lists all channels and their frequencies for the
specified frequency table being
used.
--list-inputs: lists all inputs the v4l2 driver reports.
--list-standards: lists all Video Standards the v4l2 driver
supports.
-R/--noreset: Do not Reset anything that was changed
(standard, channel, resolution, etc.)
--no-record: Do not create any directories, capture data or
reset the card
back to original settings. This is the ptune.pl mode.
-h/--help: display this help
-v/--version: display the version of this program
--debug: turns on debug output
--output-settings BOOL: Turns on or off the creation of the
settings
file that contains perl or shell variables that
represent the settings used to record the video file.
This feature is ignored if --no-record specified.
--output-settings-name FNAME: The name of the file to write the
settings to.
It must end in .settings.
--output-settings-type TYPE: Either 'shell' or 'perl'.
If
'shell', then all variables output are prefixed with REC_
and
are upper cased. Ex: StreamType => REC_STREAMTYPE="14"
If
'perl', then all variables output are created in the
%settings hash. Ex: StreamType => 14 = "14";
Codec related options:
--bitrate-mode MODE: 0 = VBR, 1 = CBR
-b/--bitrate BITRATE: Specify the Bitrate to capture at in Mbps
-B/--peakbitrate PEAK_BITRATE: Specify the Peak Bitrate to
capture at in Mbps
--aspect ASPECT: Specify the aspect ratio
--audio-bitmask AUDIO-BITMASK: Specify the audio bitmask
value
--bframes BFRAMES: Specify the number of B frames value
--dnrmode DNRMODE: Specify the dnr_mode value
--dnrspatial DNRSPATIAL: Specify the dnr_spatial value
--dnrtemporal DNRTEMPORAL: Specify the dnr_temporal value
--dnrtype DNRTYPE: Specify the dnr_type value
--framerate FRAMERATE: Specify the framerate value. 0 = 30fps, 1
= 25fps
--framespergop FRAMESPERGOP: Specify the GOP size
--gopclosure GOPCLOSURE: Specify if you want open/closed GOP's.
--capture-last-gop GOP_END: Specify if you want the encoder
stream to try and
capture the last GOP, thus generating a 100% valid
mpeg2 file.
1 = yes (default), 0 = no.
--pulldown PULLDOWN: 1 = Inverse telecine on, 0 = off
--streamtype STREAMTYPE: Specify the stream_type value
Valid Values are:
0 - PS
1 - TS
2 - MPEG1
3 - PES_AV
5 - PES_V
7 - PES_A
10 - DVD
11 - VCD
12 - SVCD
13 - DVD-Special 1
14 - DVD-Special 2
Config file related options:
-P/--profile PROFILE: Override defaults and command line values
with the
config entries in the section labeled [PROFILE] from the
config file /root/.ivtvrc.
Examples: -P NTSC-DVD, -P PAL-DVD, --profile MY-SETTINGS
You can specify this option multiple times and each successive
profile will overlay the defaults and any previous profiles.
You will not be able to create/update a profile if you do
specify multiple profiles.
-S/--save: save the current values as the defaults in
/root/.ivtvrc.
If -P/--profile PROFILE is specified,
then those values that exist in
the specified profile will be
updated. If the profile doesn't exist,
then it will be created, but will have
all possible config items
defined in it. It will be your
responsibility to hand check the
config file and remove any config items
you do not want set for
that profile.
Any options specified on the command
line will override options
defined in the config file.
Notes:
If you specify both -i/--inputnum and -I/--inputname then
-i/--inputnum will take precedence.
If you specify both -c/--channel and -F/--frequency then
-F/--frequency will take precedence.
If you use a Profile, it has the ability to override all command
line
arguments, so check your Profile first if things
seem to be ignored.
Defaults:
--duration 3595 --input /dev/video0 --width 720 --height 480
--standard NTSC
--type mpeg --directory . --output video.mpg
--directory-format "%I-%c-%d" --date-format "+%Y%m%d-%H%M"
--inputnum 4 --inputname 'Tuner 0' --freqtable ntsc-cable
--capture-last-gop 1
--bitrate 6500000 --peakbitrate 8000000 --aspect 2
--audio-bitmask 233 --bframes 3
--dnrmode 0 --dnrspatial 0 --dnrtemporal 0 --dnrtype 0
--framerate 0 --framespergop 15 --gopclosure 1 --pulldown 0
--streamtype 14
--tuner-num 0 --output-settings 1 --output-settings-name
video.settings --output-settings-type shell
config file = '//.ivtvrc'
If Channel = 4, this would create:
./Tuner_0-4-20050806-0858/video.mpg
Note: This script relies on Perl Modules:
Video::Frequencies, Video::ivtv,
Config::IniFiles and Getopt::Long.
Maintenant pour faire une petite acquisition (de France 2) vous pouvez
taper
record-v4l2.pl -c 25
Channel = '25'
RecordDuration = 3595
V4l2 Capabilities:
driver='ivtv', version='512', '0.2.0'
Standard: 0x000000ff
Input: 0x00000004
0 0x00003000 NTSC 1001/30000 525
1 0x000000ff PAL 1/25 625
2 0x007f0000 SECAM 1/25 625
Warning: Setting
Framerate/FramesPerGOP to PAL settings for Video Standard 'SECAM'!
You should either specify on the
command line or in the ~/.ivtvrc config file.
Ch.25: 503250 8052
standard now SECAM, #8323072
oldWidth = '720', oldHeight = '576'
new StreamType = '10', old StreamType
= '0'
new PeakBitrate = '8000000', old
PeakBitrate = '9600000'
new Framerate = '1', old Framerate =
'0'
new Bitrate = '6500000', old Bitrate =
'8000000'
standard now PAL, #255
On stoppe l'acquisition avec CTRL-C cela va créer un
répertoire
Tuner_0-25-AAMMJJ-HHMM
contenant la vidéo (mpeg) et une fichier contenant la
configuration de l'enregistrement.
Programmer un
enregistrement
Pour programmer un enregistrement vous pouvez vous servir de la
commande
at, assurez vous que
le daemon
atq est bien
lancé (en tant que root)
/etc/rc.d/init.d/atd status
S'il n'est pas lancé, lancez le
/etc/rc.d/init.d/atd start
Maintenant pour programmer un enregistrement à partir de 10h22'
du soir le 7 décembre on tapera (simple utilisateur)
at -f enregistre 22:22 120703
Avec dans le fichier enregistre (droit 755)
#!/bin/bash
record-v4l2.pl --duration=7200
7200 est le temps d'enregistrement en seconde. Vous pouvez
écrire encore quelque chose de plus basique, le programme
enregistre
#!/bin/bash
cat /dev/video0 > mon-film.mpeg
Et le programme pour interrompre l'enregistrement dont vous
programmerez le lancement avec
at.
#!/bin/bash
killall -9 cat
Veuillez bien sûr à ce qu'il n'y ait pas un autre process
cat qui tourne en même temps.
Une fois que la vidéo a été
récupérée, on peut se servir d'
avidemux pour
extraire la séquence vidéo qui nous intéresse.