« Numériser une cassette VHS sous Linux » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
m (Numériser vos anciennes cassettes VHS sous Linux déplacé vers Numériser une cassette VHS sous Linux)
Aucun résumé des modifications
 
(5 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Catégorie:Créer_ses_CD_et_DVD]]
= Numériser une cassette VHS sous GNU/Linux =
= 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 [http://www.kinodv.org/ kino] et être transférés sur un DVD, par exemple en utilisant l'excellent [http://kde-apps.org/content/show.php?content=38347 mandvd].
== Résumé ==
 
Cet article propose une solution matérielle et logicielle simple pour numériser des cassettes VHS sous GNU/Linux. Les fichiers obtenus peuvent ensuite être édités par un logiciel de montage vidéo comme [http://www.kinodv.org/ kino] et être transférés sur un DVD, par exemple en utilisant l'excellent [http://kde-apps.org/content/show.php?content=38347 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.  
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.  


= Le boîtier d'acquisition vidéo ''Dazzle DVD Recorder'' =
== 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 [http://www.pinnaclesys.com/PublicSite/fr/Products/Consumer+Products/Dazzle/Dazzle+Video+Archiving/Dazzle+DVD+Recorder+Documents/Technical+Specifications/Tech+Spec+Dazzle+DVD+Recorder_FR.htm Dazzle DVD Recorder] de chez Pinnacle, également connu sous le nom de ''Pinnacle Dazzle DVC 100''. Il y a trois raisons à ce choix:
À 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 [http://www.pinnaclesys.com/PublicSite/fr/Products/Consumer+Products/Dazzle/Dazzle+Video+Archiving/Dazzle+DVD+Recorder+Documents/Technical+Specifications/Tech+Spec+Dazzle+DVD+Recorder_FR.htm Dazzle DVD Recorder] de chez Pinnacle, également connu sous le nom de ''Pinnacle Dazzle DVC 100''. Il y a trois raisons à ce choix:


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


2/ son faible prix: 59 euros
2/ son faible prix: 59 euros
Ligne 13 : Ligne 16 :
3/ il est supporté par le noyau Linux ! (moyennant une petite modification, décrite ci-desous, pour la lecture en mode SECAM).
3/ il est supporté par le noyau Linux ! (moyennant une petite modification, décrite ci-desous, pour la lecture en mode SECAM).


= Installations logicielles nécessaires =
== 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 [http://linuxtv.org/v4lwiki/index.php/Main_Page Video4Linux] (plus précisément le driver [http://mcentral.de/wiki/index.php/Em2880 Em2880]). En fait la version du driver nécessaire n'est pas encore incluse dans les noyaux Linux des distributions récentes. Il faut donc l'installer "à la main". Nous décrivons ci-après la procédure d'installation pour une distribution Mandriva 2007, l'adaptation à une autre distribution Linux ne devant pas poser de problème.


Pour faire fonctionner le boîtier ''Dazzle DVD Recorder'', il est nécessaire d'installer des modules du noyau Linux, issus du projet [http://linuxtv.org/v4lwiki/index.php/Main_Page Video4Linux]. Nous décrivons ci-après la procédure d'installation pour une distribution Mandriva 2007, l'adaptation à une autre distribution Linux ne devant pas poser de problème.
<cadre type="note"><u>Note</u> : d'après ce [http://forum.ubuntu-fr.org/viewtopic.php?id=152173 forum] il semble que sur des noyaux plus récents, on puisse simplement patcher les sources du noyau afin de faire fonctionner le Dazzle. Cependant la méthode présentée ci-dessous a l'avantage d'être sûr de disposer de la toute dernière version du driver.</cadre>


----
----
Ligne 26 : Ligne 31 :
'''2ème étape: installation des sources des modules v4l (Video4Linux)'''
'''2ème étape: installation des sources des modules v4l (Video4Linux)'''


Les sources des modules [http://linuxtv.org/v4lwiki/index.php/Main_Page v4l] s'installent via le logiciel [http://www.selenic.com/mercurial/wiki/ mercurial] (gestionnaire de codes sources). Aussi, il faut installer ce dernier au pré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
Les sources des modules [http://linuxtv.org/v4lwiki/index.php/Main_Page v4l] s'installent via le logiciel [http://www.selenic.com/mercurial/wiki/ mercurial] (gestionnaire de codes sources). Aussi, il faut installer ce dernier au pré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 depuis le site de développement du module [http://mcentral.de/wiki/index.php/Em2880 Em2880/DVC 100] en tapant la commande
<code>hg clone http://linuxtv.org/hg/~mrechberger/v4l-dvb-kernel-history
<div class="code">hg clone http://mcentral.de/hg/~mrec/v4l-dvb-kernel</div>
</code>
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 :  
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:  
<div class="code">mv v4l-dvb-kernel /usr/local/src</div>
<code>mv v4l-dvb-kernel /usr/local/src
</code>


----
----
Ligne 38 : Ligne 41 :
Il y a deux petites modifications des sources [http://linuxtv.org/v4lwiki/index.php/Main_Page v4l ] à effectuer avant de procéder à la
Il y a deux petites modifications des sources [http://linuxtv.org/v4lwiki/index.php/Main_Page v4l ] à effectuer avant de procéder à la
compilation. La première permet de régler un problème de compilation avec le fichier dvb_net.c téléchargé par mercurial à l'étape précédente: on remplace ce fichier par celui des sources de la Mandriva 2007:  
compilation. La première permet de régler un problème de compilation avec le fichier dvb_net.c téléchargé par mercurial à l'étape précédente: on remplace ce fichier par celui des sources de la Mandriva 2007:  
<code>cp /usr/src/linux-2.6.17-5mdv/drivers/media/dvb/dvb-core/dvb_net.c \
<div class="code">
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/  
/usr/local/src/v4l-dvb-kernel/linux/drivers/media/dvb/dvb-core/  
</code>
</div>


La deuxième modification des sources consiste à ajouter le mode SECAM au driver em28xx/DVC 100. Sans cette modification, l'acquisition vidéo ne s'effectuerait qu'en mode PAL, avec la conséquence fâcheuse de la perte des couleurs (vidéo en noir et blanc). Ajouter le mode SECAM n'est pas très compliqué: il suffit d'ouvrir le fichier  
La deuxième modification des sources consiste à ajouter le mode SECAM au driver em28xx/DVC 100. Sans cette modification, l'acquisition vidéo ne s'effectuerait qu'en mode PAL, avec la conséquence fâcheuse de la perte des couleurs (vidéo en noir et blanc). Ajouter le mode SECAM n'est pas très compliqué: il suffit d'ouvrir le fichier  
<code>/usr/local/src/v4l-dvb-kernel/linux/drivers/media/video/em28xx/em28xx-cards.c</code> dans un éditeur de texte (par exemple kwrite ou emacs), de chercher la ligne contenant EM2820_BOARD_PINNACLE_DVC_100 et d'ajouter
<b>/usr/local/src/v4l-dvb-kernel/linux/drivers/media/video/em28xx/em28xx-cards.c</b> dans un éditeur de texte (par exemple kwrite ou emacs), de chercher la ligne contenant EM2820_BOARD_PINNACLE_DVC_100 et d'ajouter
<code multi>
<div class="code">
{
{
.name = "SECAM",
.name = "SECAM",
.id = V4L2_STD_SECAM,
.id = V4L2_STD_SECAM,
}
}
</code>
</div>
dans la liste .tvnorms, de sorte qu'elle devienne
dans la liste .tvnorms, de sorte qu'elle devienne
<code multi>
<div class="code">
.tvnorms = {
.tvnorms = {
{
{
.name = "SECAM",
.name = "SECAM",
.id = V4L2_STD_SECAM,
.id = V4L2_STD_SECAM,
},{
},{
.name = "PAL-BG",
.name = "PAL-BG",
.id = V4L2_STD_PAL_BG,
.id = V4L2_STD_PAL_BG,
}},
}},
</code>
</div>
au lieu de  
au lieu de  
<code multi>
<div class="code">
.tvnorms = {
.tvnorms = {
{
{
.name = "PAL-BG",
.name = "PAL-BG",
.id = V4L2_STD_PAL_BG,
.id = V4L2_STD_PAL_BG,
}},
}},
</code>
</div>


Pour vérification, voici le passage considéré après modification:
Pour vérification, voici le passage considéré après modification:
<code multi>
<div class="code">
[EM2820_BOARD_PINNACLE_DVC_100] = {
[EM2820_BOARD_PINNACLE_DVC_100] = {
.name        = "Pinnacle Dazzle DVC 100",
.name        = "Pinnacle Dazzle DVC 100",
.vchannels    = 3,
.vchannels    = 3,
.norm        = V4L2_STD_PAL_BG,
.norm        = V4L2_STD_PAL_BG,
.has_tuner    = 0,
.has_tuner    = 0,
.decoder      = EM28XX_SAA7113,
.decoder      = EM28XX_SAA7113,
.dev_modes      = EM28XX_VIDEO,
.dev_modes      = EM28XX_VIDEO,
.input          = {{
.input          = {{
.type    = EM28XX_VMUX_COMPOSITE1,
.type    = EM28XX_VMUX_COMPOSITE1,
.vmux    = SAA7115_COMPOSITE0,
.vmux    = SAA7115_COMPOSITE0,
.amux    = 1,
.amux    = 1,
},{
.type    = EM28XX_VMUX_SVIDEO,
.vmux    = SAA7115_SVIDEO3,
.amux    = 1,
}},
.tvnorms = {
{
.name = "SECAM",
.id = V4L2_STD_SECAM,
},{
},{
.type    = EM28XX_VMUX_SVIDEO,
.name = "PAL-BG",
.vmux    = SAA7115_SVIDEO3,
.id = V4L2_STD_PAL_BG,
.amux    = 1,
}},
}},
},
.tvnorms = {
</div>
{
''Remarque:'' le fichier source <b>em28xx-cards.c</b> semble évoluer très vite, sous l'effet du travail des développeurs du driver [http://mcentral.de/wiki/index.php/Em2880 Em2880]. Il se peut donc très bien que la version que vous avez téléchargée contienne déjà le mode SECAM, auquel cas la modification ci-dessus n'est pas nécessaire.
.name = "SECAM",
.id = V4L2_STD_SECAM,
},{
.name = "PAL-BG",
.id = V4L2_STD_PAL_BG,
}},
},
</code>
 
----
----
'''4ème étape: compilation et installation des modules v4l'''
'''4ème étape: compilation et installation des modules v4l'''


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


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


----
----
Ligne 122 : Ligne 128 :


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:
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:
<code>modprobe em28xx
<div class="code">modprobe em28xx</div>
</code>
Si tout va bien, on doit avoir la sortie suivante lorsque qu'on tape la commande <div class="code">lsmod | grep em28</div> :  
Si tout va bien, on doit avoir la sortie suivante lorsque qu'on tape la commande <code>lsmod | grep em28</code> :  
<div class="code">
<code>em28xx                100024  0
em28xx                100024  0
compat_ioctl32        13184  1 em28xx
compat_ioctl32        13184  1 em28xx
ir_common              35076  1 em28xx
ir_common              35076  1 em28xx
videodev              28928  1 em28xx
videodev              28928  1 em28xx
v4l1_compat            16644  2 em28xx,videodev
v4l1_compat            16644  2 em28xx,videodev
v4l2_common            28160  3 em28xx,compat_ioctl32,videodev
v4l2_common            28160  3 em28xx,compat_ioctl32,videodev
tveeprom              23056  1 em28xx
tveeprom              23056  1 em28xx
i2c_core              23424  2 em28xx,tveeprom
i2c_core              23424  2 em28xx,tveeprom
usbcore              129696  4 em28xx,ehci_hcd,ohci_hcd
usbcore              129696  4 em28xx,ehci_hcd,ohci_hcd
</code>
</div>
Par ailleurs, la commande <code>dmesg</code> doit retourner:
Par ailleurs, la commande <div class="code">dmesg</div> doit retourner:
<code>Linux video capture interface: v2.00
<div class="code">
em28xx v4l2 driver version 0.0.1 loaded
Linux video capture interface: v2.00
usbcore: registered new driver em28xx
em28xx v4l2 driver version 0.0.1 loaded
</code>
usbcore: registered new driver em28xx
 
</div>


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


On obtient alors quelque chose de similaire à:
On obtient alors quelque chose de similaire à:
<code> 0 [CK804          ]: NFORCE - NVidia CK804
<div class="code">
0 [CK804          ]: NFORCE - NVidia CK804
                       NVidia CK804 with ALC850 at 0xfe02d000, irq 217
                       NVidia CK804 with ALC850 at 0xfe02d000, irq 217
  1 [DVC100        ]: USB-Audio - DVC100
  1 [DVC100        ]: USB-Audio - DVC100
                       Pinnacle Systems GmbH DVC100 at usb-0000:00:02.1-9, high speed
                       Pinnacle Systems GmbH DVC100 at usb-0000:00:02.1-9, high speed
</code>
</div>
Cela signifie que la sortie audio s'effectuera sur /dev/dsp1
Cela signifie que la sortie audio s'effectuera sur /dev/dsp1




= Acquisition vidéo =
== Acquisition vidéo ==


La lecture vidéo se fait en utilisant [http://www.mplayerhq.hu/ Mplayer], via la ligne de commande suivante:
La lecture vidéo se fait en utilisant [[MPlayer]], via la ligne de commande suivante:


<code>mplayer tv:// -tv driver=v4l2:norm=SECAM:audiorate=44100:immediatemode=0:forceaudio:adevice=/dev/dsp1
<div class="code">
</code>
mplayer tv:// -tv \
driver=v4l2:norm=SECAM:audiorate=44100:immediatemode=0:forceaudio:adevice=/dev/dsp1
</div>


En fait le paramètre "norm=SECAM" n'est pas nécessaire si on a mis SECAM avant PAL-BG dans la modification du fichier em28xx-cards.c effectuée plus haut: le premier paramètre est en effet celui pris par défaut.
En fait le paramètre "norm=SECAM" n'est pas nécessaire si on a mis SECAM avant PAL-BG dans la modification du fichier em28xx-cards.c effectuée plus haut: le premier paramètre est en effet celui pris par défaut.
Ligne 217 : Ligne 228 :
Pour l'encodage du flux vidéo, on utilise [http://www.mplayerhq.hu/ Mencoder], suivant:
Pour l'encodage du flux vidéo, on utilise [http://www.mplayerhq.hu/ Mencoder], suivant:


<code>sudo nice --10 mencoder tv:// -tv driver=v4l2:width=720:height=576:norm=SECAM:audiorate=44100:immediatemode=0:forceaudio:adevice=/dev/dsp1 -o resultat.avi -ovc lavc -lavcopts vcodec=mjpeg:aspect=4/3 -aspect 4:3 -noautoexpand -oac pcm -endpos 01:00:00
<div class="code">
</code>
sudo nice --10 mencoder tv:// -tv \
driver=v4l2:width=720:height=576:norm=SECAM:audiorate=44100:immediatemode=0:forceaudio:adevice=/dev/dsp1 \
-o resultat.avi -ovc lavc -lavcopts vcodec=mjpeg:aspect=4/3 -aspect 4:3 \
-noautoexpand -oac pcm -endpos 01:00:00
</div>


Cette commande crée le fichier resultat.avi qui contient la vidéo lue au format [http://www.animemusicvideos.org/guides/avtechbeta/video4.htm MJPEG]. L'argument -endpos indique la durée d'enregistrement est doit être adapté à votre cas:
Cette commande crée le fichier resultat.avi qui contient la vidéo lue au format [http://www.animemusicvideos.org/guides/avtechbeta/video4.htm MJPEG]. L'argument -endpos indique la durée d'enregistrement est doit être adapté à votre cas:
Ligne 227 : Ligne 242 :
Pour pouvoir éditer le fichier vidéo obtenu à l'aide de [http://www.kinodv.org/ kino], il faut le convertir auparavant au format [http://www.animemusicvideos.org/guides/avtechbeta/video4.htm DV], seul format lu par kino.
Pour pouvoir éditer le fichier vidéo obtenu à l'aide de [http://www.kinodv.org/ kino], il faut le convertir auparavant au format [http://www.animemusicvideos.org/guides/avtechbeta/video4.htm DV], seul format lu par kino.
Cela s'effectue par la commande [http://ffmpeg.mplayerhq.hu/ ffmpeg] :
Cela s'effectue par la commande [http://ffmpeg.mplayerhq.hu/ ffmpeg] :
<code>ffmpeg -i resultat.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 resultat.dv
<div class="code">ffmpeg -i resultat.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 resultat.dv</div>
</code>
On peut alors importer le fichier resultat.dv dans kino. Une fois le montage terminé, il faut l'exporter au format DVD (MPEG2) depuis kino. La gravure sur DVD peut alors s'effectuer à l'aide de [http://kde-apps.org/content/show.php?content=38347 mandvd] ou [http://www.dvdstyler.de/ dvdstyler].
On peut alors importer le fichier resultat.dv dans kino. Une fois le montage terminé, il faut l'exporter au format DVD (MPEG2) depuis kino. La gravure sur DVD peut alors s'effectuer à l'aide de [http://kde-apps.org/content/show.php?content=38347 mandvd] ou [http://www.dvdstyler.de/ dvdstyler].
<br/>
<br/>
'''<b>[[Matériel|@ Retour à la rubrique Matériel]]</b>'''
<br/>




{{Copy|2007|Eric Gourgoulhon|CC-BY-SA}}
{{Copy|2007|Eric Gourgoulhon|CC-BY-SA}}
[[Catégorie:Matériel]]

Dernière version du 28 décembre 2023 à 16:48

Numériser une cassette VHS sous GNU/Linux

Résumé

Cet article propose une solution matérielle et logicielle simple pour numériser des cassettes VHS sous GNU/Linux. Les fichiers obtenus peuvent ensuite être édités par un logiciel de montage vidéo comme kino et être transféré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.

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 de chez Pinnacle, également connu sous le nom de Pinnacle Dazzle DVC 100. 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 supporté par le noyau Linux ! (moyennant 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 (plus précisément le driver Em2880). En fait la version du driver nécessaire n'est pas encore incluse dans les noyaux Linux des distributions récentes. Il faut donc l'installer "à la main". Nous décrivons ci-après la procédure d'installation pour une distribution Mandriva 2007, l'adaptation à une autre distribution Linux ne devant pas poser de problème.

<cadre type="note">Note : d'après ce forum il semble que sur des noyaux plus récents, on puisse simplement patcher les sources du noyau afin de faire fonctionner le Dazzle. Cependant la méthode présentée ci-dessous a l'avantage d'être sûr de disposer de la toute dernière version du driver.</cadre>


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 pré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 depuis le site de développement du module Em2880/DVC 100 en tapant la commande

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 (ajout du mode SECAM)

Il y a deux petites modifications des sources v4l à effectuer avant de procéder à la compilation. La première permet de régler un problème de compilation avec le fichier dvb_net.c téléchargé par mercurial à l'étape précédente: 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/

La deuxième modification des sources consiste à ajouter le mode SECAM au driver em28xx/DVC 100. Sans cette modification, l'acquisition vidéo ne s'effectuerait qu'en mode PAL, avec la conséquence fâcheuse de la perte des couleurs (vidéo en noir et blanc). Ajouter le mode SECAM n'est pas très compliqué: il suffit d'ouvrir le fichier /usr/local/src/v4l-dvb-kernel/linux/drivers/media/video/em28xx/em28xx-cards.c dans un éditeur de texte (par exemple kwrite ou emacs), de chercher la ligne contenant EM2820_BOARD_PINNACLE_DVC_100 et d'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, }},

},

Remarque: le fichier source em28xx-cards.c semble évoluer très vite, sous l'effet du travail des développeurs du driver Em2880. Il se peut donc très bien que la version que vous avez téléchargée contienne déjà le mode SECAM, auquel cas la modification ci-dessus n'est pas nécessaire.


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


Acquisition vidéo

La lecture vidéo se fait en utilisant MPlayer, via la ligne de commande suivante:

mplayer tv:// -tv \
driver=v4l2:norm=SECAM:audiorate=44100:immediatemode=0:forceaudio:adevice=/dev/dsp1

En fait le paramètre "norm=SECAM" n'est pas nécessaire si on a mis SECAM avant PAL-BG dans la modification du fichier em28xx-cards.c effectuée plus haut: le premier paramètre est en effet celui pris par défaut.

Pour l'encodage du flux vidéo, on utilise Mencoder, suivant:

sudo nice --10 mencoder tv:// -tv \
driver=v4l2:width=720:height=576:norm=SECAM:audiorate=44100:immediatemode=0:forceaudio:adevice=/dev/dsp1 \
-o resultat.avi -ovc lavc -lavcopts vcodec=mjpeg:aspect=4/3 -aspect 4:3 \
-noautoexpand -oac pcm -endpos 01:00:00

Cette commande crée le fichier resultat.avi qui contient la vidéo lue au format MJPEG. L'argument -endpos indique la durée d'enregistrement est doit être adapté à votre cas: -endpos hh:mm:ss : dans le cas présent endpos 01:00:00 signifie 1 heure. La commande mencode doit être lancée en tant que root (d'où le sudo) avec nice --10, pour lui assurer un haut degré de priorité. Il s'agit en effet d'un enregistrement en temps réel (la bande défile dans le magnétoscope de manière irréversible...) et rien ne doit pouvoir freiner le déroulement de mencoder. C'est également pour cette raison que le format d'encodage choisi est MJPEG: ce dernier n'offre certes pas un taux de compression très important (rien à voir avec MPEG4 ou Xvid !), mais il n'est pas gourmand en temps de calcul.

Montage vidéo et transfert vers un DVD

Pour pouvoir éditer le fichier vidéo obtenu à l'aide de kino, il faut le convertir auparavant au format DV, seul format lu par kino. Cela s'effectue par la commande ffmpeg :

ffmpeg -i resultat.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 resultat.dv

On peut alors importer le fichier resultat.dv dans kino. Une fois le montage terminé, il faut l'exporter au format DVD (MPEG2) depuis kino. La gravure sur DVD peut alors s'effectuer à l'aide de mandvd ou dvdstyler.



@ Retour à la rubrique Matériel


Copyright

© 2007 Eric Gourgoulhon

Creative Commons License
Creative Commons Attribution iconCreative Commons Share Alike icon
Ce document est publié sous licence Creative Commons
Attribution, Partage à l'identique 4.0 :
https://creativecommons.org/licenses/by-sa/4.0/