2009-04-29 4 views
4

Je génère un flux MJpeg et j'essaie de le diffuser sur VLC et de le lire.Mjpeg VLC et HTTP Streaming

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

Si je tente d'ouvrir le flux avec firefox, il n'y a pas de problème du tout, bien qu'avec VLC ne fonctionne pas (VLC semble continuer à lire, mais jamais montre la vidéo)

J'ai sniffer le streaming VLC à VLC et ils semblent utiliser comme en-tête HTTP "application/flux d'octets" au lieu de multipart/x-mixed-replace

Toutes les idées?

TKS à l'avance, Jose

Répondre

2

Jose, J'avais exactement le même problème. Firefox joue mon flux mais VLC doesnt. Je suis allé par tant de façons de comprendre cela, y compris le débogage du code source VLC, et n'a obtenu nulle part. btw Mon URL (REST) ​​ressemble à http://server:port/livevideo/xyz Ensuite, je pensais que je devrais essayer http://server:port/livevideo/xyz.mjpeg Et devinez quoi, VLC a commencé à lire la vidéo! Je pense que VLC pourrait avoir besoin d'un peu de conseil plus que le type de contenu pour comprendre qu'il s'agit d'un flux mjpeg. J'espère que cela aide.

Cindy

0

Avez-vous essayé:

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

ou une variante de ceux?

0

Je ne peux pas jouer mon firefox flux (bien que le chrome joue bien). Pour VLC, j'ai mis le tampon à 0 ms (sous les options ouvertes avancées) et il a semblé fonctionner à partir de là, bien que mon taux de données le tue.