Streaming von live-video aus meinem c# - Anwendung ASP.NET Webseite

Habe ich ein Projekt, das erfordert, dass die übertragung des live-video-stream zu einem web-client. Ich habe eine server-app, die eigentlich macht live-video-stream aus der Direct3D Szene mit DirectShow. Ich habe meine eigene DirectShow-Quell-filter und seine Leistung wird komprimiert mit WEBM-codec. Es funktioniert gut, wenn das speichern von video-stream an eine Datei, die später eingesehen werden können, ohne irgendwelche Probleme.

Aber im nächsten Schritt ist zu übersetzen live-video-stream, um einen web-client. Ich tryied, um es zu senden über TCP zu meinem ASP.NET MVC4 Anwendung. Meine Seite " controller sieht aus wie folgt:

public class VideosController : ApiController
{
    ///<summary>
    ///Web API method to paste into videocontainer in "video" tag on web page
    ///</summary>
    ///<param name="filename">File name with location path</param>
    ///<param name="ext">Videofile extension</param>
    ///<returns>Return stream content</returns>
    public HttpResponseMessage Get(string filename, string ext)
    {
        var video = new VideoStream();

        var response = Request.CreateResponse();
        response.Content = new PushStreamContent(video.WriteToStream, new MediaTypeHeaderValue("video/" + ext));

        return response;
    }
}

und video.WrtieToStream Methode:

public void WriteToStream(Stream outputStream, HttpContent content, TransportContext context)
{
    try
    {
        var buffer = new byte[65536];

        TcpClient serverSocket;
        serverSocket = new TcpClient("localHost", 333);
        NetworkStream netStream = serverSocket.GetStream();

        StreamReader streamReader = new StreamReader(netStream);
        try
        {
            var bytesRead = 0;
            while (true)
            {
                bytesRead = netStream.Read(buffer, 0, buffer.Length);
                outputStream.Write(buffer, 0, bytesRead);
            }
        }
        catch (EndOfStreamException)
        {
            Console.WriteLine("End of file transaction");
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
    catch (HttpException ex)
    {
        return;
    }
    finally
    {
        outputStream.Close();
    }
}

Ich Debuggen Sie den code, und es schien zu funktionieren korrekt, d.h. es empfängt eingehende video-stream und schreibt Sie auf die Standardausgabe geschrieben, aber ich bekomme immer schwarzer Bildschirm anstelle des Videos gestreamt werden.

Wenn ich WriteToStream-Methode zum Lesen von video von lokalen Datei (zuvor gespeicherte aus der gleichen Szene), nicht vom Netz, dann video gut funktioniert.

Was mache ich falsch? Oder vielleicht gibt es andere Lösung, um live-Videobilder von video-server zu einem web-client?

  • hast du das Problem zu beheben in der Zwischenzeit?
InformationsquelleAutor user3000472 | 2013-11-16
Schreibe einen Kommentar