首页 > 解决方案 > asp.net 核心直播 mp4 流媒体

问题描述

序幕:

我有一个从 rtsp:// url 流式传输原始 h264 的海康威视 ipcamera,我需要在浏览器中播放这个实时提要。

我设法使基本的 RTSP->ffmpeg-> (faststart) mp4 管道正常工作,并且可以在保存到文件时播放视频。

我不明白如何使我的控制器操作“可流式传输”。

我尝试了各种方法,例如写入 Response.Body、Transfer-Encoding: chunked 但似乎没有任何效果。这是基本代码:

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

我错过了什么吗?

标签: asp.net-corevideoffmpegstreamingmp4

解决方案


MP4 不能直播。

最快的解决方案是您应该保持 H.264 格式原样(不包含在某些 MP4 文件中)并且只使用任何基于 JavaScript 的 H.264 解码器


推荐阅读