2009-04-29 439 views
4

我正在生成一個MJpeg流並嘗試將它流式傳輸到VLC並在那裏播放。Mjpeg VLC和HTTP流

代碼:

 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標頭「應用程序/八位字節流」,而不是多/使用X - 混合取代

任何想法?

韓國社交協會提前, 何塞

回答

2

Jose, 我有完全相同的問題。 Firefox播放我的流,但VLC沒有。我通過很多方法來解決這個問題,包括調試VLC源代碼,並沒有在哪裏。 btw我的(REST)網址看起來像http://server:port/livevideo/xyz 然後,我想我應該嘗試http://server:port/livevideo/xyz.mjpeg 然後猜猜看,VLC開始播放視頻! 我認爲VLC可能需要比內容類型更多的提示才能找出它是一個mjpeg流。 希望這有助於。

辛迪

0

您是否嘗試過這樣的:

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

或它們的一些變化?

0

我不能讓火狐發揮我流(雖然鉻播放它沒關係)。對於VLC,我將緩衝區設置爲0毫秒(在高級打開選項下),它似乎從那裏起作用,儘管我的數據速率正在消除它。