asp.net-core - 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
我错过了什么吗?
解决方案
MP4 不能直播。
最快的解决方案是您应该保持 H.264 格式原样(不包含在某些 MP4 文件中)并且只使用任何基于 JavaScript 的 H.264 解码器。
推荐阅读
- objective-c - 转换为 ARC 报告语义问题实例方法“窗口”未找到
- reactjs - 与 React、Expo 和 React-Navigation 的深度链接
- xml - 如何将节点的内部文本和 XML 提取为字符串?
- reactjs - 在 github 上安装 env-cmd
- sql - SQL 每个值的最大连续值数
- ruby-on-rails - 如何模拟会话登录来测试 Rails 控制器方法?
- powershell - 当从 Powershell Core 和 Powershell 5.1 运行脚本时,使用 export-csv 的 Powershell 输出会产生不同的结果
- mysql - 考虑通过将“EnableRetryOnFailure()”添加到“UseMySql”调用来启用瞬时错误恢复能力
- kubernetes - 使用 Quarkus 挂载 Kubernetes 卷
- swiftui - 如何在 SwiftUI 中正确使用动态成员绑定?