【发布时间】:2018-04-02 21:05:12
【问题描述】:
我发现了一堆示例,这些示例使用了我的应用程序中不可用的对象,并且似乎与我的 .NET Core Web API 版本不匹配。本质上,我正在开发一个项目,该项目将在网页上具有<video> 标签,并希望使用来自服务器的流加载视频,而不是通过路径直接提供文件。一个原因是文件的来源可能会改变,并且通过路径提供它们不是我的客户想要的。所以我需要能够打开一个流并异步写入视频文件。
由于某种原因,这会产生 JSON 数据,所以这是错误的。但我只是不明白如何将流式视频文件发送到 HTML 中的<video> 标记。
当前代码:
[HttpGet]
public HttpResponseMessage GetVideoContent()
{
if (Program.TryOpenFile("BigBuckBunny.mp4", FileMode.Open, out FileStream fs))
{
using (var file = fs)
{
var range = Request.Headers.GetCommaSeparatedValues("Range").FirstOrDefault();
if (range != null)
{
var msg = new HttpResponseMessage(HttpStatusCode.PartialContent);
var body = GetRange(file, range);
msg.Content = new StreamContent(body);
msg.Content.Headers.Add("Content-Type", "video/mp4");
//msg.Content.Headers.Add("Content-Range", $"0-0/{fs.Length}");
return msg;
}
else
{
var msg = new HttpResponseMessage(HttpStatusCode.OK);
msg.Content = new StreamContent(file);
msg.Content.Headers.Add("Content-Type", "video/mp4");
return msg;
}
}
}
else
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
}
【问题讨论】:
-
您能否指定打开视频文件流的方式?
标签: c# video-streaming html5-video asp.net-core-2.0