Capture d'ecran video en Java
Résolu
smiley5555
Messages postés
86
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Salut tout le monde,
Je suis débutant en Java et j'aimerai savoir comment faire une capture d'écran vidéo d'environ 30 secondes et qui s'enregistre ensuite dans mes images
Merci d'avance pour votre aide.
Je suis débutant en Java et j'aimerai savoir comment faire une capture d'écran vidéo d'environ 30 secondes et qui s'enregistre ensuite dans mes images
Merci d'avance pour votre aide.
A voir également:
- Capture d'ecran video en Java
- Capture d'écran whatsapp - Accueil - Messagerie instantanée
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Capture d'écran samsung - Guide
- Capture d'écran mac - Guide
2 réponses
Tu peux faire des impressions écrans (très) régulièrement, pour te créer des images les unes à la suite des autres, que tu assembleras ensuite avec un logiciel de montage vidéo. Pour ça tu as la classe Robot.
Remarque : l'enregistrement des images peut être long et décaler la capture d'écran, il pourrait donc être intéressant de ne les enregistrer dans les fichiers qu'une fois toutes les captures faites, ce qui signifie stocker toutes les images en mémoire, c'est donc intéressant pour un nombre réduit d'images, dans ton cas ça devrait suffire.
Voici une première idée :
Remarque : l'enregistrement des images peut être long et décaler la capture d'écran, il pourrait donc être intéressant de ne les enregistrer dans les fichiers qu'une fois toutes les captures faites, ce qui signifie stocker toutes les images en mémoire, c'est donc intéressant pour un nombre réduit d'images, dans ton cas ça devrait suffire.
Voici une première idée :
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class Test
{
public static void main(String[] args) throws Exception
{
/////////////////////////////
////// CONFIGURATION //////
/////////////////////////////
// Zone de la prise de vue
Rectangle screenRect = new Rectangle(100,100,500,500);
// Temps en secondes de la vidéo
int duree = 5;
// Nombres d'images par seconde
int frequence = 10;
// Début des noms de fichiers (ils seront complétés par _{indice}.png)
File prefix = new File("C:/test/image");
/////////////////////////////
Robot robot = new Robot();
int max = duree*frequence; // nombre d'images au total
long delai = 1000/frequence; // temps d'attentes entre deux images (en ms)
// tableau d'enregistrement des images
BufferedImage[] images = new BufferedImage[max];
System.out.println("Début des captures d'images.");
for (int i=0; i<max; i++)
{
// capture de l'image
images[i] = robot.createScreenCapture(screenRect);
// attente entre deux images à capturer
Thread.sleep(delai);
}
System.out.println("Fin des captures d'images.");
// nom générique des images
String format = String.format("%s_%%0%dd.png", prefix.getAbsolutePath(),String.valueOf(max).length());
System.out.println("Début d'enregistrement des images --> "+format);
for (int i=0; i<max; i++)
{
// nom spécifique de l'image
String file = String.format(format, i);
// enregistrement de l'image
ImageIO.write(images[i],"png",new File(file));
}
System.out.println("Fin d'enregistrement des images.");
}
}
Ca veut dire que si duree = 60mins(1h) et que fréquence max = 100fps, je marque donc:
int max = 3600*100;
?