Как принять поток ffmpeg с помощью ac # .net core web api - PullRequest
0 голосов
/ 07 ноября 2019

Итак, я настраиваю потоковый веб-сайт для увлекательного обучения, и я нашел здесь этот проигрыватель, который очень хорошо работает для меня https://github.com/phoboslab/jsmpeg На этой странице у них есть github со скриптом узла, который называется websocket-relay. JS, что я в основном пытаюсь воспроизвести в C #. В основном, возьмите поток данных из ffmpeg и отправьте его через веб-сокеты в проигрыватель javascript.

В настоящее время я добился немалого прогресса, взял пакет nuget для веб-сокет-резкости для обработки нужного мне сервера веб-сокетов иЯ могу читать в потоке из тела запроса вызова API, однако, потому что это поток не сжимается, я не могу видеть, как долго это происходит, и поэтому я просто случайным образом выбрасываю 1024 байта в проигрыватель в бесконечном цикле. Однако аудио и видео очень нестабильны.

2 другие проблемы поменьше:1. Я не знаю, когда заканчивается поток (человек прекращает потоковую трансляцию)2. В конце концов поток становится большим, и я получаю ошибку

Microsoft.AspNetCore.Server.IIS.BadHttpRequestException: 'Request body too large.'

Вот код, в котором у меня есть и работает, как указано выше.

var reader = Request.BodyReader.AsStream(true);
while (reader.CanRead)
{
  byte[] buf = new byte[1024];
  reader.Read(buf, 0, buf.Length);
  Sessions.Broadcast(buf);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...