Java IPCam Stream speichern

Hallo zusammen. Ich bin was Java angeht Neueinsteiger und ich arbeite sein ca 5 Monaten an einem Schulprojekt. Ich soll einen Kamera über eine IP ansteuern und Bilder sowie Videos speichern können.
Die Software ist soweit fertig aber das mit dem Video Speichern funktioniert leider nicht. Habe nun das Problem das die Software einfriert gelöst aber wenn ich die Aufnahme starte nimmt das Programm eine video auf das wird auch größer von der MByte desto länger es aufnimmt. Aber bei Abspielen sieht es so aus als ob das Programm nur paar Millisekunden aufnimmt. Hat jemand ne Idee wo der Fehler liegen könnte?
Bin für jede Hilfe sehr Dankbar.

Gruß David

Hier der Code in der Main für den Button

btnVideoSave = new JButton("Video speichern");
        btnVideoSave.addActionListener(new ActionListener() {
        	public void actionPerformed(ActionEvent e) {
        	    VideoSpeichern video = new VideoSpeichern(Daten);
        	    VideoSpeichern = new Thread(video);
        	    VideoSpeichern.start();
        		
        	}
        });
        btnVideoSave.setBounds(670, 327, 89, 23);
        getContentPane().add(btnVideoSave);

Hier der Code für das Speichern des Videos



import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;

import java.text.SimpleDateFormat;
import java.util.Date;

public class VideoSpeichern implements Runnable {

   	String Daten[];
   	
   	public VideoSpeichern(String [] Daten){
   		
   		this.Daten = Daten;
   	}

    
    public void run(){
        //Thread thisThread = Thread.currentThread();
        
 
    	BufferedInputStream stream = null;
        FileOutputStream fos = null;
    	
        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) +".mpeg");
            
            // 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();
            }
        }
    }


}}

soviel Code mit weitgehend Langeweile zu JButton, SimpleDateFormat für Dateinamen der Ausgabe…, Close von Streams,
zwar sonst vielleicht Mecker wenn nicht da, aber im Kern ist dein Programm lediglich folgendes:

URL url = new URL("http://" + ...);
URLConnection conn = url.openConnection();
stream = new BufferedInputStream(conn.getInputStream());
           
fos = new FileOutputStream(.. +".mpeg");
 
while((nbytes=stream.read(buffer, 0, 256)) != 1) {
    fos.write(buffer, 0, nbytes);
}

du speicherst alle Daten hintereinander weg, aber wer sagt dass das geht?
ich kann es freilich auch nicht sagen

edit: wieso 1 in der Schleife? -1 doch wohl, -1 steht für Stream zu Ende


hast du alle Links zur Suche ‘stream speichern java ipcam’ gelesen?


ist darunter, da werden merkwürdige einzelne Jpeg gelesen, muss aber nicht hilfreich sein…


die Suchergebnisse
http://stackoverflow.com/questions/22247466/java-ip-cam-stream-save


sind wohl von dir…, kann man ruhig gleich nennen,

das zweite Thema immerhin mit bisschen anderen Focus zu Thread & Co.,
nun geht es ja um die reine Funktionalität des Speicherns,
da wäre es dann günstig, JButton, Thread, komische Dateinamen usw. herauszunehmen, Dummy-main-Methode reicht


“Ich soll einen Kamera über eine IP ansteuern und Bilder sowie Videos speichern können.”

wer gibt diese Aufgabe, ist dann auch Information zum Aufbau der Daten, Speichermöglichkeit, dabei?
irgendwelche Hinweise auf Bücher, Tutorials & Co. zum Thema?
funktionierender Code in anderen Sprachen?

*** Edit ***

noch ein Link:
https://community.oracle.com/message/5421556

insbesondere Klasse RecordFile,
kannst du diese Programme mit deiner Cam laufen lassen?
scheint aber das gleiche zu machen…

und Fehler gibts da ja auch, wenn Text zu lesen


http://webcam-capture.sarxos.pl/
gibts noch mit ner Menge freien Sourcecode,
ob aber Speichern dabei ist habe ich noch nicht gesehen oder wenn vielleicht schwer zu extrahieren…