Hi zusammen.
Ich arbeite seit ca 3 Monaten an meinem Schulprojekt wo man über eine Java Software den Stream der Camera anzeigen und speichern kann. Den Stream kann ich mittlerweile in meiner GUI anzeigen und einzelne Bilder abspeichern. wenn ich aber den kompletten Stream speichern möchte stürzt das komplette Programm ab. In den Ordner wo der Stream gespeichert werden soll wird eine .mpeg Datei erstellt aber beim abspielen ist es wenn da nur so wie ein bild vorhanden wäre.
Könnt ihr mir da bitte weiterhelfen da ich im Internet leider zu diesem Thema keine Informationen gefunden habe.
den Sourcecode vom Button habe ich mit eingefügt vielleicht hat jemand eine Idee.
Gruß David
Ich arbeite seit ca 3 Monaten an meinem Schulprojekt wo man über eine Java Software den Stream der Camera anzeigen und speichern kann. Den Stream kann ich mittlerweile in meiner GUI anzeigen und einzelne Bilder abspeichern. wenn ich aber den kompletten Stream speichern möchte stürzt das komplette Programm ab. In den Ordner wo der Stream gespeichert werden soll wird eine .mpeg Datei erstellt aber beim abspielen ist es wenn da nur so wie ein bild vorhanden wäre.
Könnt ihr mir da bitte weiterhelfen da ich im Internet leider zu diesem Thema keine Informationen gefunden habe.
den Sourcecode vom Button habe ich mit eingefügt vielleicht hat jemand eine Idee.
Gruß David
Java:
btnVideoSave = new JButton("Video speichern");
btnVideoSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
BufferedInputStream stream = null;
FileOutputStream fos = null;
Thread thisThread = Thread.currentThread();
try {
Date dt = new Date();
SimpleDateFormat dtformat = new SimpleDateFormat("dd.MM.yyyy 'at' HH.mm.ss");// Datumsformat festlegen
URL url = new URL("http://" + Daten[0] + ":" + Daten[1]);
URLConnection conn = url.openConnection();
stream = new BufferedInputStream(conn.getInputStream());
fos = new FileOutputStream(Daten[4] + "\\"+ dtformat.format(dt) +".mjpg");
// Die ausgelesenen Daten liegen als byte vor, nicht als char
byte buffer[] = new byte[256];
int nbytes ;
/*
* Hier wird nicht immer nur ein byte gelesen, sondern gleich
* maximal 256. Bringt bessere Performance.
*/
while((nbytes=stream.read(buffer, 0, 256)) != 1) {
fos.write(buffer, 0, nbytes);
}
/*
* Buffer leeren, Speicher freigeben
*/
buffer = null;
} catch(IOException e1) {
e1.printStackTrace();
} finally {
/*
* Die Streams schließen, egal ob Exception kommt oder nicht
*/
if(fos != null) {
try {
fos.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
if(stream != null) {
try {
stream.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
});
btnVideoSave.setBounds(670, 327, 89, 23);
getContentPane().add(btnVideoSave);