I have an ASP.NET application that I need to show a video feed from a security camera. The video feed has a content type of ‘multipart/x-mixed-replace; boundary=–myboundary’ with the image data between the boundaries. I need assistance with passing that stream of data through to my page so that the client side plugin I have can consume the stream just as it would if I browsed to the camera’s web interface directly.
The following code does not work:
//Get response data
byte[] data = HtmlParser.GetByteArrayFromStream(response.GetResponseStream());
if (data != null)
{
HttpContext.Current.Response.OutputStream.Write(data, 0, data.Length);
}
return;
Well, if you want your client to see the mjpeg stream, you need to send the whole http response. HTTP client like browser or media player like VLC need a mjpeg stream that looks like :
NOTE: As Ergousha said in an answer, you must have an empty line after the Content-length field.
By the way, why not redirect your client directly to the mjpeg stream ?
You can use http://ipcam/mjpg/video.mjpg AXIS IP cameras for example.
If you just need the image through HTTP, you have to set the correct header and the MIME content-type
image/jpeg. To decode the image, you have to get the byte data and you will get jpeg encoding. Then you will have to decode jpeg to get an image in a specific format (something like yuv420p I think). I’ve check on my ip camera, and its stream is not base64 encoded I think.
Precise your needs, I will try to help more.
my2c
EDIT:
Well, I suppose you do something like :
That to say that you must send the correct header to your client. To be sure use a tool like wireshark to spy on the packet and be sure that after your client has issued a HTTP GET you send to him the correct MJPEG stream (like the one I describe at the beginning of my post …)
m2c