package justyce.film; import java.io.File; import java.io.IOException; import javax.media.*; import javax.media.protocol.DataSource; import javax.media.protocol.FileTypeDescriptor; import jmapps.util.StateHelper; public class Video implements Runnable{ Thread t; Filmer f; Processor processor = null; StateHelper stateHelper = null; DataSink fileWriter ; public Video(Filmer fi){ f=fi; t = new Thread(this,"Video"); t.start(); } @Override @SuppressWarnings("deprecation") public void run() { // récupération d’un capture device CaptureDeviceInfo captureDevice=CaptureDeviceManager.getDevice(f.video); if(captureDevice==null){ System.out.println("Couldn't find capture device !"); } System.out.println("Debut de l'enregistrement !"); // récupération du MediaLocator lié au périphérique de capture MediaLocator mediaLocator = captureDevice.getLocator(); try { // création d'un processeur processor = Manager.createProcessor(mediaLocator); // création d'un objet helper permettant de simplifier la configuration stateHelper = new StateHelper(processor); // configuration du processeur stateHelper.configure(); // configuration de la destination => format Wave processor.setContentDescriptor(new FileTypeDescriptor(f.format)); //initialisations stateHelper.realize(); // récupération de la source de sortie DataSource source = processor.getDataOutput(); source.connect(); // création d'un MediaLocator lié à un fichier (destination) MediaLocator destination = new MediaLocator(new File(f.f).toURL()); // création d'un DataSink pour écrire dans le fichier le flux entrant // (synchronisation entre la source et la destination) fileWriter= Manager.createDataSink(source, destination); // ouveture de la lecture / enregistrement (préparation) fileWriter.open(); // démarrage du processor et du filewriter fileWriter.start(); // capture en millisecondes if(f.duree>10){ stateHelper.playToEndOfMedia(f.duree); // fermeture de la capture stateHelper.close(); // fermeture du fichier fileWriter.close(); System.out.println("Fin de l'enregistrement !"); t.stop(); } else{ stateHelper.playToEndOfMedia(0); } } catch (Exception e) { System.out.println(e); } } @SuppressWarnings("deprecation") public void stop(){ // fermeture de la capture stateHelper.close(); try { fileWriter.stop(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // fermeture du fichier fileWriter.close(); System.out.println("Fin de l'enregistrement !"); t.stop(); } public void pause() { try { fileWriter.stop(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } /** *stateHelper.wait(); *fileWriter.wait(); */ } public void reprendre(){ try { fileWriter.start(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }