2009-04-29 26 views
4

Ich erzeuge einen MJpeg Stream und versuche ihn zu VLC zu streamen und dort abzuspielen.Mjpeg VLC und HTTP Streaming

Der Code:

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

Wenn ich versuche, mit firefox den Stream zu öffnen, gibt überhaupt kein Problem ist, wenn auch mit VLC es nicht funktioniert (VLC scheint das Lesen zu halten, aber zeigt nie das Video)

ich habe Sniffing VLC-to-VLC-Streaming und sie scheint, als HTTP-Header "application/octet-stream" anstelle von multipart/x-mixed-replace

Irgendwelche Ideen zu benutzen?

Tks im Voraus, Jose

Antwort

2

Jose, Ich hatte genau dasselbe Problem. Firefox spielt meinen Stream, aber VLC nicht. Ich ging durch so viele Möglichkeiten, um herauszufinden, einschließlich VCC-Quellcode zu debuggen, und bekam keine wo. BTW Meine (REST) ​​URL sieht aus wie http://server:port/livevideo/xyz Dann dachte ich, ich sollte versuchen http://server:port/livevideo/xyz.mjpeg Und raten Sie mal, VLC begann Video zu spielen! Ich denke, VLC könnte einen kleinen Hinweis mehr als Inhaltstyp benötigen, um herauszufinden, dass es ein Mjpeg-Stream ist. Hoffe, das hilft.

Cindy

0

Haben Sie versucht, dies:

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

oder eine Variation von denen?

0

Ich kann nicht firefox meinen Stream zu spielen (obwohl es in Ordnung, Chrom spielt). Für VLC habe ich den Puffer auf 0 ms gesetzt (unter erweiterte Öffnungsoptionen) und es schien von dort zu funktionieren, obwohl meine Datenrate es tötet.

Verwandte Themen