Chapitre 2. Récupération de la vidéo

Table des matières

2.1. Carte firewire
2.2. Capturer la vidéo avec dvgrab
2.3. Screenshot première image de la vidéo
2.4. Url externes

2.1. Carte firewire

Il faut avoir un kernel Linux qui supporte le ieee1394 (2.4 ou 2.6), sinon votre carte firewire ne marchera pas :-(. La plupart des distributions ont le support ieee1394. Voici les options qu'il faut mettre dans votre fichier de configuration kernel (dans le cas présent un 2.6.X) pour avoir les modules nécessaires:

# IEEE 1394 (FireWire) support
#
CONFIG_IEEE1394=m
#
# Subsystem Options
#
# CONFIG_IEEE1394_VERBOSEDEBUG is not set
CONFIG_IEEE1394_OUI_DB=y
CONFIG_IEEE1394_EXTRA_CONFIG_ROMS=y
CONFIG_IEEE1394_CONFIG_ROM_IP1394=y
#
# Device Drivers
#
# Texas Instruments PCILynx requires I2C
#
CONFIG_IEEE1394_OHCI1394=m
#
# Protocol Drivers
#
CONFIG_IEEE1394_VIDEO1394=m
CONFIG_IEEE1394_SBP2=m
# CONFIG_IEEE1394_SBP2_PHYS_DMA is not set
CONFIG_IEEE1394_ETH1394=m
CONFIG_IEEE1394_DV1394=m
CONFIG_IEEE1394_RAWIO=m
CONFIG_IEEE1394_CMP=m
CONFIG_IEEE1394_AMDTP=m

Pour voir si vous avez les modules nécessaires vous pouvez taper dans une console:

[guibo@localhost linux]$ find /lib/modules/`uname -r`/ -iname *1394*
/lib/modules/2.6.10-guibo/kernel/drivers/ieee1394
/lib/modules/2.6.10-guibo/kernel/drivers/ieee1394/dv1394.ko
/lib/modules/2.6.10-guibo/kernel/drivers/ieee1394/eth1394.ko
/lib/modules/2.6.10-guibo/kernel/drivers/ieee1394/ieee1394.ko
/lib/modules/2.6.10-guibo/kernel/drivers/ieee1394/ohci1394.ko
/lib/modules/2.6.10-guibo/kernel/drivers/ieee1394/raw1394.ko
/lib/modules/2.6.10-guibo/kernel/drivers/ieee1394/video1394.ko
/lib/modules/2.6.10-guibo/modules.ieee1394map

Ensuite il faut charger les modules pour que votre système reconnaisse votre carte firewire:

[root@xp2400 ~/]# modprobe ohci1394
[root@xp2400 ~/]# modprobe raw1394

voici la liste des modules ieee1394 de mon système après le chargement des modules:

[root@xp2400 root]# lsmod | grep 1394
raw1394                19416   0  (unused)
dv1394                 20208   0  (unused)
ohci1394               27696   0  [dv1394]
ieee1394              201284   0  [raw1394 dv1394 ohci1394]

Vous pouvez utiliser testlibraw pour vérifier que ça fonctionne:

[root@xp2400 root]# testlibraw 
successfully got handle
current generation number: 1
1 card(s) found
nodes on bus:  2, card name: ohci1394
using first card found: 2 nodes on bus, local ID is 1, IRM is 1

doing transactions with custom tag handler
trying to send read request to node 0... completed with value 0x334275a5
trying to send read request to node 1... completed with value 0x406175a5

using standard tag handler and synchronous calls
trying to read from node 0... completed with value 0x3cc676a5
trying to read from node 1... completed with value 0x10e076a5

testing FCP monitoring on local node
got fcp command from node 1 of 8 bytes: 01 23 45 67 89 ab cd ef
got fcp response from node 1 of 8 bytes: 01 23 45 67 89 ab cd ef

polling for leftover messages

Il se peut que /dev/raw1394 ne soit pas créer en probant les modules, dans ce cas créer le device à la main en tant qu'utilisateur root:

[root@xp2400 root]# mknod /dev/raw1394 c 171 0

2.2. Capturer la vidéo avec dvgrab

dvgrab permet de récupérer en ligne de commande la vidéo de votre mini-DV. Ce logiciel est assez simple d'utilisation. Utilisez la version 1.3 (ou supérieur) qui est interactive et très intuitive d'utilisation. Il faut compter pas loin de 14 Go d'espace disque pour capturer une heure de mini-DV. A la fin de la capture si vous lisez la vidéo avec un player multimédia, vous risquez d'être très déçu de la qualité. En effet la vidéo sera inter-lacée, et donc vous aurez l'impression qu'il manque des lignes, et qu'elle saute de temps en temps. C'est tout à fait normal, et lors de la conversion en format DVD nous la désintéresserons.

Pourquoi ne pas utilisez Kino tout de suite ? Kino permet la capture vidéo à partir de son caméscope, mais dvgrab permet de tagger chaque vidéo par sa date, et de couper la vidéo capturée à chaque changement de "Frame rate", donc à chaque nouvel enregistrement. Nous voulons réaliser un DVD avec un chapitre pour chaque nouvelle séquence enregistrée, dvgrab et donc l'outil le plus adapté à la situation.

utilisation de dvgrab en mode interactif:

[guibo@xp2400 ~/]# dvgrab -i
Going interactive. Press '?' for help.
q=quit, p=play, c=capture, Esc=stop, h=reverse, j=backward scan, k=pause        
l=forward scan, a=rewind, z=fast forward, 0-9=trickplay, space=play/pause
"Playing Paused" ff:ff:ff:ff ""          sec

Nous allons lancer la capture de la vidéo, en mode interactif, en récupérant le flux du mini-DV en format DV2, et en coupant les vidéos à chaque nouvelle séquence:

[guibo@xp2400 ~/]# dvgrab -i --format dv2 --timestamp --autosplit outfile

pressez a pour rembobiner la cassette au début, puis c pour lancer la capture. Cela prendra le temps d'enregistrement de votre vidéo, soit une heure pour une cassette complète.

  • "-i" mode interactif lecture et capture vidéo

  • "--format dv2" sauve en utilisant le format "Type 2 DV"

  • "--timestamp" ajoute la date et l'heure sur le fichier

  • "--autosplit" crée un nouveau fichier à chaque séquence vidéo

  • "outfile" nom de base du fichier d'enregistrement

Cela va créer des fichiers du type outfile1998.12.04_16-14-22.avi dans votre répertoire de travail. Ce sont ces fichiers que nous utiliseront pour faire le montage sous Kino. Attention dans certain cas, le mini-DV ne gère pas la date-heure, et donc chaque nouvelle séquence vidéo capturée et enregistrée efface l'ancienne (outfile000-000-000--0-00-0.avi). Dans ce cas il ne faut pas utiliser --timestamp et --autosplit , mais --size 2048 pour couper le fichier tous les 2048Mo. Attention à ne pas travailler avec des fichiers .avi d'une taille supérieur, sinon vous risquez de rencontrer des problèmes de synchronisation de son/vidéo, et certain encodeurs vidéos ne le supportent pas.

2.3. Screenshot première image de la vidéo

Pour se repérer dans les vidéos, et faire la jaquette de notre futur DVD, rien de tel qu'un screenshot de la première image du .avi. Transcode est bien pratique pour faire ça, même si la quantité d'arguments à lui spécifier peu faire peur.

[guibo@xp2400 ~/]# transcode -a 0 -c 1 -x dv -i fichier.avi -y jpg -o screenshot.jpg

  • "-a 0" channel audio à extraire

  • "-c 1" convertir seulement une image

  • "-x dv" défini le type de fichier à convertir

  • "-i" nom du fichier à convertir

  • "-y jpg" type de format de sortie

  • "-o" fichier de sortie

Il arrive parfois que les couleurs ne soient pas correctes, et que l'image soit inversée, dans ce cas il faut utiliser l'option "-V" et tout devrait rentrer dans l'ordre. Vous pouvez aussi faire des screenshots de fichier vidéo sans préciser le format d'entrée du fichier, dans ce cas retirez l'option "-x format_vidéo".

L'image capturée sera beaucoup trop grande pour être utilisé, on va donc la convertir avec convert de ImageMagick la réduire:

[guibo@xp2400 ~/]# convert -verbose -size 320x200 screenshot.jpg screenshot.jpg

  • "-verbose" expliquer ce qu'il effectue

  • "-size" définir la taille de l'image de sortie

J'utilise convert, mais on aurait très bien pu utiliser l'option "Scale" de Gimp, ou tout autre logiciel de traitement d'image. Il vous suffira ensuite de reprendre ces images dans un document OpenOffice ou autre, pour vous faire une jacquette pour votre DVD de salon.

2.4. Url externes