erstellen meines eigenen MJPEG-stream

Ich versuche zu schaffen, einen MJPEG-stream, ich habe eine Serie von jpegs, die ich wollen zusammen in einen stream, so dass Benutzer können einfach auf eine URL und bekommen Sie einen mjpeg-stream.
Ich habe versucht, für die letzten paar Tage, um diese zu arbeiten, und es kann eben nicht möglich sein. Ich habe auf gebracht ätherische, und hörte die Pakete kommen von einer Achse Kamera im Netz irgendwo, und versuchte mimmick es. Ich habe ursprünglich versucht, mit Hilfe von WCF und für die Rückgabe einen "stream", aber dann fand später heraus, dass ich brauchen würde, um die Art des Inhalts, auf dem stream, so dass ich dann versucht, den WCF-REST-api, aber leidet unter dem gleichen problem. also ich bin jetzt gerade mit einem nackten Knochen HTTPListener und Handhabung der Veranstaltung. Ich würde es sehr bevorzugen WCF, aber ich bin mir nicht sicher, dass es ermöglichen wird, mich wieder ein stream mit den richtigen content-type.
also hier ist was ich für den httpListener .

in der handler den Hörer rufen Rückseite habe ich die folgenden.

        HttpListenerResponse response = context.Response;
        response.ProtocolVersion = new System.Version(1, 0);
        response.StatusCode = 200;
        response.StatusDescription = "OK";
        response.ContentType = "multipart/x-mixed-replace;boundary=" + BOUNDARY + "\r\n";
        System.IO.Stream output = response.OutputStream;
        Render(output);

die Render-Methode sieht wie folgt aus

        var writer = new StreamWriter(st);
        writer.Write("--" + BOUNDARY + "\r\n");
        while (true)
        {
            for (int i = 0; i < imageset.Length; i++)
            {
                var resource = Properties.Resources.ResourceManager.GetObject(imageset[i]) as Bitmap;
                var memStream = new MemoryStream();
                resource.Save(memStream,ImageFormat.Jpeg);
                byte[] imgBinaryData = memStream.ToArray();
                string s = Convert.ToBase64String(imgBinaryData);
                writer.Write("Content-type: image/jpeg\r\n");
                foreach (var s1 in imgBinaryData)
                {
                    writer.Write((char)s1);
                }
                writer.Write("\n--" + BOUNDARY + "\n");
                writer.Flush();
                Thread.Sleep(500);
            }
        }

Zu diesem Zeitpunkt habe ich nur noch ein paar jpeg-Bilder als Eigenschaften auf die dll, und bin zu iterieren über Sie, schließlich werden diese dynamischen Bilder, aber für jetzt, ich will einfach nur, um die Sache zu arbeiten.

Von dem, was ich verstehe, über das MJPEG (spec) ist, dass der Inhalt muss auf " multipart/x-mixed-replace und eine Grenze gesetzt. und dann hat man nur deliminate die JPEG-Bilder in den stream von die Grenze.

Dieser scheint, wie es sollte einfacher sein, dann mache ich es, aber ich Frage mich, wohin ich gehe falsch. wenn ich laden Sie diese URL im IE oder Firefox, es hängt nur. wenn ich versuche, ein stub-html-Seite mit einem img-tag, dessen Quelle die URL bekomme ich dann unterbrochenes Bild.

Irgendwelche Ideen, danke

Josh

InformationsquelleAutor Joshua | 2009-10-20
Schreibe einen Kommentar