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


[Présentation générale | Présentation des biblio et modules | Présentation des outils de contrôle, d'acquisition, d'édition et d'export vidéo | Installation des modules ( les modules de base , le module dv1394 ) | Installation de libraw1394  |  Installation de libdc1394 | Installation de libavc1394 | Installation de libdv ( tarball , package Mandrake ) | Installation de  libiec61883 | Installation de gscanbus | Acquisition vidéo avec dvgrab]

Dernière modification 21 décembre 2011

Outils de base pour piloter un caméscope DV

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

Présentation générale

Cette page a pour but de présenter les étapes qui ont été nécessaires à la reconnaissance d'un caméscope DV pour l'acquisition, l'édition vidéo et l'export vers le caméscope pour enregistrement à partir d'une distribution linux Mandrake 8.X et supérieur. Le caméscope utilisé pour le test est un Canon MV530i avec la  carte d'acquisition  ieee1394 PCI qui est fournie avec.
Le noyau de la Mandrake/Mandriva ainsi que celui de la plupart des distributions linux récentes est configuré par défaut avec la prise en compte de la liaison ieee1394.

Quelques définitions d'abord, la liaison IEEE1394, connue aussi comme liaison Firewire (dénomination Apple) ou i-link (dénomination Sony), est une liaison numérique haut débit entre l'ordinateur et un certain nombre de périphériques compatibles ieee1394 dont font parti les caméscopes DV. Votre ordinateur doit être doté d'une carte bus ieee1394 permettant la connexion de plusieurs périphériques ieee1394. Cette carte doit être compatible OHCI (Open Host Controller Interface  Standard), c'est un standard qui a été mis au point par de grands constructeurs pour obtenir une compatibilité entre les logiciels et et les matériels. Assurez vous de cela si vous voulez la faire fonctionner sous Linux. A noter maintenant que beaucoup de cartes mères intègrent une entrée ieee1394.

Toutes les manip décrites dans cette page sont à faire en tant que simple utilisateur sauf mention du contraire.

Présentation des biblio et modules

Voici maintenant une brêve description des outils qui sont présentés dans cette page

La page officielle des modules ieee1394 gérant la liaison de bas niveau se trouve http://www.linux1394.org/vous y trouverez une tonne d'information. C'est ici qu'on trouvera les modules raw1394 gérant les couches de très bas niveau et vidéo1394.

Le module video1394 sert essentiellement pour  l'exportation de flux vidéos DV vers le caméscope DV. Ca ne peut marcher que si votre caméscope a évidemment une entrée DV, mais aussi si votre carte ieee1394 est compatible OHCI.

Le module dv1394 est une alternative plus performante à video1394.

libraw1394 est une bibliothèque de fonctions indépendantes du matériel fournissant un accès direct au périphérique IEEE1394, à travers le module raw1394. elle est utilisée par toutes les applis.

libdc1394 est une bibliothèque fournissant des fonctions spécialisées dans le contrôle de caméscopes numériques compatibles ieee1394.

libdv est une bibliothèque permettant de décoder le flux vidéo DV. En d'autres termes c'est un CODEC pour les vidéos DV.

libavc1394 est une bibliothèque permettant de contrôler une interface ieee1394 compatible AV/C (Audio/Video Control). C'est grâce à cette biblio qu'on peut contrôler un caméscope DV à partir d'une interface graphique sous linux. Elle permet aussi de pouvoir lire la ROM de config des périphériques compatibles. 

libiec61883 se veut une alternative plus performante au module dv1394, il est utilisé maintenant par défaut par kino par exemple

Présentation des outils de contrôle, d'acquisition, d'édition et d'export vidéo

Maintenant après les biblio et autres modules, une présentation succinte des outils présentées sur cette page et ailleurs.

gscanbus est un outil bien utile, il permet de visualiser graphiquement votre carte ieee1394 et tous les périphériques compatibles qui y sont connectés. On peut ainsi obtenir une tonne d'information sur la carte elle même mais aussi sur les périphériques. A noter qu'il peut contrôler un caméscope DV (lancement de la lecture, rembobinage, ...).

dvgrab permet de faire la capture de flux vidéo DV provenant d'un caméscope (via la carte ieee1394) et de l'archiver au format avi. Le fichier avi peut ensuite être manipulé dans un logiciel de lecture ou d'édition sous linux mais aussi sous windows. C'est une commande en ligne.

kino est un logiciel graphique de haut niveau permettant la capture vidéo de caméscope DV, le montage, et l'export de vidéos "montées" vers le caméscope. Il se base sur les bibliothèques et commandes en ligne présentées précédemment.

Installation des modules ieee1394

Les modules de base

Tous les modules ieee1394 (video1394, raw1394, ohci1394, dv1394, ...) sont maintenant intégrés de fait dans les noyaux récents de distributions Linux récentes. Si ce n'est pas le cas, upgradez votre noyau !

Si vous avez au moins une entrée/sortie firewire (sur la carte mère ou sur une carte dédiée ieee1394), par défaut les modules ieee1394 et ohci1394 sont lancés par défaut. Pour vous en convaincre, il suffit de taper en tant que root

lsmod | grep 1394

Dans l'hypothèse où ils ne sont pas lancés taper

modprobe ohci1394
modprobe ieee1394

Il ne manque plus que de lancer les modules raw1394 et video1394. Pour cela il suffit de taper

modprobe raw1394
modprobe video1394

Un coup d'oeil dans /var/log/messages

Sep 14 09:13:09 asterix kernel: ohci1394: $Rev: 555 $ Ben Collins <bcollins@debian.org>
Sep 14 09:13:09 asterix kernel: PCI: Found IRQ 5 for device 00:0b.0
Sep 14 09:13:09 asterix kernel: ohci1394_0: Unexpected PCI resource length of 1000!
Sep 14 09:13:09 asterix kernel: ohci1394_0: OHCI-1394 1.0 (PCI): IRQ=[5]  MMIO=[da000000-da000800]  Max Packet=[2048]
Sep 14 09:13:26 asterix kernel: raw1394: /dev/raw1394 device initialized
Sep 14 09:13:33 asterix kernel: video1394: Installed video1394 module

Sur une kubuntu 6.06 cela donne (dans /var/log/syslog)

Jul 26 16:14:44 mana kernel: [17194806.156000] ieee1394: raw1394: /dev/raw1394 device initialized
Jul 26 16:14:55 mana kernel: [17194816.692000] video1394: Installed video1394 module

On vérifie qu'ils sont bien chargés en tapant

lsmod | grep 1394

Voilà le résultat

video1394              15228  0
raw1394                23548  0
ohci1394               30028  1 video1394
ieee1394               85124  4 video1394,raw1394,sbp2,ohci1394

Pour info si je fais ll /dev/video* j'obtiens les fichiers spéciaux suivants

crw-rw----+ 1 root video  81,  0 2009-12-24 10:33 /dev/video0
crw-rw----  1 root root  171, 16 2009-12-24 10:58 /dev/video1394-0

Pour qu'au prochain reboot, raw1394 et video1394 soient chargés automatiquement, il suffit de rajouter les deux lignes modprobe plus haut à la fin du fichier /etc/rc.d/rc.local (ou /etc/rc.local sous ubuntu).

Sous ubuntu voilà ce que j'ai

/dev$ ls -l video*
lrwxrwxrwx 1 root root       11 2006-07-26 16:14 video -> video1394-0
crw-rw---- 1 root video 171, 16 2006-07-26 16:14 video1394-0

mais aussi

ls -l raw1394
crw-rw---- 1 olivier root 171, 0 2009-12-24 10:58 /dev/raw1394

Dans le cas où le fichier n'a pas été créé automatiquement par votre système (c'est le cas avec la Mandriva LE 2005), vous pouvez le faire manuellement en tapant

mkdir /dev/video1394
mknod -m 666 /dev/video1394/0 c 171 16

Au reboot de la machine, le répertoire disparaît dans ce cas rajoutez les lignes précédentes dans le fichier /etc/rc.d/rc.local


Le module dv1394

Le module dv1394 est une alternative à video1394, sans rentrer dans le détail dv1394 est réputé plus fiable  et offre plus de fonctions que video1394. A vous de faire des essais pour voir lequel est le meilleur, pour ma part la différence n'a pas été sensible.
Le site officiel de dv1394 est www.linux1394.org/dv1394.html sur une Mandriva, le module est déjà présent et opérationnel. Avant de le lancer il vous faudra arrêter d'abord video1394, on passe root et on tape

rmmod video1394

On charge maintenant dv1394

modprobe dv1394

Maintenant sous /dev/ on va retrouver un répertoire ieee1394 contenant

Name Minor Description
/dev/ieee1394/dv/host0/NTSC/in 32 pour NTSC sur le premier adaptateur
/dev/ieee1394/dv/host0/NTSC/out 33 pour NTSC sur le premier adaptateur
/dev/ieee1394/dv/host0/PAL/in 34 pour PAL sur le premier adaptateur
/dev/ieee1394/dv/host0/PAL/out 35 pour PAL sur le premier adaptateur
...
/dev/ieee1394/dv/host3/NTSC/in 44 pour NTSC sur le quatrième adaptateur
/dev/ieee1394/dv/host3/NTSC/out 45 pour NTSC sur le quatrième adaptateur
/dev/ieee1394/dv/host3/PAL/in 46 pour PAL sur le quatrième adaptateur
/dev/ieee1394/dv/host3/PAL/out 47 pour PAL sur le quatrième adaptateur

Cela signifie par exemple que pour recevoir un flux vidéo venant du caméscope DV (PAL) branché sur le premier adaptateur firewire, il faudra utiliser le fichier spécial /dev/ieee1394/dv/host0/PAL/in (en admettant que vous ayez qu'un seul périphérique firewire, sinon il faudra adapter hostX)
Vous pouvez éventuellement créer les liens suivants

ln -s /dev/ieee1394/dv/host0/PAL/in /dev/dv1394in
ln -s /dev/ieee1394/dv/host0/PAL/out /dev/dv1394out

Si vous voulez que kino utilise dv1394 il faudra lui indiquer dans les préférences.

Sur ubuntu seul le fichier correspondant à l'entrée NTSC a été créé (sous /dev/dv1394).

ls -l dv1394-0
crw-rw---- 1 root video 171, 32 2006-07-26 16:20 dv1394-0

Dans le cas où votre système n'aurait pas créé automatiquement ces fichiers (c'est le cas avec la Mandriva ou ubuntu), vous pouvez le faire manuellement

mkdir -p /dev/ieee1394/dv/host0/NTSC

mkdir -p /dev/ieee1394/dv/host0/PAL

mknod -m 666 /dev/ieee1394/dv/host0/NTSC/in c 171 32
mknod -m 666 /dev/ieee1394/dv/host0/NTSC/out c 171 33

mknod -m 666 /dev/ieee1394/dv/host0/PAL/in c 171 34
mknod -m 666 /dev/ieee1394/dv/host0/PAL/out c 171 35

Au reboot de la machine, le répertoire disparaît dans ce cas rajoutez les lignes précédentes dans le fichier /etc/rc.d/rc.local (/etc/rc.local sur ubuntu)



Installation de libraw1394

Il suffit d'installer le package libraw1394 (ainsi que libraw1394-devel, libraw1394-8 sous ubuntu), en tapant

ll /dev/raw1394

on obtient

crw-------    1 root     root     171,   0 déc 31  1969 raw1394

C'est pas cool, seul root peut accéder au périphérique, on change cela en tant que root

chmod 666 /dev/raw1394

On dispose de la commande testlibraw pour voir si tout marche bien

successfully got handle
current generation number: 1
1 card(s) found
  nodes on bus:  1, card name: ohci1394
using first card found: 1 nodes on bus, local ID is 0, IRM is 0

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

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

testing FCP monitoring on local node
got fcp command from node 0 of 8 bytes: 01 23 45 67 89 ab cd ef
got fcp response from node 0 of 8 bytes: 01 23 45 67 89 ab cd ef
testing config rom stuff
get_config_rom returned 0, romsize 64, rom_version 1
here are the first 10 quadlets:
0. quadlet: 0x9d570404
1. quadlet: 0x34393331
2. quadlet: 0x02a000e0
3. quadlet: 0x00390000
4. quadlet: 0x01733600
5. quadlet: 0x760f0300
6. quadlet: 0x28000803
7. quadlet: 0x02000081
8. quadlet: 0xc083000c
9. quadlet: 0xab030600
update_config_rom returned 0

polling for leftover messages


Installation de libdc1394

libdc est maintenant enfin fourni avec la Mandriva, pour l'installation avec le tarball l'URL officiel de libdc est http://sourceforge.net/projects/libdc1394, on décompresse l'archive en tapant

tar xvfz libdc1394-2.1.4.tar.gz

Cela donne le répertoire  libdc1394-2.1.4 dans lequel on tape successivement

./configure

make

Puis en tant que root

make install
ldconfig

Installation de libavc1394

libavc est fourni avec la Mandriva, un urpmi libavc devrait convenir. Pour ce qui concerne l'installation avec le tarball, l'URL officiel de libavc est http://sourceforge.net/projects/libavc1394, on y récupère l'archive qu'on décompresse en tapant :

tar xvfz libavc1394-0.5.4.tar.gz

Cela donne le répertoire libavc1394-0.5.4 dans lequel on tape successivement

./configure

puis make

Puis en tant que root

make install
ldconfig

Installation de libdv

Installation avec les tarballs

Préalablement sur votre Mandriva, vous devez installer les packages suivantes

libxml2-devel
 
pkgconfig
libglib1.2-devel (ou lib64glib1.2-devel pour une config 64bits)
libgtk+1.2-devel (ou lib64gtk+-devel pour une config 64bits)
libxv1-devel (lib64xv1-devel pour une config 64bits)
popt-devel (libpopt-dev sous ubuntu)

On récupèrera l'archive de libdv sur le site http://libdv.sourceforge.net/. On décompresse cette archive en tapant

tar xvfz libdv-1.0.0.tar.gz

Cela donne le répertoire libdv-1.0.0,  dans lequel on tape

./configure
make

Puis en tant que root

make install

Ce qui va installer les biblio  sous /usr/local/lib. Accessoirement vous trouverez sous libdv-1.0.0/encodedv l'exe dvconnect qui permet de récupérer des vidéos et d'envoyer aussi des vidéos vers un caméscope DV munie d'une entrée DV. Pour cette dernière fonctionnalité, il se base sur le module video1394.

[Retour haut de la page]

Installation avec le package Mandrake

Il suffit d'installer le package libdv4 avec urpmi.

[Retour haut de la page]

Installation de libiec61883

Il suffit de taper urpmi libiec61883

Installation de gscanbus

On le trouvera à l'URL http://gscanbus.berlios.de
Il faudra installer préalablement le package gtk+2-devel. On revient à l'archive qu'on décompresse en tapant

tar xvfz gscanbus-0.8.tar.gz

Cela donne le répertoire gscanbus-0.8 dans lequel on tape successivement

./configure
make

Puis en tant que root

make install

Quand on tape

gscanbus

On  obtient

On y voit la carte d'acquisition IEEE1394 et mon caméscope Canon, en cliquant sur chacun des objets on obtient un certain nombre d'informations. Pour le caméscope, on peut en plus le commander à distance.

Acquisition DV avec dvgrab

dvgrab est disponible  sur le site http://www.kinodv.org/. Il faudra installer préalablement le package libiec61883-devel. 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 sauvegarde 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.

dvgrab -autosplit=60 -f raw capture

Vous obtenez les autres options en tapant

dvgrab --help

le module raw1394 doit être chargé pour pouvoir utiliser dvgrab.

[Retour page d'accueil]