asp.net основная прямая трансляция mp4 в реальном времени

#asp.net-core #video #ffmpeg #streaming #mp4

#asp.net-core #Видео #ffmpeg #потоковая передача #МР4

Вопрос:

Пролог:

У меня есть ip-камера hikvision, которая транслирует необработанный файл h264 с rtsp: // url, мне нужно воспроизвести эту прямую трансляцию в браузере.

Мне удалось запустить базовый конвейер RTSP-> ffmpeg-> (faststart) mp4, и я могу воспроизводить видео при сохранении в файл.

Я не понимаю, как сделать действие моего контроллера «потоковым».

Я пробовал различные подходы, такие как написание ответа.Тело, передача-кодирование: фрагментировано, но, похоже, ничего не работает. Вот базовый код:

 public IActionResult Play5(){    
      var ms = new MemoryStream();
      var muxer = new RTSPToMp4(ms);
      Task.Run(() => muxer.Stream());
      return new FileStreamResult(ms, "video/mp4");
}
  

Поток памяти содержит прямую трансляцию, но ответ пуст, вот запрос ответ от chrome:

Запрос

 method: GET
:path: /api/stream/play5
:scheme: https
accept: */*
accept-encoding: identity;q=1, *;q=0
accept-language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7
cache-control: no-cache
pragma: no-cache
range: bytes=0-
referer: https://localhost:5001/Stream
sec-fetch-dest: video
sec-fetch-mode: no-cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36
  

Ответ

 content-length: 0
content-type: video/mp4
date: Thu, 08 Oct 2020 14:31:06 GMT
server: Kestrel
status: 200
  

Я что-то упускаю?

Ответ №1:

MP4 не может транслироваться в прямом эфире.

Самое быстрое решение заключается в том, что вы должны сохранить формат H.264 как есть (не содержащийся в каком-либо файле MP4) и просто использовать любой декодер H.264 на основе JavaScript.