создание своего собственного потока MJPEG

Я пытаюсь создать поток MJPEG, у меня есть серия jpeg, которые я хочу собрать в поток, чтобы пользователь мог просто нажать URL и получить поток mjpeg. Последние несколько дней я пытался заставить это работать, и это может быть просто невозможно. Я поднял эфир и слушал пакеты, поступающие от камеры с осью в сети где-то, и пытался имитировать это. Первоначально я пытался использовать WCF и возвращать «поток», но потом обнаружил, что мне нужно установить тип содержимого для этого потока, поэтому я попробовал API-интерфейс REST WCF, но это страдает от той же проблемы. поэтому я сейчас просто использую HTTPListener и обрабатываю событие. Я бы предпочел использовать WCF, но я не уверен, что это позволит мне возвращать поток с правильным типом контента. так вот что у меня есть для httpListener.

в обработчик перезвона слушателя я положил следующее.

        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);

метод Render выглядит следующим образом

        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);
            }
        }

На данный момент я только что добавил несколько изображений в формате jpeg в качестве свойств в dll и перебираю их, в конце концов это будут динамические изображения, но сейчас я просто хочу, чтобы все заработало.

Из того, что я понимаю о MJPEG (спецификации), является то, что контент должен быть установлен на multipart / x-mixed-replace и набор границ. а затем вы просто ограничиваете JPEG в потоке по границе.

Кажется, это должно быть проще, чем я делаю, но мне интересно, где я иду не так. если я загружаю этот URL в IE или Firefox, он просто зависает. если я пытаюсь создать заглушку html-страницы с тегом img, источником которого является URL, то я получаю испорченное изображение.

Любые идеи, спасибо

мистифицировать