FUNIX

Mettez un manchot dans votre PC


Encourager FUNIX

La consultation du site est totalement libre et gratuite, sans publicités. Les dons sont néanmoins appréciés pour payer l'hébergement et encourager son auteur


PVR

Pilotage d'une carte Hauppauge WinTV PVR 350

dernière modification 12 août 2005


(Ce guide peut être téléchargé dans la section téléchargement)

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.

[Retour page d'accueil]
[Retour haut de la page]