jquery - 视频流显示在 Micorsoft Edge 中不起作用
问题描述
我是在 ASP.Net MVC 项目中使用视频流的新手。我有一个视频库网络应用程序,大部分视频都是.mp4
格式的。请在下面查看我的代码。
代码
public HttpResponseMessage Get(string filename)
{
var filePath = new FileStreameHelpers().GetFilePath(filename);
if (!File.Exists(filePath))
return new HttpResponseMessage(HttpStatusCode.NotFound);
var response = Request.CreateResponse();
response.Headers.AcceptRanges.Add("bytes");
var streamer = new FileStreameHelpers();
streamer.FileInfo = new FileInfo(filePath);
response.Content = new PushStreamContent(streamer.WriteToStream, new FileStreameHelpers().GetMimeType(Path.GetExtension(filePath)));
RangeHeaderValue rangeHeader = Request.Headers.Range;
if (rangeHeader != null)
{
long totalLength = streamer.FileInfo.Length;
var range = rangeHeader.Ranges.First();
streamer.Start = range.From ?? 0;
streamer.End = range.To ?? totalLength - 1;
response.Content.Headers.ContentLength = streamer.End - streamer.Start + 1;
response.Content.Headers.ContentRange = new ContentRangeHeaderValue(streamer.Start, streamer.End,
totalLength);
response.StatusCode = HttpStatusCode.PartialContent;
}
else
{
response.StatusCode = HttpStatusCode.OK;
}
return response;
}
public async Task WriteToStream(Stream outputStream, HttpContent content, TransportContext context)
{
try
{
var buffer = new byte[6553600];
using (var video = FileInfo.OpenRead())
{
if (End == -1)
{
End = video.Length;
}
var position = Start;
var bytesLeft = End - Start + 1;
video.Position = Start;
while (position <= End)
{
var bytesRead = video.Read(buffer, 0, (int)Math.Min(bytesLeft, buffer.Length));
await outputStream.WriteAsync(buffer, 0, bytesRead);
position += bytesRead;
bytesLeft = End - position + 1;
}
}
}
catch (Exception ex)
{
// fail silently
Utilities.SaveException("FileStreameHelpers - WriteToStream", ex);
}
finally
{
outputStream.Close();
}
}
它在Firefox和Chrome中运行良好,但在Microsoft Edge浏览器中显示错误,如下所示。
HTML
<video width="320" height="240" controls>
<source src="/api/Media/Get?filename=SampleVideo_1280x720_1mb.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
远程主机关闭了连接。错误代码为 0x800703E3。
请指教。
解决方案
实际上这是一个浏览器相关的问题。我更新了我的 MS Edge 浏览器。现在视频流正常工作。
推荐阅读
- javascript - 使用 onclick 启用禁用的下拉菜单
- mysql - MySQL - 将具有相同键的行的列值与相同的键合并
- networking - 我们可以在 JUnit 中进行网络调用吗?
- regex - REGEX - 在文件扩展名后解析变量
- d3.js - SVG D3JS 动画:如何制作弧线“自绘”?
- bokeh - 如何动态地将图形轴从线性更改为对数?
- matplotlib - KDE 图的 Seaborn 加权平均线
- python-3.x - 为什么我收到 TypeError:'ActionChains' 对象不可迭代
- javascript - 使用 ReactiveX 赚取和消费黄金
- google-apps-script - 尝试编写一个按钮来搜索项目(文本)并替换相应的数字