G
Guest
Gast
Von der WebCam lese ich einen DataInputStream und lasse ihn mir in nem Frame anzeigen...das funktioniert auch gut!
Mein Problem: Ich will das ganze als Videodatei abspeichern...
Einnmal hatte es irgendwie geklappt und ich hatte immerhin schonmal eine Video.txt mit rund 2 MB...an kryptischen Zeichen...aber irgendwie will er mir jetzt nichts mehr reinschreiben, wenn ich das Programm laufen lasse...
Ebenso die Datei.txt in der die aktuelle Uhrzeit reinsoll...hatte um 10:27 noch funktioniert aber jetzt will er die Datei nicht mehr erstellen... :s
Jemand eine Ahnung woran das liegt oder einen Lösungsansatz?
Mein Problem: Ich will das ganze als Videodatei abspeichern...
Einnmal hatte es irgendwie geklappt und ich hatte immerhin schonmal eine Video.txt mit rund 2 MB...an kryptischen Zeichen...aber irgendwie will er mir jetzt nichts mehr reinschreiben, wenn ich das Programm laufen lasse...
Ebenso die Datei.txt in der die aktuelle Uhrzeit reinsoll...hatte um 10:27 noch funktioniert aber jetzt will er die Datei nicht mehr erstellen... :s
Jemand eine Ahnung woran das liegt oder einen Lösungsansatz?
Code:
public class Cam extends JPanel implements Runnable
{
public void initDisplay()
{ //Display aufsetzen
MJPGStromLesen();
bildGröße=new Dimension(bild.getWidth(this), bild.getHeight(this));
setPreferredSize(bildGröße);
parent.setSize(bildGröße);
parent.validate();
initCompleted=true;
}
public void leseDatenStrom()
{ //Methode um kontinuierlich den Stream zu lesen:
try
{
while(true)
{
MJPGStromLesen();
parent.repaint();
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public void bildEinlesen()
{ //Das eingebettete Jpeg-Image lesen:
try
{
JPEGImageDecoder decoder=JPEGCodec.createJPEGDecoder(dis);
bild=decoder.decodeAsBufferedImage();
}
catch(Exception e)
{
e.printStackTrace();
disconnect();
}
}
public void readLine(int n, DataInputStream dis)
{
for (int i=0; i<n;i++)
{
readLine(dis);
}
}
public void readLine(DataInputStream dis)
{
try
{
boolean end=false;
String lineEnd="\n"; //Nimmt an das das Ende der Line hiermit markiert ist!
byte[] lineEndBytes=lineEnd.getBytes();
byte[] byteBuf=new byte[lineEndBytes.length];
while(!end)
{
dis.read(byteBuf,0,lineEndBytes.length);
String t=new String(byteBuf);
if(t.equals(lineEnd))
{
end=true;
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void paint(Graphics g)
{
g.drawImage(bild, 0, 0, this);
}
public void datumInDateiSchreiben() throws IOException
{
PrintWriter out=new PrintWriter("c:/datei.txt");
out.printf("%tT Uhr.", new Date());
out.close();
}
public void videoInDateiSchreiben() throws IOException
{
String lineEnd="\n"; //Nimmt an, dass das Ende der Line hiermit markiert ist!
byte[] lineEndBytes=lineEnd.getBytes();
byte[] byteBuf=new byte[lineEndBytes.length];
FileOutputStream output=null;
try
{
output=new FileOutputStream("c:/video.txt");
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
while(true)
{
output.write(byteBuf, 0, byteBuf.length);
output.flush();
output.close();
}
}
public void run()
{
connect();
leseDatenStrom();
try
{
datumInDateiSchreiben();
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
videoInDateiSchreiben();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
JFrame jframe=new JFrame();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Cam axPanel=new Cam(jframe);
new Thread(axPanel).start();
jframe.getContentPane().add(axPanel);
jframe.setTitle("LagerCam");
jframe.pack();
jframe.setVisible(true);
}
}