Pregunta

Estoy generando un MJpeg Stream e intento transmitirlo a VLC y reproducirlo allí.

El código:

        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 intento abrir el flujo con Firefox, no hay ningún problema, aunque con VLC no funciona (VLC parece seguir leyendo pero nunca muestra el video)

He estado olfateando la transmisión de VLC a VLC y parece que se usan como encabezado HTTP "application / octet-stream" en lugar de multipart / x-mixed-replace

¿Alguna idea?

Tks por adelantado, Jose

¿Fue útil?

Solución

José, Tuve exactamente el mismo problema. Firefox reproduce mi transmisión pero VLC no. Revisé muchas formas de resolver esto, incluyendo la depuración del código fuente de VLC, y no conseguí dónde. Por cierto, mi URL (REST) ??se parece a http: // server: port / livevideo / xyz Entonces, pensé que debería intentar http: // server: port / livevideo / xyz.mjpeg Y adivina qué, VLC comenzó a reproducir video! Creo que VLC podría necesitar una pequeña pista más que el tipo de contenido para darse cuenta de que es un flujo de mjpeg. Espero que esto ayude.

Cindy

Otros consejos

Has probado esto:

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

¿O alguna variación de esos?

No puedo hacer que Firefox reproduzca mi transmisión (aunque Chrome lo reproduce bien). Para VLC configuré el búfer en 0 ms (en las opciones de apertura avanzadas) y parecía funcionar desde allí, aunque mi tasa de datos lo está matando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top