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