Bonjour,

Je développe actuellement une interface opérative pour récupérer des données capteurs et une vidéo d'un mini robot afin de les stocker et de l'éditer par la suite.

Il ne me reste plus que la partie enregistrement vidéo à faire mais je ne trouve pas de solution avec l'API JavaCV. A la base je l'ai choisie car je suis débutant en Java j'étais un peu familiarisé avec OpenCV (celui-si permet d'enregistrer un flux mais en C++).

J'ai donc cherché d'autre API, par exemple Processing mais idem je trouve pas de fonction capable d'enregistrer ma vidéo...

Donc je voudrais savoir s'il est possible d'enregistrer ma vidéo avec JavaCV ou bien Processing sinon quelles sont les API qui pourraient me convenir.

Voici ma classe Recorder qui permet seulement de lire le flux vidéo de ma Webcam pour le moment. C'est une lecture image par image
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package projetcapturewebcam;
 
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
 
public class Recorder extends Thread {
 
    // déclaration de l'image
    opencv_core.IplImage img;   
    // création du flux vidéo
    OpenCVFrameGrabber video = new OpenCVFrameGrabber(0); 
    boolean runned= true;
    boolean capture = false;
    int i = 0;
 
    public Recorder(JLabel labelImg) {
        // récupère le label depuis l'IHM
 
        // Le label prend la valeur du label reçue 
        this.labelImg = labelImg;
    }
 
    JLabel labelImg;
 
    public JLabel getLabelImg() {
        return labelImg; //renvoie le nouveau label à IHM
    }
 
    public void setRunned(boolean isRunned) {
        // récupère False ou True selon les appuies sur Start ou Stop
        this.runned = isRunned;
    }
 
    public void setCapture(String nameFile) {
        // récupère le nom du fichier
 
        // enregistre le screen
        cvSaveImage(nameFile, img); 
    }
 
    // LECTURE
    // lance le thread (surcharge de la class)
    public void run()  {
 
        try {
 
            //lancement de la vidéo
            video.start();
 
            if (video == null) {
                // vérifie l'ouverture du flux vidéo
 
                System.out.printf("%s", " Ouverture du flux vidéo impossible !\n");
            }
 
            while (isAlive()) {
                //Boucle du thread
 
                // L E C T U R E    
                if (runned == true) {
                    // On lance la vidéo
                    //récupére image par image le flux vidéo 
                    img = video.grab();  
 
                    // A F F I C H A G E
                    if (img != null ) {
                        // Il y a une image
 
                        // met l'image dans le LabelImage
                        // Enregistrement image par image de la vidéo cvSaveImage("video"+(i++)+".jpg", img);
                        this.labelImg.setIcon(new ImageIcon( img.getBufferedImage() )); 
                    } 
                }
            }
        } catch (Exception a) {
            a.printStackTrace();
        }
    } 
}
Dans le principe je souhaite faire l'enregistrement en live. Mais s'il y a moyen de composer une vidéo avec chaque image récupérée lors de la lecture, je suis preneur.

Je vous remercie d'avance pour vos réponse.