Mise à jour le Mercredi, 06 Avril 2011 14:09 Écrit par Administrator Mercredi, 06 Avril 2011 12:21
Webcam / video
De nombreuses bibliothèques permettent de gérer la vidéo / les webcams en Java. Malheureusement, nombre d'entre elles sont des usines à gaz tant au niveau de l'installation, de la configuration ou de l'utilisation.
Nous nous sommes intéressés à :
- JMF (API permettant la manipulation de vidéos et fichiers audio fournie par Sun), plus mis à jour depuis 2003
- FMJ (une alternative à JMF)
- QTJ (QuickTime for Java), non compatible avec Linux
- VLCJ (java Bendings for VideoLAN), non compatible avec Linux
- ...
Finalement, nous avons trouvé notre bonheur avec les librairies V4L4J (Video for Linux for Java) et Xuggle.
V4L4J pour la webcam
Installation
Exécution des commandes :
sudo apt-get install libv4l4j-java
sudo apt-get udpate
sudo add-apt-repository ppa:gillesg/ppa
La version installée chez nous est : 0.8.9-0ubuntu1~ppa4
Configuration
V4L4J utilise la librairie système libv4l4j.so, qui a normalement été placée dans le répertoire /usr/lib/jni/
Il est nécessaire que le programme java sache où cette librairie se trouve. Lui indiquer avec l'argument suivant (concerne la JRE) :
-Djava.library.path=/usr/lib/jni
Utilisation
Nous avons été agréablement surpris par la qualité de la documentation et des exemples de V4L4J. Pour l'utiliser plus aisément (avec une Webcam), nous avons créé la classe hssh.util.webcam.Webcam.
int width = 640, height = 480, quality = 85;
Webcam webcam = new Webcam("/dev/video0");
webcam.init(width, height, quality);
webcam.start();
[...]
BufferedImage img = webcam.getImage();
[...]
webcam.stop();
Xuggle pour les enregistrements vidéos
Xuggle [website - wiki] est une bibliothèque Java qui permet de décoder, modifier, encoder et enregistrer des médias.
Installation
Suivre les étapes expliquées ici même : http://www.xuggle.com/xuggler/downloads/
Configuration
De même que pour V4L4J qui nécessite libv4l4j.so, xuggle nécessite des librairies présentes dans /usr/local/xuggler/lib.
L'argument à fournir à la JRE devient donc :
-Djava.library.path=/usr/lib/jni:/usr/local/xuggler/lib
Utilisation
Dans notre cas, nous utilisons Xuggler pour créer une vidéo à partir d'objets de type BufferedImage (issus de la webcam). Pour faire cela de manière facile, nous avons créé 2 classe : Video et WebcamVideo (voir package hssh.util.webcam).
Voici un exemple d'utilisation :
int width = 640, height = 480, quality = 85, framerate = 5, videoduration = 10;
Webcam webcam = new Webcam("/dev/video0");
webcam.init(width, height, quality);
webcam.start();
WebcamVideo wv = new WebcamVideo(webcam, "/home/xavier/Desktop/video.mp4", videoduration, framerate);
wv.startRecord();
webcam.stop();
La vidéo enregistrée est au format mp4.