Comment lire une vidéo image par image?

je voudrais lire un fichier Mp4 dans java8-64bit image par image et écrire chaque image comme un fichier jpg de mon disque dur. ma première tentative a été d'utiliser JavaFX 2.2 media player pour lire le fichier
sur une Vue de composant. j'ai pensé que peut-être il y aurait une possibilité de s'inscrire en qualité d'observateur à obtenir un événement chaque fois qu'une nouvelle image a été chargée et prête à être peinte sur la surface du composant mais il semble qu'il n'y a pas une telle méthode.
il suffirait de prendre juste les images/les pixels qui l'a peint sur le composant.

Cela peut être fait en utilisant le lecteur multimédia? la raison pour laquelle j'utilise le lecteur multimédia est bcs c'était la solution la plus simple je suis workin. j'ai essayé vlcj, à seulement 32 bits, et gstreamer, mais sans succès 🙁

ce que j'ai obtenu jusqu'à présent:

public class VideoGrabber extends extends JFrame { 

//code for scene setup omitted

final MediaView view = createMediaView(...)

//some other stuff happens here

//now start the video
view.getMediaPlayer().seek(Duration.ZERO);
view.getMediaPlayer().play();
view.getMediaPlayer().setOnEndOfMedia(new Runnable()
{ //save image when done
  BufferedImage img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_BGR 
  view.paint(img.getGraphics());
  ImageIO.write(img, "JPEG", new File("pic-"+System.currentTimeMillis()+".jpg"));
});

//somewhere else to create 
private MediaView createMediaView(String url)
{
  final Media clip = new Media(url);
  final MediaPlayer player = new MediaPlayer(clip);
  final MediaView view = new MediaView(player);
  view.setFitWidth(VID_WIDTH);
  view.setFitHeight(VID_HEIGHT);
  return view;
}

est-il en quelque sorte une façon de faire les choses suivantes:

player.setOnNextFrameReady(final Event evt) { writeImage(evt.getFrame()) };

Merci!

InformationsquelleAutor Chris | 2014-07-03