[ Présentation | DVR ( Installation de DVR | Utilisation de DVR ) | Acquisition vidéo avec avicap | Acquisition avec les mjpeg-tools | Acquisition DV avec dvgrab ]

Dernière modification 18 février 2007

Acquisition vidéo

( ce document est disponible au format pdf dans la rubrique téléchargement)

Présentation

Sur cette page sont présentés les moyens de faire de l'acquisition vidéo à partir d'un caméscope analogique et numérique (format DV). DVR permet de faire l'acquisition d'un signal vidéo provenant d'un caméscope analogique via une carte PCTV Rave à moins de 100 euros basée sur une puce BTTV. dvgrab permet de faire l'acquisition d'un signal vidéo numérique à partir d'un caméscope DV via une carte IEEE1394 (firewire).

[Retour haut de la page ]

DVR

Installation

Le site officiel de DVR (Digital Video Recording) se trouve http://dvr.sourceforge.net. Il repose sur avifile. On décompresse l'archive en tapant :

tar xvfz dvr-3.2.tar.gz

Cela donne le répertoire dvr-3.2, dans lequel on tape

make

En cas d'erreur de la sorte

dvr.cpp:26:29: avifile/avifile.h: No such file or directory

Vous pouvez en tant que root créer le lien suivant

ln -s /usr/local/include/avifile-0.7/ /usr/local/include/avifile

on retape make j'ai l'erreur suivante

QTVConfigImpl.cpp: In member function `void QTVConfigImpl::setV4L(V4L*)':
QTVConfigImpl.cpp:28: error: array bound forbidden after parenthesized type-id
QTVConfigImpl.cpp:28: note: try removing the parentheses around the type-id
make[1]: *** [QTVConfigImpl.o] Erreur 1

J'édite le fichier dvr-qtgui/QTVConfigImpl.cpp au lieu de (ligne 28)

buttons=new (QRadioButton*)[v4l->videoChannels().size()]

J'écris

buttons=new QRadioButton*[v4l->videoChannels().size()]

Je retape make puis en tant que root

make install

On notera dans le fichier doc/README la remarque suivante

BUGS
----
You need to launch your favorite TV program once and close it, before the first execution of DVR since the
last reboot of your computer.

Cela signifie qu'avant chaque premier lancement de dvr, il faudra lancer préalablement un logiciel exploitant votre carte TV, comme xawtv. Lancer donc xawtv (ou un truc équivalent), fermer le, et lancer ensuite dvr

[Retour haut de la page ]

Utilisation de DVR

Il suffit de taper dvr-qtgui (en prenant en compte la remarque précédente).
 
 
A chaque lancement de dvr la fenêtre à droite apparaît, les valeurs par défaut sont généralement les bonnes.

La fenêtre de visualisation de DVR , on y voit à gauche l'affichage renvoyé par mon caméscope.
La fenêtre principale de DVR avec ses onglets de menu. Au niveau de l'onglet General, il faudra veiller à mettre une taille correcte au niveau de Width et Height, le plus rapide étant de sélectionner des tailles prédéfinies au niveau de Size.
La fenêtre de sélection du codec à utiliser avec affichage des paramètres et information du codec sélectionné. Voilà pour information une partie les codecs disponibles avec leurs sites respectifs:

AVID Codec [AVRn]
AVI Mszh
AVI Zlib
Brooktree(r) ProSummer Video
Brooktree(r) YUV411 Raw
Cinepak video
DivX 5.0  www.divx.com
Divx ;-) Fast Motion www.divx.com
Divx ;-) Low Motion www.divx.com
Divx ;-) VKI (Fast Motion)  www.divx.com
Divx ;-) VKI (Low Motion)  www.divx.com
FFMPEG DivX 5
Huffyuv lossless codec [HFYU] www.math.berkeley.edu/~benrg/huffyuv.html
I263
Indeo(r) Video 5.04 www.ligos.com/indeo
Indeo Video 3.2 www.ligos.com/indeo
Indeo Video 4 1  www.ligos.com/indeo
Microsoft MPEG-4
M$ motion JPEG
Motion wavelets
MS RLE
OS Motion  JPEG
TechSmith screen capture  (TSCC)  www.techsmith.com
U263
Uncompressed I420
Uncompressed  RGB
Uncompressed UYVY
Uncompressed YUY2
Uncompressed YV12
VP31(r) codec   www.on2.com
Xvid  www.xvid.org

Il vous faudra faire des essais pour trouver les codecs offrant le meilleur rapport qualité/taille vidéo, personnellement j'utilise le xvid

Au niveau de l'onglet Video Interface, vous allez choisir si vous voulez enregistrer l'image du caméscope, ou celle de la télé.
Au niveau de l'onglet Audio Codec, vous pouvez améliorer la qualité sonore de votre vidéo en augmentant le Bit rate.
Attention pour le son, si le son de votre caméscope est branché sur la prise LINE-IN de votre carte son, et si votre carte son n'accepte l'enregistrement que sur une voie, vous devez veiller au niveau de kmixde fixer l'enregistrement sur LINE-IN et non sur le micro (choix par défaut).
Voilà la configuration est terminée, pour commencer l'enregistrement, cliquez sur l'espèce d'écrou. Vous avez la visualisation en temps réel du temps d'enregistrement et de la taille du fichier. A noter que la manip peut être particulièrement gourmande en ressource, du coup un certain nombre de frame peuvent se perdre dans la nature (on le voit au niveau des champs frames lost in...), si le nombre est très important votre vidéo sera en accélérée, je vous conseille de quitter KDE (ou gnome) et de choisir un environnement moins gourmand (XFCE) et de lancer dvr avec un max de priorité:

nice -n 20 /usr/local/bin/dvr

Si votre système est un peu à genoux pendant la capture, la fenêtre aura tendance à ne pas être rafraichie, il suffit de bouger la souris pour qu'elle le soit.
Pour terminer l'enregistrement cliquer sur la croix blanche sur fond rouge.

[Retour haut de la page ]

Acquisition avec avicap

avicap est fourni avec avifile, il permet d'enregistrer un signal vidéo, c'est une interface graphique à avirec qui est également utilisé par dvr. Pour le lancer il suffit de taper avicap, une fenêtre avec écran noir apparaît, cliquez sur le bouton droit de la souris pour faire apparaître le menu


Voilà ce que ça donne pour la configuration (Configure), onglet Device. J'enregistre à travers ma carte tuner basée sur une puce BTTV en utilisant l'entrée Composite.

Onglet File


Onglet Video pour choisir le codec à utiliser

En cliquant sur Change, vous obtenez la liste des codecs (voir la liste complète plus haut au niveau de l'utilisation de DVR). Vous pouvez éventuellement les configurer.


onglet Audio


onglet Limits permet de limiter la taille de la vidéo (avec les paramètres temps et taille du fichier).


Une fois configuré, il suffit à partir du menu accessible par le bouton droit de la souris de cliquer sur Capture AVI puis Start

Voilà l'avancement de l'enregistrement, à noter qu'on dispose d'une visualisation temps réel de ce qu'on enregistre. 

[Retour haut de la page ]

Acquisition avec les mjpeg-tools

On peut enregistrer un flux vidéo avec les mjpeg-tools grâve à la commande lavrec, les options sont les suivantes

-i  type d'entrée avec p signal composite PAL, P signal SVHS PAL et t signal tuner PAL
-f format d'enregistrement de la vidéo
                 a - MJPEG AVI
                 A - MJPEG AVI with fields exchanged
                 q - Quicktime
                 m - Movtar
-g dimension de l'image (multiple de 16 automatiquement)

Je vous invite à faire un man lavrec pour plus de détails. Exemple pour enregistrer un signal SVHS PAL provenant de mon caméscope DV et branché sur ma carte tuner.

[olivier@asterix videos]$ lavrec -v 1 -i P --software-encoding -U --geometry=192x144 toto.avi
   INFO: [lavrec] Recording parameters:
   INFO: [lavrec] Output format:      AVI
   INFO: [lavrec] Input Source:       BT8x8 2nd input PAL

   INFO: [lavrec] Decimation:         4
   INFO: [lavrec] Quality:            50
   INFO: [lavrec] Recording time:     -1 sec
   INFO: [lavrec]
   INFO: [lavrec] MJPEG buffer size:  256 KB
   INFO: [lavrec] # of MJPEG buffers: 64
   INFO: [lavrec] Audio parameters:
   INFO: [lavrec] Audio sample size:           16 bit
   INFO: [lavrec] Audio sampling rate:         44100 Hz
   INFO: [lavrec] Audio is MONO
   INFO: [lavrec] Audio input recording level: Use mixer setting
   INFO: [lavrec] Level of correction for Audio/Video synchronization:
   INFO: [lavrec] Lost frame compensation and frame drop/insert
++ WARN: [lavrec] Unable to set negative priority for main thread
++ WARN: [lavrec] Pthread Real-time scheduling for main thread could not be enabled
   INFO: [lavrec] Using read(2) system call for capture
++ WARN: [lavrec] Unable to set negative priority for audio thread.
++ WARN: [lavrec] Pthread Real-time scheduling for audio thread could not be enabled.
   INFO: [lavrec] Auto detecting input and norm ...
   INFO: [lavrec] Unmuting tuner audio...
   INFO: [lavrec] Image size will be 192x144, 1 field(s) per buffer
   INFO: [lavrec] Got 4 YUV-buffers of size 2080 KB
   INFO: [lavrec] Created 64 MJPEG-buffers of size 256 KB
   INFO: [lavrec] Getting audio ...
   INFO: [lavrec] Created 1 software JPEG-encoding process(es)

   INFO: [lavrec] Opening output file toto.avi
   INFO: [lavrec] Re-muting tuner audio... ae:  0 td1=0.004 td2=0.042

Recording time  :  0.00.18:10
Lost frames     : 000
A/V sync ins/del: 000/000
Audio errors    : 000

Le fichier obtenu est lisible ensuite avec les logiciels qui vont bien (aviplay, gmplayer, ...).

[Retour haut de la page ]

Acquisition DV avec dvgrab

dvgrab est disponible  sur le site http://www.kinodv.org/. On décompresse l'archive en tapant

tar xvfz dvgrab-3.5.tar.gz

Cela donne le répertoire dvgrab-3.5 dans lequel on tape successivement

./configure
make

puis en tant que root

make install

Voici un résumé non exhaustif des options:

  --format dv1      sauvegarder en tant qu'avi type 1 (par défaut)
  --format dv2      sauvegarder en tant qu'avi type 2

le format dv1 produit des fichiers plus petits. A noter que MPlayer et aviplay (page les lecteurs vidéo) lisent le format dv2 mais pas le format dv1.

--format raw      sauvegarde uniquement l'information DV brute sans aucune information additionnelle. A noter qu'en terminant le fichier par un .dv, il est lisible par MPlayer et aviplay.
--format qt sauvegar de au format quicktime
--frames number   nombre de frames à sauvegarder au total  (par défaut 100000 max).

Voilà le résultat en ne sauvegardant que 100 frames

dvgrab
--format dv2 --frames 100 toto
toto001.avi: 100 frames

Ca nous fait un fichier de 14Mo tout de même. Vous obtenez les autres options en tapant

dvgrab --help

le module raw1394 doit être chargé pour pouvoir utiliser dvgrab.
 
[Retour page d'accueil ]