Потоковое видео из моего приложения С# на веб-страницу ASP.NETC#

Место общения программистов C#
Ответить
Anonymous
 Потоковое видео из моего приложения С# на веб-страницу ASP.NET

Сообщение Anonymous »

У меня есть проект, который требует отправки живого видеопотока в веб-клиент. У меня есть серверное приложение, которое фактически создает поток живого видео из сцены Direct3D с помощью DirectShow. У меня есть собственный исходный фильтр DirectShow, и его выходные данные сжимаются с помощью кодека WEBM. Это хорошо работает при сохранении видеопотока в файл, который впоследствии можно будет без проблем просмотреть.

Но следующим шагом будет трансляция живого видеопотока в веб-клиент. Я попытался отправить его через TCP в мое приложение ASP.NET MVC4. Мой контроллер страницы выглядит следующим образом:

Код: Выделить всё

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;
}
}
и метод video.WrtieToStream:

Код: Выделить всё

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();
}
}
Я отладил код, и он, похоже, работает правильно, т. е. он принимает входящий видеопоток и записывает его в выходной поток, но вместо потокового видео я всегда получаю черный экран.

Когда я меняю метод WriteToStream на чтение видео из локального файла (сохраненного ранее из той же сцены), а не из сети, видео работает хорошо.

Что я делаю не так? Или, может быть, есть другое решение для передачи живого видео с видеосервера в веб-клиент?

Подробнее здесь: https://stackoverflow.com/questions/200 ... et-webpage
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»