Live-Video von meiner C#-Anwendung auf die ASP.NET-Webseite streamenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Live-Video von meiner C#-Anwendung auf die ASP.NET-Webseite streamen

Post by Anonymous »

Ich habe ein Projekt, das das Senden eines Live-Videostreams an einen Web-Client erfordert. Ich habe eine Server-App, die mithilfe von DirectShow tatsächlich einen Live-Videostream aus der Direct3D-Szene erstellt. Ich habe meinen eigenen DirectShow-Quellfilter und seine Ausgabe wird mit dem WEBM-Codec komprimiert. Es funktioniert gut, wenn Sie den Videostream in einer Datei speichern, die später problemlos angezeigt werden kann.

Der nächste Schritt besteht jedoch darin, den Live-Videostream in einen Web-Client zu übersetzen. Ich habe versucht, es über TCP an meine ASP.NET MVC4-Anwendung zu senden. Mein Seitencontroller sieht wie folgt aus:

Code: Select all

public class VideosController : ApiController
{
/// 
/// Web API method to paste into videocontainer in "video" tag on web page
/// 
/// 
File name with location path
/// Videofile extension
/// Return stream content
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:

Code: Select all

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 habe den Code debuggt und er schien ordnungsgemäß zu funktionieren, d. h. er empfängt den eingehenden Videostream und schreibt ihn in den Ausgabestream, aber ich erhalte immer einen schwarzen Bildschirm, anstatt dass das Video gestreamt wird.

Wenn ich die WriteToStream-Methode so ändere, dass das Video aus einer lokalen Datei (zuvor aus derselben Szene gespeichert) und nicht aus dem Netzwerk gelesen wird, funktioniert das Video einwandfrei.

Was mache ich falsch? Oder gibt es vielleicht eine andere Lösung, um Live-Videos vom Videoserver auf einen Web-Client zu übertragen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post