Numériser une cassette VHS sous Linux

De Lea Linux
Révision datée du 4 juin 2007 à 10:54 par Eric g (discussion | contributions) (Ajout du branchement des câbles)
Aller à la navigation Aller à la recherche

Résumé

Cet article propose une solution matérielle et logicielle simple pour numériser des cassettes VHS sous Linux. Les fichiers obtenus peuvent ensuite être édités par un logiciel de montage vidéo comme kino et être gravés sur un DVD, par exemple en utilisant l'excellent mandvd. La solution matérielle passe par le boîtier d'acquisition vidéo Dazzle DVD Recorder, que l'on trouve facilement dans le commerce (FNAC, Surcouf, etc...), pour le prix relativement modique de 59 euros.

!!! Cet article est en cours de rédaction !!!

Le boîtier d'acquisition vidéo Dazzle DVD Recorder

À moins que la carte vidéo de votre ordinateur ne soit équipée d'une entrée analogique (carte vidéo haut de gamme), il est nécessaire d'utiliser un boîtier d'acquisition vidéo comme interface entre votre magnétoscope (ou camescope VHS) et votre ordinateur. Ce boîtier va en effet transformer le signal analogique VHS en un signal numérique vers le port USB de l'ordinateur. La solution adoptée ici repose sur le Dazzle DVD Recorder (nom commercial), également connu sous le nom de Pinnacle Dazzle DVC 100 (nom technique). Il y a trois raisons à ce choix:

1/ sa disponibilité en France: on le trouve notamment à la FNAC et chez Surcouf

2/ son faible prix: 59 euros

3/ il est suporté par le noyau Linux ! (moyenant une petite modification, décrite ci-desous, pour la lecture en mode SECAM).

Installations logicielles nécessaires

Pour faire fonctionner le boîtier Dazzle DVD Recorder, il est nécessaire d'installer des modules du noyau Linux, issus du projet Video4Linux. Nous décrivons ci-après la procédure d'installation pour une distribution Mandriva 2007, l'adaption à une autre distribution Linux ne devant pas poser de problème.


1ère étape : installation des sources du noyau Linux

Les sources du noyau sont nécessaires pour la compilation des modules Video4Linux. Dans le cas présent (Mandriva 2007), il suffit du paquetage kernel-source-2.6.17.5mdv-1-1mdv2007.0


2ème étape: installation des sources des modules v4l (Video4Linux)

Les sources des modules v4l s'installent via le logiciel mercurial (gestionnaire de codes sources). Aussi, il faut installer ce dernier au réalable. Dans le cas de la Mandriva 2007, il suffit d'installer le paquetage mercurial-0.9-1mdk. On peut ensuite lancer le téléchargement des sources en tapant la commande hg clone http://linuxtv.org/hg/~mrechberger/v4l-dvb-kernel-history Cela crée le sous-répertoire v4l-dvb-kernel dans le répertoire courant. En tant que su (utilisateur root), déplacer ce répertoire vers /usr/local/src: mv v4l-dvb-kernel /usr/local/src


3ème étape: modification des sources des modules v4l

a/ Pour régler un problème de compilation avec le fichier dvb_net.c, on remplace ce fichier par celui des sources de la Mandriva 2007: cp /usr/src/linux-2.6.17-5mdv/drivers/media/dvb/dvb-core/dvb_net.c \ /usr/local/src/v4l-dvb-kernel/linux/drivers/media/dvb/dvb-core/

b/ Il faut ajouter le mode SECAM au driver em28xx/DVC 100 : à cette fin, éditer le fichier /usr/local/src/v4l-dvb-kernel/linux/drivers/media/video/em28xx/em28xx-cards.c, chercher la ligne contenant EM2820_BOARD_PINNACLE_DVC_100 et ajouter { .name = "SECAM", .id = V4L2_STD_SECAM, } dans la liste .tvnorms, de sorte qu'elle devienne .tvnorms = { { .name = "SECAM", .id = V4L2_STD_SECAM, },{ .name = "PAL-BG", .id = V4L2_STD_PAL_BG, }}, au lieu de .tvnorms = { { .name = "PAL-BG", .id = V4L2_STD_PAL_BG, }},

Pour vérification, voici le passage considéré après modification: [EM2820_BOARD_PINNACLE_DVC_100] = { .name = "Pinnacle Dazzle DVC 100", .vchannels = 3, .norm = V4L2_STD_PAL_BG, .has_tuner = 0, .decoder = EM28XX_SAA7113, .dev_modes = EM28XX_VIDEO, .input = {{ .type = EM28XX_VMUX_COMPOSITE1, .vmux = SAA7115_COMPOSITE0, .amux = 1, },{ .type = EM28XX_VMUX_SVIDEO, .vmux = SAA7115_SVIDEO3, .amux = 1, }}, .tvnorms = { { .name = "SECAM", .id = V4L2_STD_SECAM, },{ .name = "PAL-BG", .id = V4L2_STD_PAL_BG, }}, },


4ème étape: compilation et installation des modules v4l

On lance la compilation par : cd /usr/local/src/v4l-dvb-kernel make Avant de procéder à l'installation des modules fraîchement compilés, une petite sauvegarde s'impose: cd /lib/modules tar -cvf modules_2.6.17-5mdv.tar 2.6.17-5mdv

Pour éviter des conflits entre ancien_module.ko.gz et nouveau_module.ko, on efface au préalable les anciens modules: rm -fr /lib/modules/2.6.17-5mdv/kernel/drivers/media L'installation peut alors avoir lieu: cd /usr/local/src/v4l-dvb-kernel make install


5ème étape : chargement du module dans le noyau

Pour vérifier que tout est OK, on charge à la main le module em28xx dans le noyau (par la suite, cela sera effectué automatiquement à chaque branchement du Dazzle) via la commande: modprobe em28xx Si tout va bien, on doit avoir la sortie suivante lorsque qu'on tape la commande lsmod | grep em28 : em28xx 100024 0 compat_ioctl32 13184 1 em28xx ir_common 35076 1 em28xx videodev 28928 1 em28xx v4l1_compat 16644 2 em28xx,videodev v4l2_common 28160 3 em28xx,compat_ioctl32,videodev tveeprom 23056 1 em28xx i2c_core 23424 2 em28xx,tveeprom usbcore 129696 4 em28xx,ehci_hcd,ohci_hcd Par ailleurs, la commande dmesg doit retourner: Linux video capture interface: v2.00 em28xx v4l2 driver version 0.0.1 loaded usbcore: registered new driver em28xx


Branchement du boîtier d'acquisition Dazzle

Le boîtier Dazzle DVD Recorder se connecte au magnétoscope (ou camescope) par l'intermédiaire de trois câbles RCA: 1 vidéo composite (prise jaune), 1 audio droite (prise rouge) et 1 audio gauche (prise blanche). Si votre magnétoscope n'a pas de sortie RCA, mais seulement une sortie Péritel, il faut interposer un convertisseur Péritel -> RCA que l'on trouve dans le commerce. La sortie du boîtier Dazzle est à brancher sur une entrée USB 2 de l'ordinateur.

Le module saa7115 pour la puce décodeur vidéo Philips SAA7115 doit se charger automatiquement dans le noyau: la commande lsmod | grep saa doit retourner quelque chose de similaire à saa7115 23312 0 v4l2_common 28160 4 saa7115,em28xx,compat_ioctl32,videodev i2c_core 23424 3 saa7115,em28xx,tveeprom Par ailleurs, dmesg doit indiquer: usb 2-9: new high speed USB device using ehci_hcd and address 2 usb 2-9: configuration #1 chosen from 1 choice em28xx new video device (2304:021a): interface 0, class 255 em28xx: device is attached to a USB 2.0 bus em28xx #0: Alternate settings: 8 em28xx #0: Alternate setting 0, max size= 0 em28xx #0: Alternate setting 1, max size= 1024 em28xx #0: Alternate setting 2, max size= 1448 em28xx #0: Alternate setting 3, max size= 2048 em28xx #0: Alternate setting 4, max size= 2304 em28xx #0: Alternate setting 5, max size= 2580 em28xx #0: Alternate setting 6, max size= 2892 em28xx #0: Alternate setting 7, max size= 3072 attach_inform: eeprom detected. em28xx #0: i2c eeprom 00: 1a eb 67 95 04 23 1a 02 12 00 11 03 98 10 6a 2e em28xx #0: i2c eeprom 10: 00 00 06 57 4e 00 00 00 60 00 00 00 02 00 00 00 em28xx #0: i2c eeprom 20: 02 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 em28xx #0: i2c eeprom 30: 00 00 20 40 20 80 02 20 10 01 00 00 00 00 00 00 em28xx #0: i2c eeprom 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 em28xx #0: i2c eeprom 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 em28xx #0: i2c eeprom 60: 00 00 00 00 00 00 00 00 00 00 2e 03 50 00 69 00 em28xx #0: i2c eeprom 70: 6e 00 6e 00 61 00 63 00 6c 00 65 00 20 00 53 00 em28xx #0: i2c eeprom 80: 79 00 73 00 74 00 65 00 6d 00 73 00 20 00 47 00 em28xx #0: i2c eeprom 90: 6d 00 62 00 48 00 00 00 10 03 44 00 56 00 43 00 em28xx #0: i2c eeprom a0: 31 00 30 00 30 00 00 00 32 00 30 00 33 00 35 00 em28xx #0: i2c eeprom b0: 36 00 30 00 37 00 35 00 31 00 33 00 34 00 31 00 em28xx #0: i2c eeprom c0: 30 00 32 00 30 00 30 00 30 00 31 00 00 00 32 00 em28xx #0: i2c eeprom d0: 33 00 31 00 32 00 33 00 00 00 00 00 00 00 00 00 em28xx #0: i2c eeprom e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 em28xx #0: i2c eeprom f0: 00 00 00 00 00 00 00 00 b3 d4 60 01 b3 b5 56 07 EEPROM ID= 0x9567eb1a Vendor/Product ID= 2304:021a AC97 audio (5 sample rates) 300mA max power Table at 0x06, strings=0x1098, 0x2e6a, 0x0000 saa7115 0-0025: saa7113 found (1f7113d0e100000) @ 0x4a (em28xx #0) attach_inform: saa7113 detected. em28xx #0: V4L2 device registered as /dev/video0 em28xx #0: Found Pinnacle Dazzle DVC 100 em28xx audio device (2304:021a): interface 1, class 1 em28xx audio device (2304:021a): interface 2, class 1 usbcore: registered new driver snd-usb-audio D'après les infos ci-dessus, la sortie video s'effectuera sur /dev/video0. Pour déterminer où se fera la sortie audio, il suffit de taper la commande: more /proc/asound/cards

On obtient alors quelque chose de similaire à: 0 [CK804 ]: NFORCE - NVidia CK804

                     NVidia CK804 with ALC850 at 0xfe02d000, irq 217
1 [DVC100         ]: USB-Audio - DVC100
                     Pinnacle Systems GmbH DVC100 at usb-0000:00:02.1-9, high speed

Cela signifie que la sortie audio s'effectuera sur /dev/dsp1