JMF

ibtissamekan7 - 23 avril 2013 à 11:26
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 23 avril 2013 à 11:58
Bonjour,
je suis en train de développer un projet pour capturer et enregistrer les vidéo sous Eclipse, et a l'aide de la bibliothèque JMF.
lors de l'exécution , le compilateur me signal une erreur, elle comme suit: java.util.NoSuchElementException.
et j'arrive pas a resoudre ce problème. et voilà mon code:

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Frame;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Vector;
import javax.imageio.ImageIO;
import javax.media.*;
import javax.media.control.FrameGrabbingControl;
import javax.media.format.RGBFormat;
import javax.media.format.VideoFormat;
import javax.media.util.BufferToImage;


public class WebCam {

CaptureDeviceInfo device;
MediaLocator ml;
Player player;
Component videoScreen;

public static void main(String[] args) {
new WebCam();// create a new instance of WebCam in main function
}

WebCam() {
try {
//gets a list of devices how support the given videoformat
Vector deviceList = CaptureDeviceManager.getDeviceList(new RGBFormat());
System.out.println(deviceList.toString());

//gets the first device in deviceList
device = (CaptureDeviceInfo) deviceList.firstElement();

// ml = device.getLocator();

player = Manager.createRealizedPlayer(ml);

player.start();

videoScreen = player.getVisualComponent();
Frame frm = new Frame();
frm.setBounds(10, 10, 900, 700);//sets the size of the screen

// setting close operation to the frame
frm.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent we) {
System.exit(0);
}
});

//place player and video screen on the frame
frm.add(videoScreen, BorderLayout.CENTER);
frm.add(player.getControlPanelComponent(), BorderLayout.SOUTH);
frm.setVisible(true);
frm.setSize(550,550);

//capture image
Thread.sleep(10000);//wait 10 seconds before capturing photo

FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");

Buffer buf = fgc.grabFrame();//grab the current frame on video screen

BufferToImage btoi = new BufferToImage((VideoFormat) buf.getFormat());

Image img = btoi.createImage(buf);

saveImagetoFile(img, "MyPhoto.jpg");//save the captured image as MyPhoto.jpg

} catch (Exception e) {
System.out.println(e);
}
}

private void saveImagetoFile(Image img, String string) {
try {
int w = img.getWidth(null);
int h = img.getHeight(null);
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bi.createGraphics();

g2.drawImage(img, 0, 0, null);

g2.dispose();

String fileType = string.substring(string.indexOf('.') + 1);

ImageIO.write(bi, fileType, new File(string));

} catch (Exception e) {
}
}

}
Si vous permettez, je demende votre aide.(et pardonnez moi a ma façon de parler, je suis débutante en français)

3 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
23 avril 2013 à 11:35
Salut,

Je déplace vers le forum java
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
23 avril 2013 à 11:52
Est ce que ton erreur est levée sur la ligne
String fileType = string.substring(string.indexOf('.') + 1); 


Si c'est le cas, c'est que tu n'as pas de . dans ton nom de fichier
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
23 avril 2013 à 11:58
Un autre conseil, enlèves tous des catch(Exception e){} qui t'empêchent de récupérer les traces de tes erreurs
0
Rejoignez-nous