Hallo,
Ich habe hier eine Webcam vorliegen und wollte mal den MJPEG-Stream anzapfen. Das habe ich auch soweit geschafft. Das hier ist mein Code:
Das ganze funktioniert auch gut, ich bekomme damit Bilder wie sie sein sollen gespeichert, aber diese können nicht geöffnet werden.
IrfanView sag das die Quantisierungstabelle der Datei beschädigt sei. Ich weiß nicht woran das Liegt, ich habe mal so ein stück Stream angehängt, vllt. kann mir eine erklären was an der JPEG nicht stimmt. So wie ich das sehe ist alles da der SOI, JFIF, SOS und EOI Tag. Warum das Bild korrupt ist kann ich mir nicht erklären...
Ich habe hier eine Webcam vorliegen und wollte mal den MJPEG-Stream anzapfen. Das habe ich auch soweit geschafft. Das hier ist mein Code:
Java:
package camsurv;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.io.FileWriter;
public class MJPEGParser {
public static void main(String[] args) {
MJPEGParser mp = new MJPEGParser("http://192.168.12.19");
}
public MJPEGParser(String mjpeg_url)
{
int imageCount = 0;
try {
FileWriter fw = null;
URL url = new URL(mjpeg_url);
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
int lineCount = 0;
boolean lineCountStart = false;
boolean saveImage = false;
while ((inputLine = in.readLine()) != null) {
// Should be checking just for "--" probably
if (inputLine.lastIndexOf("--WebCamImage") > -1)
{
// Got an image boundary, stop last image
// Start counting lines to get past:
// Content-Type: image/jpeg
// Content-Length: 22517
saveImage = false;
lineCountStart = true;
System.out.println("Got a new boundary");
System.out.println(inputLine);
if(imageCount != 0)
fw.write(inputLine);
if(fw != null)
fw.close();
fw = new FileWriter("C:\\eclipse\\bild" + imageCount + ".jpg");
}
else if (lineCountStart)
{
lineCount++;
if (lineCount >= 2)
{
lineCount = 0;
lineCountStart = false;
imageCount++;
saveImage = true;
System.out.println("Starting a new image");
}
}
else if (saveImage)
{
System.out.println("Saving an image line");
fw.write(inputLine);
}
else {
System.out.println("What's this:");
System.out.println(inputLine);
}
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Das ganze funktioniert auch gut, ich bekomme damit Bilder wie sie sein sollen gespeichert, aber diese können nicht geöffnet werden.
IrfanView sag das die Quantisierungstabelle der Datei beschädigt sei. Ich weiß nicht woran das Liegt, ich habe mal so ein stück Stream angehängt, vllt. kann mir eine erklären was an der JPEG nicht stimmt. So wie ich das sehe ist alles da der SOI, JFIF, SOS und EOI Tag. Warum das Bild korrupt ist kann ich mir nicht erklären...