Livestream als AVI speichern

1342

Aktives Mitglied
Hallo zusammen,

ich habe ein Programm, welches einen Livestream einer WLAN kamera anzeigt.

Nun würde ich diesen Livestream gerne als avi speichern. Momentan speichert es mir zwar was ab, aber ich kann es mit keinem PLayer wiedergeben.

Hier ist der code:
Java:
public class iListener implements ItemListener  // Interne Klasse iListener
    {    
        private AbstractButton button; // Privates Attribut        
        
        // Wird aufgerufen wenn sich bei "Record" was ändert
        public void itemStateChanged(ItemEvent e)    
        {    
            button = (AbstractButton)e.getItem(); // Gibt das auslösende Objekt zurück
                            
            if(button.isSelected()) // Wenn "Record" gesetzt
            {
                try // Versuche
                {
                Date dt = new Date(); // Datum erzeugen
                SimpleDateFormat dtformat = new SimpleDateFormat("dd.MM.yyyy 'at' HH.mm.ss");// Datumsformat festlegen
                URL url = new URL("http://"+Daten[0]+"/videostream.cgi?&user=benutzer&pwd=passwort&resolution=32");
                URLConnection conn = url.openConnection();
                BufferedInputStream stream = new BufferedInputStream(conn.getInputStream());
                FileOutputStream fos = new FileOutputStream(Daten[3] + "\\"+ dtformat.format(dt) +".avi"); 
                char  buffer[] = new char[0xffff];
                int   nbytes;

                while( (nbytes=stream.read()) != 3) {
                    fos.write(0);

                } 
            }
                catch(IOException e1) // Wird ausgeführt wenn ein Fehler stattgefunden hat
                {
                      e1.printStackTrace();
                }
                                        
            }                
        }
    }

Ich suche schon seit Tagen im Netz, finde aber keine passende Lösung.

Hat jemand von Euch ne Ahnung? Ich bin am Verzweifeln......

Gruß
 

Kr0e

Gesperrter Benutzer
Was zum Henker soll

while( (nbytes=stream.read()) != 3) {
fos.write(0);

}

bewirken :D ?? Du schreibst unendlich viele Nullen damit!! Du liest ein Zeichen in nBytes aber nur wenn es ungleich 3 ist, schreibst du ne Null HÄ ?!

Nichtmal VLC PLayer dürfte das abspielen können^^ Und der kann alles! :D
 

1342

Aktives Mitglied
hm, ich hab den code im netz gefunden und in mein programm eingefügt.

die "3" war eigentlich eine"-1", aber wenn ich es bei einer "-1" lasse stürzt mir das programm komplett ab?????

Da ich noch nicht so lange mit Java arbeite weiss ich leider nicht mal genau was dieser teil genau macht:
Java:
  while( (nbytes=stream.read()) != 3) {
                    fos.write(0);

gibt es den noch andere Möglichkeiten als > fos.write(0); ?

Danke!!
 

Kr0e

Gesperrter Benutzer
Ne Menge :D

Learn the basics. Es bringt nix, wenn dir hier einer erklärt, wie man es löst... Du hast ja auch gerade gesagt, dass du den Code aus dem Internet hast. Ein-zwei wochen ein Tut durcharbeiten und du wirst dir an den Kopf fassen wenn du dir den Code oben nochmal anschaust ;)


PS:

Vlt. schonmal als Starthilfe: Lerne alles bzg. Streams. Sprich java.net.io ist das was du dir anschauen solltest.
 
Zuletzt bearbeitet:

Blakh

Bekanntes Mitglied
Java:
while( (nbytes=stream.read()) != -1) {
fos.write(0);

}

Das würde schon mehr Sinn machen. Dann schreibst du solange Nullen, bis der Stream zu Ende ist :). Was passiert denn wenn du fos.write(nbytes) machst?
 

1342

Aktives Mitglied
Danke für den Tipp!

also wenn ich es so mache, dann änderts sich eigentlich nichts, außer dass mein Programm hängen bleibt.
Allerdings speichert es solange eine avi Datei ab, bis ich das Programm mit dem Task Manager beende.
Ja länger ich damit warte, desto größer wird sie.....aber sie lässt sich nicht abspielen. Ich hab da irgendwo noch einen (oder mehrere :) ) Fehler drin, die bewirken, dass ich eine nicht abspeilbare datei speichere.

wenn ich bei der abgespeicherten Datei auf Eigenschaften gehe und dann auf Details sollte es mir eigentlich Dinge anzeigen, wie :Länge 30s , Bildbreite 480, Bildhöhe 640, Datenrate 4601 kBit/s, Gesamtrate 4601 kBit/s , Einzelbildrate 100 Einzelbilder / sekunde

Aber diese Felder sind alle leer! Es ist klar dass kein Player sowas abspielen kann :-(

Ich will den Fehler finden, warum meine Datei so abgespeichert wird, dass nichts funkt.

Zum verrückt werden!
 

Sonecc

Gesperrter Benutzer
Sein Problem dürfte sein, dass sein Programm hängt, weil das ganze nicht in einem eigenen Thread läuft.
Heißt, solange der Stream läuft hängt sein Programm, deswegen hat er die -1 auf 3 geändert.
Mal vom 0en schreiben abgesehen...

Ich kann mich nur dem anschließen, dass du erstmal Basics lernen solltest
 

Sonecc

Gesperrter Benutzer
Ich will den Fehler finden, warum meine Datei so abgespeichert wird, dass nichts funkt.


Das liegt daran, dass du nur nullen (in zahlen 0 ) in deine Datei schreibst.
Verwende fos.write(nbytes) und es wird besser sein (ob es danach geht weiß ich zwar nicht, dann sollten aber wenigstens nicht nur 0 en in deiner Datei stehen)


-.- ... Sorry für Doppelpost :/ :oops:
 

1342

Aktives Mitglied
Danke für eure antworten,

aber selbst wenn ich die 0 auf nbytes ändere, änderts sich nichts an meiner gespeicherten datei.......
 
S

SlaterB

Gast
selbst wenn man mit der Batterie nach dem Fernseher schmeißt kommt kein schönes Bild,

nein so gehts nicht voran,
das Speichern einer Datei erfordert konzentriertes geplantes sinnvolles Vorgehen,
kein beliebiges Ausprobieren von Befehlen

aber da nix anderes in Frage kommt darfst du nun
Java:
      char  buffer[] = new char[0xffff];
      while (true) {
        int amountRead = stream.read(buffer);
        if(amountRead == -1) {
            break;
        }
        fos.write(buffer, 0, amountRead);
      }
ausprobieren,
kopiert von
Kapitel 14: Daten lesen und schreiben mit Streams
 

1342

Aktives Mitglied
Ich einfach nicht mehr weiter :(.... hat keiner eine idee oder ein hilfe?

Mein versuch bis jetzt:

Java:
	try // Versuche
	    		{
					
				Date dt = new Date(); // Datum erzeugen
				SimpleDateFormat dtformat = new SimpleDateFormat("dd.MM.yyyy 'at' HH.mm.ss");// Datumsformat festlegen
				URL url = new URL("http://"+Daten[0]+"/videostream.cgi?&user=admin&pwd=1342&resolution=32");
				URLConnection conn = url.openConnection();
				
				
				BufferedInputStream stream = new BufferedInputStream(conn.getInputStream());
        	    FileOutputStream fos = new FileOutputStream(Daten[3] + "\\"+ dtformat.format(dt) +".avi"); 
        	    
        	    
        	    
        	    byte[] buffer = new byte[1024];
                int len = 0;
     
                while ((len = stream.read(buffer)) >= -1) {
                    fos.write(buffer, 0, len);
                }
                stream.close();
                fos.flush();
                fos.close();
            }

        	      
				catch(IOException e1) // Wird ausgeführt wenn ein Fehler stattgefunden hat
	    		{
	    			  e1.printStackTrace();
	    		}
										
			}
 
S

SlaterB

Gast
>= -1 ist schlicht falsch, wie kommst du darauf?
aus meinem geposteten Code mit break bei == -1 kann man != -1 oder von mir aus > -1 für deine Schleife ableiten, nicht >= -1

zu dem Code wären auch weitere Infos sinnvoll,
wird eine Datei erstellt, wächst deren Größe,
hört die URLConnection eigentlich irgendwann auf, wie lange soll das Programm laufen,
was macht es am Ende oder eben nicht (die >= -1 deuten nämlich auf eine Endlosschleife hin),
treten Exceptions auf usw.
 

1342

Aktives Mitglied
Okay, hier die Infos:

Es wird eine Datei erstellt

Ihre Größe wächst

Die URL connection hört nie auf. Erst wenn ich das Programm manuell beende.

Sobald ich aufnehmen will (mithilfe eines ItemListener) bleibt der Livestream hängen und ich kann mein Programm nicht mehr bedienen. Die Dateigröße wächst aber trotzdem weiter.
 
S

SlaterB

Gast
und solange in die Datei geschrieben wird, sollte die sowieso kein anderes Programm benutzen, zumindest unter Windows
 
T

Tomate_Salat

Gast
@1324: Wann soll den deiner Meinung nach die Verbindung enden? Die bleibt bestehen bis einer der beiden Parteien "off" geht! Solange hängst du in dem aktuellen Thread fest, weil [c]stream.read()[/c] immer etwas > -1 zurückgeben wird. Also entweder schaust du dir Multithreading an (viel Spaß!) oder du setzt ein limit: z.B. nur 10s Videos aufnehmen und dann die Verbindung kappen und das Ergebnis speichern.
 

1342

Aktives Mitglied
Kann das nicht daran liegen das in meiner Übertragung was nicht stimmt?

Hier wird die Verbindung zu dem URL hergestellt
Java:
 URL url = new URL("http://"+Daten[0]+"/videostream.cgi?&user=admin&pwd=1342&resolution=32");
                URLConnection conn = url.openConnection();

Hier wird sie zum BufferedInput übertragen:
Java:
   BufferedInputStream stream = new BufferedInputStream(conn.getInputStream());

Java:
....da fehlt doch die übertragen vom buffered zum FileOutputStream? Oder versteh ich das falsch?


und schreibt doch die Datei:
Java:
 FileOutputStream fos = new FileOutputStream(Daten[3] + "\\"+ dtformat.format(dt) +".avi");

Und wegen dem kann meine Datei nicht erkannt werden weil der FileOutputStream einfach nur eine Datei ohne nichts speichert?! Wenn ich auf Details in der Datei gehe steht dort auch nichts drine im Video bereich.
 
S

SlaterB

Gast
> da fehlt doch die übertragen vom buffered zum FileOutputStream? Oder versteh ich das falsch?

die Übertragung ist die while-Schleife,

aber schon richtig dass man da sehr viele Dinge bedenken muss, ist das wirklich eine richtige Aufgabe für dich?
 
T

Tomate_Salat

Gast
mal abgesehen von der Endlosschleife, kann man so wirklich eine valide avi-Datei erstellen, indem man Bilder nacheinander in eine datei schreibt und sie .avi tauft? (oder schickt die Kamera tatsächlich einen Stream und keine Einzelbilder?)
 

1342

Aktives Mitglied
aber schon richtig dass man da sehr viele Dinge bedenken muss, ist das wirklich eine richtige Aufgabe für dich?

Dieses Projekt ist Inhalt einer Weiterbildung.
Vor einem Jahr habe ich das erste Mal etwas von Java gehört. Seit dem bringen wir uns quasi selber das "Programmieren" bei. Vieles davon verstehe ich auch nicht, weil wir fast dazu aufgefordert werden uns die Sachen ausm Netz zusammen "zuklauen". Davon bin ich auch nicht begeistert.

Aber ich muss das nunmal hinbekommen........ich probiere, bastel und forsche seit wochen, habe mir die Insel gekauft und lese darin, habe von Erlenkötter ein Java Büchlein und lese auch darin.
Das Problem ist, dass ich mit dem Inhalt dieser Bücher oft, leider nichts anzufangen weiss, da mir das ganze Hintergrundwissen fehlt, welches man sich in Jahren erarbeitet.Diese Zeit habe ich aber nicht. Also versuche ich mein bestes und bin eben auch auf Hilfe angewiesen........:oops:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Zugangsdaten externer Systeme sicher speichern Allgemeine Java-Themen 8
Z Passwort Versuche speichern Allgemeine Java-Themen 8
M Eigene Datenstruktur um eine Menge zu speichern Allgemeine Java-Themen 3
8u3631984 Bilder in Datenbank speichern - sinnvoll Allgemeine Java-Themen 5
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
I Hibernate Envers - Aufruf der Methode zum Speichern selbst ausführen oder managen? Allgemeine Java-Themen 0
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
J (Geplante) Änderungen an einer Datei vorübergehend speichern und anwenden? Allgemeine Java-Themen 12
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
temi Lösung zum Speichern von Deltafiles Allgemeine Java-Themen 6
J Java Filechooser Speichern Allgemeine Java-Themen 8
N Arrayliste in eine Datei speichern Allgemeine Java-Themen 4
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
platofan23 Wie .txtDatei im Java Eclipse-Projekt bzw. in der Jar speichern? Allgemeine Java-Themen 7
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
H ArrayListe in CSV Datei speichern Allgemeine Java-Themen 6
H Mehrere Datentypen in einer Arraylist speichern Allgemeine Java-Themen 9
H Objekte speichern und laden Allgemeine Java-Themen 10
H Objekte speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
H Objekt speichern und laden Allgemeine Java-Themen 1
T Speichern von Objekten Allgemeine Java-Themen 2
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
D .txt Datei in .jar Datei speichern Allgemeine Java-Themen 3
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
MiMa Speichern von Programmeinstellungen in Datei Allgemeine Java-Themen 7
F Best Practice Große Anzahl an Objekten speichern und lesen Allgemeine Java-Themen 19
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
Q-bert Strings aus der JList in eine Datenbank speichern Allgemeine Java-Themen 1
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
@SupressWarnings() Feste Kosten speichern Allgemeine Java-Themen 4
N ZIp datei direkt im eclipse speichern Allgemeine Java-Themen 4
N Das Ende von bestimmten zeilen in text datei ändern und speichern Allgemeine Java-Themen 3
C Best Practice Speichern kleineren Mengen Stammdaten? Allgemeine Java-Themen 3
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
F Json in sql speichern und lesen Allgemeine Java-Themen 10
F Alte Passörter mit Gson und Json in SQL speichern? Allgemeine Java-Themen 5
K API-Key sicher speichern Allgemeine Java-Themen 2
K Große Mengen an Daten speichern Allgemeine Java-Themen 9
B Zahlen manuell eingeben und in Array Speichern Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
Tacofan Bilder in Resource speichern Allgemeine Java-Themen 6
C Objekte in Array List speichern? Allgemeine Java-Themen 1
OnDemand Objekte speichern Allgemeine Java-Themen 8
O Klassen Bruch im gleichen Objekt Speichern Allgemeine Java-Themen 1
J Text lesen und in Variablen speichern Allgemeine Java-Themen 3
U Variablen Stringarrays mit wenig verschiedenen Zeichen effizienter speichern Allgemeine Java-Themen 10
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Daten persistent speichern Allgemeine Java-Themen 14
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
M Objekt serialisieren/deserialisieren und in einer SQLite-Datenbank speichern Allgemeine Java-Themen 3
R HtmlUnit: Canvas als Bild speichern Allgemeine Java-Themen 0
E KeyCode in anderer Klasse speichern Allgemeine Java-Themen 2
M YouTube-Video herunterladen und speichern Allgemeine Java-Themen 10
C Position speichern von verschiebbaren Elementen auf JPanel Allgemeine Java-Themen 3
S Wertepaar in LinkedList/PriorityQueue speichern Allgemeine Java-Themen 3
Developer_X Input/Output Serialisiertes Objekt speichern und laden Allgemeine Java-Themen 1
J Arraylist speichern und laden? Allgemeine Java-Themen 5
S speichern von RSA-Keys Allgemeine Java-Themen 1
3 OOP Instanzen aus einer Klasse persistent speichern. Allgemeine Java-Themen 9
GUI-Programmer Mp3 Dateien bearbeiten und speichern Allgemeine Java-Themen 3
G Suchweg durch Binärbaum speichern Allgemeine Java-Themen 4
D IP-Cam live stream speichern Allgemeine Java-Themen 9
javampir Lange Bitfolge speichern Allgemeine Java-Themen 3
M Methoden in Rescources speichern Allgemeine Java-Themen 4
L iText PDF-Generierung ohne Speichern Allgemeine Java-Themen 10
U Screenshot erstellen und speichern Allgemeine Java-Themen 6
OnDemand Input/Output Variablen in Datei Speichern um sie wieder auszulesen Allgemeine Java-Themen 4
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
S XML lesen, verarbeiten, speichern klappt in Eclipse, aber nicht in der JAR Allgemeine Java-Themen 4
H JPA (EclipseLink) Neuer Eintrag in Collection speichern (unidirektional) Allgemeine Java-Themen 3
J RC4 Key als String speichern? Allgemeine Java-Themen 5
F Java Api Bilder speichern Allgemeine Java-Themen 3
T UTF-16LE String aus LDAP lesen und als ISO-8859-1 in DB speichern? Allgemeine Java-Themen 2
M Einstellungen in JAR speichern Allgemeine Java-Themen 8
F Problem beim Speichern eines Attachments Allgemeine Java-Themen 3
K Input/Output Daten speichern / laden Allgemeine Java-Themen 2
M Best Practice: Daten aufnehmen-speichern-bereitstellen Allgemeine Java-Themen 8
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
B Effizienteres Speichern von Worten Allgemeine Java-Themen 4
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
M Instanzierte Objekte in XML Dokument speichern Allgemeine Java-Themen 3
S Speichern/Laden/Hinzufügen/Löschen der Array-Wörter; unerwartete Ausgabe Allgemeine Java-Themen 6
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
H Eclipse x Stellen einer Zahl in array speichern Allgemeine Java-Themen 3
P Objekt Array in Datei Speichern Allgemeine Java-Themen 3
DStrohma Passwort in Datei speichern - wie? Allgemeine Java-Themen 31
K Input/Output Im Programm instanzierte Objekte Speichern und laden Allgemeine Java-Themen 3
H Objekte Serialisiert speichern Allgemeine Java-Themen 10
K Datei aus.jar extern speichern Allgemeine Java-Themen 10
C JasperReports, PDF und "Speichern unter"-Dialog Allgemeine Java-Themen 7
R Java Array speichern & laden Allgemeine Java-Themen 23
D System.out's in String speichern. Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben