enregistrer plusieurs webcams en même temps sous Linux

liste des webcams connectées

ls /dev | grep video
video0

 

lsusb

streamer

streamer -q -c /dev/video0 -f rgb24 -r 3 -t 00:30:00 -o /chemin/outfile.avi

-t 00:30:00 30 minutes ou 0:30:0

-f format

-q quiet


To record video only in the file "webcam.avi":

mencoder tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0 -ovc lavc -o webcam.avi

To record both video and audio in the file "webcam.avi":

mencoder tv:// -tv driver=v4l2:width=320:height=240:device=/dev/video0:forceaudio:adevice=/dev/dsp -ovc lavc -oac mp3lame -lameopts cbr:br=64:mode=3 -o webcam.avi

or with ffmpeg, to record both video and audio in the file "out.mpg":

ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg

Note with ffmpeg, on my laptop, the audio was about 400 msec ahead of the video. This was easily fixed in avidemux. The mencoder command did not have the audio/video sync problem.

My Dell Studio 15's webcam is an ID: 05ca:18a1 Ricoh Co., Ltd and it works with the uvc driver.

I modified the commands to work on openSUSE. https://help.ubuntu.com/community/Webcam


mencoder tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -ofps 60 -nosound -ovc lavc -lavcopts vcodec=mjpeg -o test.avi

I can take a snapshot by streaming the video to the display:

mplayer -vf screenshot -fps 15 tv:// -tv  driver=v4l2:device=/dev/video0

and then press "s" to take a snapshot, and press "q" to quit.
That gave me 640x480 (presumeably a default resolution).

I also played with:

mplayer tv:// driver=v4l2:width=800:height=600:device=/dev/video0 -fps 15 -vf snapshot

and that gave me 800x600 video, and after I pressed 's' i obtained 800x600 in the snapshot.

I did the same for 1024x768, 1280x1024, and 1600x1200 and obtained a 1024x768, 1280x1024, and 1600x1200 video and snapshot respectively.

Note the webcam in my Dell Studio 15 laptop is not the most expensive integrated webcam on the block, so the resolutions larger than "640x480" may not be a "true" 800x600 or 1024x768, or 1280x1024 or 1600x1200 resolutions (ie I believe the images are dynamically sized up).


"Cheese" and "greenrecorder" are not designed for multi-camera use as far as I know, and "Cheese" does not do sound (audio) either. I always found "guvcview" to be better and more reliable than "Cheese".

"ZoneMinder (ZM)" and "Motion" work well with webcams and IP cameras. "Motion" is light weight on computer resources. There are instructions and other applications in the web links below.


Linux Drivers for your Webcam

take a look at “Taking snapshots from a webcam under linux” for some notes on linux kernel drivers.

using the ‘dmesg‘ command should be able to see initialization messages from the webcam and its drivers

Just a note on situations when you have more than one webcam attached to your computer. There is a bandwidth limit that you may hit with USB. I found that when I had two webcams connected to an external hub which linked into just one USB slot, when I tried to open the video stream from the second camera, with the first one already open I received a confusing error “No space left on device“. I was able to cure this by connecting the two webcams to different slots in the back of the computer and not using the hub.

Grab the video with ffmpeg

Firstly make sure you have ffmpeg and its dependencies correctly installed. Just how you install a packges varies widely for each distribution, so consult your documentation on how to install a package. For example, to install ffmpeg under Gentoo use (from the command line):

emerge ffmpeg

To record video from your web cam :

ffmpeg -an -f video4linux -s 320x240 -r 15 -i /dev/v4l/video0 -vcodec mpeg4 -vtag DIVX /tmp/out.avi

This will save video using mpeg4 encoding (which is the same as DivX) and at the default bandwidth. The default bandwidth may not provide sufficient quality, so you can increase the bandwidth and hence the quality of the encoding using the -b option like this:

ffmpeg -an -f video4linux -s 320x240 -b 600k -r 15 -i /dev/v4l/video0 -vcodec mpeg4 -vtag DIVX /tmp/out.avi


Prendre des photos/vidéos avec la webcam

Cheese : Programme permettant de prendre des photos et vidéos avec une webcam.

VLC : Programme de lecture vidéo capable de capturer votre webcam et de réaliser des captures instantanées (menu Vidéo)

guvcview : capture vidéo et audio, intéressant pour les webcams qui ne sont pas reconnues par Cheese

Camorama: Programme permettant de prendre des photos avec une webcam.

XawTV : Programme souvent utilisé pour tester les webcams !

TvTime : Programme pour regarder la télévision à partir d'une carte tuner, mais qui peut également utiliser votre webcam comme source.

Kamoso: Programme KDE permettant de prendre des photos et vidéos avec une webcam.CamStream: Programme KDE permettant de faire beaucoup de choses avec sa webcam (prendre des photos, vidéos, les envoyer par FTP, vidéo conférences, …).

wxCam : logiciel qui permet de filmer et de prendre des photos il gère le déclenchement de mouvement.

Autres

Motion, camserv, zoneminder : Logiciels permettant d'utiliser sa webcam en vidéo surveillance et comme détecteur de mouvements.

Mjpg-Streamer : Logiciel permettant d'utiliser sa webcam comme caméra-réseau et de l'afficher sur une page Web.

webcamstudio : logiciel permettant de simuler une webcam, de lui ajouter des effets,streamer une vidéo où encore de faire fonctionner des webcams réfractaires avec flashplayer ! (Equivalent de ManyCam, WebcamMax, fake webcam).

eViacam : contrôler la souris avec des mouvements de la tête.

Cameramonitor : surveiller l'état (en marche ou non) de sa Webcam, pour l'installer il suffit d'installer le paquet cameramonitor.

Sous Ubuntu 16.04, il faut télécharger et installer python-support avant d'installer cameramonitor.

PlayStation Eye webcam avec caractéristiques très avancées.

Pour tous les modèles

VLC

Le plus facile reste actuellement d'utiliser VLC pour modifier les paramètres de votre webcam. Pour cela :

Lancez l'application avec la commande :

vlc v4l2://

Allez dans Outils → Préférences > Cocher en bas à gauche de la fenêtre Paramètres → Tous,

Puis dans Lecture et Codecs → Modules d'accès → V4L. Modifiez les paramètres souhaités.

Les paramètres que vous modifiez sont conservés à la sortie du logiciel. Pour les réinitialiser utilisez le bouton en bas de la fenêtre des Préférences Rétablir les préférences.

dov4l

Le paquet dov4l est un programme qui permet de définir et d'interroger les paramètres de périphériques video4linux (luminosité, saturation…) comme les webcams.

Video0 not found

Parfois il suffit d'activer la webcam via la touche fonction + webcam de votre clavier pour que cette dernière fonctionne

Si votre logiciel de webcam vous retourne le message device video0 not found, vous pouvez demander à celui-ci d'ouvrir une webcam précise, en exécutant cette commande (en adaptant le nom de l'application) :

cheese -d /dev/video1

(attention, le chiffre à la fin n'est que indicatif, il peut changer.) FIXME Toujours valable sur des versions récentes d'Ubuntu? Si rien ne fonctionne, créez ce périphérique avec les commandes:

sudo mknod /dev/video0 c 81 0
sudo chmod 666 /dev/video0
sudo ln -s /dev/video0 /dev/video

Plusieurs entrées vidéos / définir un numéro d'attribution /dev/xxx fixe

Si vous avez plusieurs matériels liés à la vidéo, il peut y avoir des "conflits". En effet, un numéro leur est attribué aléatoirement au démarrage. Ce qui fait que si vous avez par exemple une carte tuner et une webcam, elles peuvent se voir attribuer /dev/video0 et /dev/video1 à un démarrage, et l'inverse à un autre, ce qui peut être assez agaçant à l'usage…

Gérer plusieurs entrées vidéos

Dans les navigateur basé sur Chromium, vous devez selectionner l'entrée vidéo à chaque démarrage de Ubuntu via le lien chrome://settings/content/camera ou manuellement via :

  1. Aller dans les paramètres
  2. Aller dans Paramètres du contenu
  3. Aller dans Appareil photo
  4. Selectionner l'entrée vidéo

Créer un nouveau numéro/lien fixe

Une solution est de créer des liens définitifs, /dev/tuner et /dev/webcam par exemple. Voici comment procéder :

grâce à la commande suivante, notez soigneusement les champs device et vendor :

udevadm info -a -p /sys/class/video4linux/video0 | grep -e vendor -e device

(ou video1, selon où est située votre carte)

Puis créer en su le fichier /etc/udev/rules.d/83-duplicate_devs.rules en y plaçant :

# Persistent symlinks for webcam and tuner
KERNEL=="video*", ATTRS{idProduct}=="AAAA", ATTRS{idVendor}=="BBBB", SYMLINK+="webcam"
KERNEL=="video*", ATTRS{device}=="0xCCCC", ATTRS{vendor}=="0xDDDD", SYMLINK+="tvtuner"

en prenant soin de remplacer AAAA et BBBB par les identifiants de votre webcam (cf. Prérequis), et CCCC et DDDD par le valeurs que vous venez d'obtenir.

Peut etre faut il faire quelque chose pour prendre en compte les modifications ?

Problème avec le port USB

Si vous obtenez une image noire et que dans /var/log/messages vous avez un message d'erreur du genre :

Dec  7 15:20:20 cosmos kernel: [ 2174.210525] /build/buildd/linux-ubuntu-modules-2.6.24-2.6.24/debian/build/build-generic/media/gspcav1/gspca_core.c: init isoc: usb_submit_urb(0) ret -28

Essayez de brancher la webcam sur un autre port USB, au besoin en en libérant un.

Webcam n'apparaissant pas dans la liste des périphériques

Si la webcam est désactivée dans le BIOS/UEFI, elle peut ne pas apparaître dans la liste des périphériques. Il faut donc l'activer dans le BIOS/UEFI si on souhaite la voir apparaître dans le liste des périphériques et l'utiliser.

Sur un portable il est possible que la webcam soit désactivée par les touches "Fn".

lien vers le tutoriel pour compiler les pilotes de webcam.


Enregistrer un flux vidéo avec une webcam

Camorama (Visionner un flux)

Il n’enregistre pas, ne fait que prendre des photos:

aptitude install camorama

Vous le trouvez alors dans le menu K Toutes les applications/Graphisme/Visionnaire de Webcam Camorama ou directement en ligne de commande :

camorama

 http://camorama.fixedgear.org/index.php

streamer (enregistrer en ligne de commande)

Un programme en ligne de commande pour enregistrer un flux vidéo

aptitude install streamer
exit
streamer -c /dev/video0 -f rgb24 -F mono8 -r 15 -t 00:00:20 -o outfile.avi

Ceci enregistre une video de 20 secondes (-t 00:00:20) avec le son (-F mono8). Toutes les options de streamer ainsi que les formats d’enregistrement et des exemples sont disponibles en tapant streamer -h

Motion (surveiller en ligne de commande)

Il peut visualiser plusieurs écrans en même temps, prendre des photos, des vidéos à chaque mouvement (motion) devant la webcam. Un programme pour la sécurité ou pour savoir ce se qui passe devant votre ordinateur ! Si vous ne bougez pas devant la webcam, rien ne se passera.

Installer motion

aptitude install motion

Dans le fichier /etc/motion/motion.conf, changer la ligne qui cible (target) l’enregistrement pour avoir le droit d’écriture.

Changer

target_dir /var/lib/motion/snapshots

en

target_dir /home/[user]/snapshots

exit
mkdir /home/[user]/snapshots

Motion prendra donc des snapshots (des photos).

Pour enregistrer une vidéo :

vim /etc/motion/motion.conf

Dans la ligne ffmpeg, il faut changer le « off » en « on » et vous aurez un fichier .avi dans votre target file (fichier cible). Il faut avoir installé ffmpeg avant pour que cela prenne effet.

# Encode movies in real-time (install ffmpeg before enabling).
ffmpeg_cap_new off

en

# Encode movies in real-time (install ffmpeg before enabling).
ffmpeg_cap_new on

Lancer motion :

motion

Pour arrêter motion : ctrl+c

Aller dans /home/[user]/snapshots et trouvez vos fichiers photos et votre vidéo au format avi. Vous pouvez alors utiliser un programme (Kmplayer, Totem, VLC, etc) pour visionner les enregistrements.

La page de motion :

 http://www.lavrsen.dk/twiki/bin/view/Motion/MotionGuide

VLC (enregistrer un flux et le visonner)

http://forum.ubuntu-fr.org/viewtopic.php ?pid=852128

menu fichier/ouvrir un périphérique de capture. Penser que pour le fichier « nom du périphérique vidéo », VLC met par défault /dev/video alors que la webcam est video0. Ajouter alors le 0 à la ligne : /dev/video0.

cocher la case Diffuser/Sauvegarder, puis cliquer sur le bouton Paramètres.

  •  cocher la case fichier, choisir un fichier de sauvegarde (ici /home/[user]/test.mpg)
  •  cocher la méthode d’encapsulation MPEG1 pour une compatibilité maximale avec d’autres systèmes (*)
  •  cocher codec video et choisir mp1v pour une compatibilité maximale avec d’autres systèmes (*)
  •  cocher codec audio et le laisser à mpga (*)
  •  éventuellement, cocher "Jouer en local" pour voir en direct ce qui est enregistré. Ceci n’a pas marché sous testing, l’image apparaît mais reste figée ou change toutes les 5 à 6 secondes.

Ensuite cliquer sur Ok 2 fois, et ça doit enregistrer, puis Stop pour arrêter l’enregistrement.

Pour les Codecs :

 http://wiki.videolan.org/index.php/Codec

http://www.videolan.org/ (La page du programme)

Xawtv (Enregistrer un programme TV)

Installer le programme

# aptitude install xawtv
# exit
$ xawtv

Prévu pour regarder la TV avec Linux, ce programme fonctionne aussi parfois avec les WebCams. La page du programme :

 http://linux.bytesex.org/xawtv/

Ce programme n’a pas marché malgré notre recherche ; nous arrivons sur un écran noir (freeze de l’environnement graphique) et ne pouvons enregistrer.

Xvidcap (enregistrer une vidéo qui capture votre écran) Idéal pour des tutos vidéos.

Installer Xvidcap

# aptitude install xvidcap

Soit vous le lancer en console

# exit
$ xvidcap

Soit dans le menu KDE où il apparaît : K/Toutes les applications/Multimédia/XVidCap Screen Capture X11 Screen cam. Faîtes un clic droit sur « test-0000.mpeg[0000] » et choisissez votre format vidéo et d’autres paramètres. Vous choisissez alors la dimension de votre cadre d’enregistrement et enregistrez. Un fois fini, vous arrêtez et visionnez directement votre enregistrement, par défaut, Mplayer (si installé).

Des liens pour mieux utiliser et se servir d’Xvidcap :

 http://asher256.tuxfamily.org/index.php ?2006/03/19/84-xvidcap (Blog avec tuto d’installation pour Ubuntu ainsi que les options principales)

http://xvidcap.sourceforge.net/ (la page du projet (en anglais)

et bien sur :

$ man xvidcap

Cheese (application Gnome)

« Cheese is a Photobooth-inspired GNOME application for taking pictures and videos from a webcam. It also includes fancy graphical effects based on the gstreamer-backend. » (Cheese est un photomaton et vidéo pour Gnome. Il a aussi des effets graphiques décoratifs). Ce programme est récent (première version en juin 2007).

Cheese est maintenant disponible sous Debian Testing et Sid.

# aptitude install cheese

Le site officiel (qui a changé d’adresse)

 http://www.gnome.org/projects/cheese/

Le programme marche à merveille avec les effets vidéos qui en font son originalité. Il enregistre au format .ogg en sortie.

WebKam

C’est un programme tout nouveau (14/03/2008). Destiné pour KDE4, Il y a un paquet pour « Ubuntu Hardy » seulement, mais les sources sont disponibles. Nous n’avons pas testé mais le mentionnons comme nouveauté.

A priori, il n’enregistre pas encore de flux vidéo mais prend des photos. Deux captures d’écrans sont disponibles à cette adresse : (ainsi que les sources)

 http://www.kde-apps.org/content/show.php/webKam ?content=76902

WxAstroCapture

WxAstroCapture est un programme opensource de capture vidéo initialement prévu pour l’usage astronomique, il est développé par Martin Burri (Suisse) et Carsten Arnholm (Norvège). Il est multi-plateforme (Linux et Windows). Des paquets sont disponibles pour Ubuntu et Suse.

Installation en téléchargeant le paquet pour Ubuntu par exemple.

 http://arnholm.org/astro/software/wxAstroCapture/redist/wxastrocapture_1.2-1_i386.deb

Les dépendances ne permettent pas de l’installer sur une Debian Testing pour l’instant.

Aller plus loin :

Vous aurez peut-être envie à la suite de ces enregistrements de faire du montage vidéo, nous vous conseillons une adresse en plein développement et pour les débutants, une page de ressources pour la vidéo sous Linux et un article de Coagul :

Commentaires

Bonjour, wxAstroCapture. est un soft de capture video à partir de webcam en format AVI.
Concu pour l’astronomie, il fonctionne à merveille avec ma SPC900C sous Ubuntu.

Voir sur http://arnholm.org/astro/software/wxAstroCapture/linux_deb/index.htm


voici quelques astuces qui permettent d'utiliser une webcam en ligne de commande. Pratique pour tester si votre matériel fonctionne correctement, ou alors pour faire de la vidéo surveillance à distance à l'aide d'une connexion SSH.

Dans un premier temps, il faudra obtenir le chemin du périphérique audio et vidéo de la webcam :

ls -l /dev/video*
ls -l /dev/audio*

La première astuce permet d'afficher le flux vidéo de la caméra grâce à mplayer :

mplayer tv:// -tv driver=v4l2

Si l'on veut définir un peu plus d'options, comme la résolution :

mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0

Si l'on veut enregistrer une vidéo avec mencoder, sans le son:

mencoder tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -ovc lavc -o webcam.avi

Et la même chose avec le son :

mencoder tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0:forceaudio:adevice=/dev/audio -ovc lavc -oac mp3lame -lameopts cbr:br=64:mode=3 -o webcam.avi

Pour obtenir des informations sur une webcam USB :

cat /proc/bus/input/devices

7 Commentaires pour "Utiliser une webcam en ligne de commande sous Linux"

Flux des commentaires de cet article Ajouter un commentaire

Peux t-on définir une durée d'enregistrement?

Si cette durée n'est pas définie, quel manipulation à effectuer pour stopper l'enregistrement manuellement??

il y a l'option -endpos hh:mm:ss avec mencoder qui permet de définir une durée d'enregistrement. Exemple pour enregistrer pendant une heure :

mencoder -endpos 1:00:00 ...

Sinon pour stopper manuellement l'enregistrement, il y a la combinaison de touches Ctrl + D.

Petit script de timelapse :http://pastebin.com/rs8zHCCW

D'ailleurs, vous pouvez voir le résultat :

- Depuis mon ordi portable http://www.youtube.com/watch?v=8_3XKikk34U
- Depuis mon N900 http://www.youtube.com/watch?v=KLzcReH4O-Y

On lui donne deux paramètres, le temps entre chaque images, et le nombre d'images à prendre au total.

Par exemple, "./motion.sh 30 1500" pour avoir une image toutes les 30 secondes, jusqu'à en avoir 1500.

Il enregistre $nb_frame frames (De base, 3 frames), renomme la dernière, et supprime toutes les images la précédant, pour éviter d'avoir une image verte (ça dépend de votre matériel après, pour la webcam intégrée de mon ordi portable, il sort 1-2 images vertes à chaque nouvel enregistrement depuis mplayer).

Pensez à ajouter un -tv device=/dev/video[Puis le numéro de votre webcam] en paramètre à mplayer si vous n'utilisez pas /dev/video0.
(par exemple, pour filmer depuis la caméra avant du N900, ça donnera mplayer tv:// -tv device=/dev/video1 -vo png -frames $nb_frame;)

@Gambas Eater : pas mal ton script. Enfin j'ai juste matter les vidéos, et le resultat est vraiment sympa !


To list all video devices picked up by the kernel

ls -ltrh /dev/video*

To list all devices attached to USB use lsusb ; to list all devices attached to PCI use lspci


https://www.tldp.org/HOWTO/html_single/Webcam-HOWTO/


It is possible to identify all cameras. The command

 $ sudo lsusb -v -d 046d:082d | grep -i serial
   iSerial                 1 05C6D16F

returns the Serial number of my camera (a Logitech HD Pro Webcam, used as an example with the correct Vendor:Product codes obtained from a previous use of lsusb). Please notice that the use of sudo is absolutely necessary: an unprivileged user does not get access to all info available thru the command.

The serial number is often, but not always, unique. If it is not unique (just compare the output of the above commands for two devices with the same Vendor:Product codes), you can set them so that they are distinct. There are guides all over Google for doing that, I will merely point to a couple of them, for the sake of thoroughness: here and here. But remember, this is a device-dependent procedure, so you will have to find out how to do it for your very own camera.

Now the command

$ sudo udevadm info --query=all /dev/video1 | grep 'VENDOR_ID\|MODEL_ID\|SERIAL_SHORT'
  E: ID_MODEL_ID=082d
  E: ID_SERIAL_SHORT=05C6D16F
  E: ID_VENDOR_ID=046d

returns the appropriate codes for this particular camera. Trial and error with all /dev/videoX devices allows pigeon-holing all of them.


 


 


 

 

 

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *