Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
webcamvirtuelle [Le 26/06/2008, 15:45]
79.83.68.247, 127.0.0.1
webcamvirtuelle [Le 11/09/2022, 11:49] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-====== Webcam Virtuelle ​ ======+{{tag>​webcam}}
  
 +----
 +====== Webcam virtuelle ======
  
- +Il peut s'​avérer utile de pouvoir utiliser une webcam virtuelle sur sa messagerie instantanée préférée ​(Chatroulette,​ [[visioconference?&#​wwwblog-videotv|blog-vidéo]] etc.) afin de pouvoir faire visionner la dernière vidéo ​familiale ​à un proche sans avoir besoin de filmer un écran avec sa webcam.
-===== Explication ===== +
-Il peut s'​avérer utile de pouvoir utiliser une webcam virtuelle sur son Instant Messenger préféré ​(amsn...) afin de pouvoir faire visionner la dernière vidéo ​familliale ​à un proche sans avoir besoin de filmer un écran avec sa webcam.+
  
 Cet article traite donc de la façon dont il faut procéder afin de créer une fausse webcam sur son système et de pouvoir écrire une vidéo dessus qui sera retranscrit comme si on visionnait ce qu'une webcam peut filmer. Cet article traite donc de la façon dont il faut procéder afin de créer une fausse webcam sur son système et de pouvoir écrire une vidéo dessus qui sera retranscrit comme si on visionnait ce qu'une webcam peut filmer.
- 
-Tout d'​abord je dirais un grand merci au nom de toute la communauté d'​ubuntu à ALLONLINUX qui a créé le driver permettant ceci. 
-l'​article original se trouvant ici : http://​allonlinux.free.fr/​Projets/​AVLD/​ 
  
  
 ===== Installation ===== ===== Installation =====
-Pour installer le pilote, nous allons avoir besoin d'​installer quelques ​packages ​contenant des outils ou des données précieuses. + 
-Installons les packages ​nécessaires comme suit :+Pour installer le pilote, nous allons avoir besoin d'​installer quelques ​paquets ​contenant des outils ou des données précieuses. 
 +Installons les paquets ​nécessaires comme suit :
 <​code>​sudo apt-get install build-essential linux-headers-`uname -r` mencoder</​code>​ <​code>​sudo apt-get install build-essential linux-headers-`uname -r` mencoder</​code>​
-Ensuite, téléchargeons le driver ​et installons le  : + 
-<​code>​wget http://​allonlinux.free.fr/​Projets/​AVLD/​src/​avld_0.1.3.tar.bz2 +Ensuite, téléchargeons le pilote ​et installons-le  : 
-tar -jxf avld_0.1.3.tar.bz2+ 
 +<​code>​ 
 +wget http://​allonlinux.free.fr/​Projets/​AVLD/​src/​avld_0.1.4.tar.bz2 
 +tar -jxf avld_0.1.4.tar.bz2
 mv avld* /opt mv avld* /opt
 cd /opt/avld* cd /opt/avld*
-make && sudo make install</​code>​ +make && sudo make install 
-Maintenant que le driver ​est installé, il nous suffit de le charger et d'​automatiser le chargement automatique au démarrage : +</​code>​ 
-<​code>​sudo modprobe avld + 
-sudo echo "​avld">>/​etc/​modules</​code>​+Maintenant que le pilote ​est installé, il nous suffit de le charger et d'​automatiser le chargement automatique au démarrage : 
 + 
 +<​code>​ 
 +sudo modprobe avld 
 +sudo echo "​avld">>/​etc/​modules 
 +</​code>​
  
  
  
 ===== Utilisation ===== ===== Utilisation =====
-Il faut au préalable connaître la résolution de votre vidéo (information que l'on peut aisément obtenir en allant en mode graphique dans les propriétés du fichier vidéo qui nous intèresse), ici on dira que notre vidéo est en 800x600.\\+ 
 +Il faut au préalable connaître la résolution de votre vidéo (information que l'on peut aisément obtenir en allant en mode graphique dans les propriétés du fichier vidéo qui nous intéresse), ici on dira que notre vidéo est en 800x600.\\
 On rentre donc la commande suivante afin de mettre notre webcam virtuelle à la bonne taille : On rentre donc la commande suivante afin de mettre notre webcam virtuelle à la bonne taille :
 +
 <​code>​echo "​width=800 height=600 fps=25"​ > /​dev/​video0</​code>​ <​code>​echo "​width=800 height=600 fps=25"​ > /​dev/​video0</​code>​
 +
 (ou /dev/video1 si vous avez déjà charger un autre périphérique vidéo auparavant comme une webcam ou un tuner...) (ou /dev/video1 si vous avez déjà charger un autre périphérique vidéo auparavant comme une webcam ou un tuner...)
 Maintenant pour écrire la vidéo sur le périphérique virtuel il suffit d'​utiliser la commande suivante : Maintenant pour écrire la vidéo sur le périphérique virtuel il suffit d'​utiliser la commande suivante :
 +
 <​code>​mencoder my_movie.*** -nosound -ovc raw -vf format=bgr24 -of rawvideo -o /​dev/​video0</​code>​ <​code>​mencoder my_movie.*** -nosound -ovc raw -vf format=bgr24 -of rawvideo -o /​dev/​video0</​code>​
-(même remarque concernant /​dev/​video0... )\\ +
-Pour visualiser le résultat, vous pouvez soit aller dans votre Instant Messenger préféré et voir ce que ça donne sur l'​aperçut webcam soit utiliser la commande suivante :  +
-<​code>​mplayer tv:// -tv "​driver=v4l:​device=/​dev/​video0:​noaudio:​outfmt=rgb24"</​code>​+
 (même remarque concernant /​dev/​video0... ) (même remarque concernant /​dev/​video0... )
  
 +Pour visualiser le résultat, vous pouvez soit aller dans votre Instant Messenger préféré et voir ce que ça donne sur l'​aperçu webcam soit utiliser la commande suivante :
  
 +<​code>​mplayer tv:// -tv "​driver=v4l:​device=/​dev/​video0:​noaudio:​outfmt=rgb24"</​code>​
  
 +(même remarque concernant /​dev/​video0... )
  
 +===== Problèmes rencontrés =====
 +==== Skype plante ====
  
-===== Mais Skype plante.... ===== 
 Alalala!!!...Sacré Skype!! il fait jamais les choses comme les autres...heureusement,​ il y a une manip pour contourner ce plantage de Skype avec l'​utilisation de AVLD... Alalala!!!...Sacré Skype!! il fait jamais les choses comme les autres...heureusement,​ il y a une manip pour contourner ce plantage de Skype avec l'​utilisation de AVLD...
 Mettons un peu la main à la pâte... Mettons un peu la main à la pâte...
-Retournons dans notre dossier où se trouve notre driver ​:+Retournons dans notre dossier où se trouve notre pilote ​:
 <​code>​cd /​opt/​avld*</​code>​ <​code>​cd /​opt/​avld*</​code>​
-Maintenant éditons le fichier video_device.c ​+Maintenant ​[[:​tutoriel:​comment_editer_un_fichier|éditons le fichier]] **video_device.c** et cherchons le passage suivant : 
-<​code>​sudo gedit video_device.c</​code>​ +<​code ​C> 
-cherchons le passage suivant : +static struct file_operations v4l_fops = {
-<​code ​java>static struct file_operations v4l_fops = {+
 owner: THIS_MODULE,​ owner: THIS_MODULE,​
 open: v4l_open, open: v4l_open,
Ligne 61: Ligne 72:
 ioctl: v4l_ioctl, ioctl: v4l_ioctl,
 llseek: no_llseek, llseek: no_llseek,
-};</​code>​ +}; 
-et ajoutons y la ligne "compat_ioctl:​ v4l_compat_ioctl32,​", ce qui nous donne : +</​code>​ 
-<​code ​java>static struct file_operations v4l_fops = {+ 
 +et ajoutons y la ligne « ''​compat_ioctl:​ v4l_compat_ioctl32,​''​ », ce qui nous donne : 
 + 
 +<​code ​C> 
 +static struct file_operations v4l_fops = {
 owner: THIS_MODULE,​ owner: THIS_MODULE,​
 open: v4l_open, open: v4l_open,
Ligne 73: Ligne 88:
 compat_ioctl:​ v4l_compat_ioctl32,​ compat_ioctl:​ v4l_compat_ioctl32,​
 llseek: no_llseek, llseek: no_llseek,
-};</​code>​ +}; 
-maintenant ​nous pouvons réinstaller notre driver ​grâce à ces commandes : +</​code>​ 
-<​code>​make clean+ 
 +Maintenant, ​nous pouvons réinstaller notre pilote ​grâce à ces commandes : 
 + 
 +<​code>​ 
 +make clean
 make make
-sudo make install</​code>​ +sudo make install 
-Enfin, on charge le driver ​un peu différemment et de façon définitive (concernant le démarrage) : +</​code>​ 
-<​code>​modprobe avld palette=1</​code>​ + 
-puis, on édite le fichier /​etc/​modules +Enfin, on charge le pilote ​un peu différemment et de façon définitive (concernant le démarrage) : 
-<​code>​sudo gedit /​etc/​modules</​code>​ +<​code>​sudo modprobe avld palette=1</​code>​ 
-et si on a déjà rentré avld dedans on rajoute palette=1 juste à la suite pour que tout soit correcte ​; ce qui nous donne donc la ligne suivant ​apparaissant dans notre fichier : +On [[:​tutoriel:​comment_editer_un_fichier|édite le fichier]] **/​etc/​modules** et si on a déjà rentré ​''​avld'' ​dedanson rajoute ​''​palette=1'' ​juste à la suite pour que tout soit correct ​; ce qui nous donne donc la ligne suivante ​apparaissant dans notre fichier : 
-<code java>avld palette=1</​code>+ 
 +<file>avld palette=1</​file> 
 + 
 +Et maintenant, si on veut envoyer une vidéo sur notre webcam virtuelle pour skype, on tape cette commande avec la bonne direction pour le fichier vidéo :
  
-Et maintenant si on veut envoyer une vidéo sur notre webcam virtuelle pour skype on tape cette commande avec la bonne direction pour le fichier vidéo : 
 <​code>​mencoder my_movie.*** -nosound -ovc raw -vf format=uyvy -of rawvideo -o /​dev/​video0</​code>​ <​code>​mencoder my_movie.*** -nosound -ovc raw -vf format=uyvy -of rawvideo -o /​dev/​video0</​code>​
-Et si c'est sur amsn ou autre :+ 
 +ou  : 
 <​code>​mencoder my_movie.*** -nosound -ovc raw -vf format=bgr24 -of rawvideo -o /​dev/​video0</​code>​ <​code>​mencoder my_movie.*** -nosound -ovc raw -vf format=bgr24 -of rawvideo -o /​dev/​video0</​code>​
-Sans oublier, avant cela, de donner la bonne taille de la vidéo comme dans la section utilisation! 
  
-Cet article ​est terminé ​amusez ​vous bien.+Sans oublier, avant cela, de donner la bonne taille de la vidéo comme dans la section utilisation ! 
 + 
 +==== Opencv plante ==== 
 + 
 +Lorsqu'​on essaie de capturer une image avec opencv juste après avoir chargé le module, on obtient une taille d'​image nulle. Le problème n'​apparait pas si on regarde d'​abord une fois le flux avec mplayer. 
 + 
 +En regardant ce qui se passe avec strace | grep VIDIO on s'​aperçoit que la méthode d'​initialisation de mplayer diffère de celle d'​opencv. Et en comparant ce qui est normalement effectué pour chaque ioctl de v4l grace à http://​users.sosdg.org/​~qiyong/​lxr/​ident et à http://​www.google.com/​codesearch , on s'​aperçoit que la structure video_window qui contient la taille de l'​image n'est pas renseignée par avld lors du VIDIOCGWIN. 
 + 
 +<​code>​ 
 +--- video_device.c.orig 2008-09-14 21:​28:​41.000000000 +0200 
 ++++ video_device.c 2008-09-14 22:​00:​35.000000000 +0200 
 +@@ -212,7 +212,10 @@ 
 + ​ #​ifdef DEBUG 
 + ​ printk (KERNEL_PREFIX "​VIDIOCGWIN\n"​); 
 + ​ #​endif 
 +-  
 +
 ++ capture_win.width=width;​  
 ++ capture_win.height=height;​ 
 +
 + ​ if(copy_to_user((void*)arg,​ &​capture_win,​ sizeof(capture_win))) 
 + ​ return -EFAULT; 
 + ​ return 0; 
 +</​code>​ 
 +  
 +Vous pouvez télécharger un patch qui inclut aussi le patch pour Skype présenté dans la section précédente et un patch pour changer de palette après le chargement du module sur: http://​wiki.elphel.com/​index.php?​title=AVLD_-_Another_Video_Loopback_Device\\ 
 + 
 +===== logiciel: webcam virtuelle ===== 
 + 
 +==== WebCamStudio ==== 
 +  * [[webcamstudio]] :Ce logiciel est simple d'​emploi et vous aide à créer une webcam virtuelle: Capture d'​écran,​ Webcam virtuelle, des effets, streamer une vidéo, 
 +===== Liens ===== 
 + 
 +Tout d'​abord je dirais un grand merci au nom de toute la communauté d'​ubuntu à ALLONLINUX qui a créé le pilote permettant ceci. 
 +l'​article original se trouvant ici : http://​allonlinux.free.fr/​Projets/​AVLD/​ 
 + 
 + 
 +---- 
 + 
 +//​Contributeurs : FIXME.//
  • webcamvirtuelle.1214487900.txt.gz
  • Dernière modification: Le 18/04/2011, 14:38
  • (modification externe)