Mjpeg VLC和HTTP流传输

4
我将生成一个MJpeg流,并尝试将其流式传输到VLC并在那里播放。
代码如下:
        public void SendMultiPartData(String contentType, Func<byte[]> getData)
    {
        MemoryStream mem = null;
        response.StatusCode = 200;
        for ( byte[] buffer = getData(); buffer != null && buffer.Length > 0; buffer = getData())
        {
            response.ContentType = "multipart/x-mixed-replace; boundary=--testboundary";
            ASCIIEncoding ae = new ASCIIEncoding();
            byte[] boundary = ae.GetBytes("\r\n--testboundary\r\nContent-Type: " + contentType + "\r\nContent-Length:" + buffer.Length + "\r\n\r\n");
            mem = new MemoryStream(boundary);
            mem.WriteTo(response.OutputStream);
            mem = new MemoryStream(buffer);
            mem.WriteTo(response.OutputStream);
            response.OutputStream.Flush();
        }
        mem.Close();
        listener.Close();
    }

如果我尝试使用Firefox打开流,就没有任何问题,但是使用VLC则无法工作(VLC似乎一直在读取但从未显示视频)。
我一直在嗅探VLC到VLC的流,并且它们似乎使用HTTP头“application/octet-stream”而不是“multipart/x-mixed-replace”。
有什么想法吗?
提前感谢,Jose
3个回答

4

Jose,我曾经遇到过和你一样的问题。Firefox可以播放我的流媒体,但VLC不行。我尝试了很多方法来解决这个问题,包括调试VLC源代码,但都没有进展。

顺便说一下,我的(REST) URL看起来像是:http://server:port/livevideo/xyz

然后,我想尝试使用http://server:port/livevideo/xyz.mjpeg

猜猜发生了什么,VLC开始播放视频了!我认为VLC可能需要更多提示才能确定它是一个mjpeg流媒体。

希望这可以帮到你。

Cindy


0

你试过这个吗:

Response.Buffer = false;
Response.BufferOutput = false;

或者是这些的变体?


0

我无法让Firefox播放我的流媒体(但Chrome可以正常播放)。对于VLC,我将缓冲区设置为0毫秒(在高级打开选项下),从那里开始似乎可以工作,尽管我的数据速率正在消耗它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接