我对 HTML5 视频标签有一个非常奇怪的问题。关键是:我需要在浏览器中查看视频(无法更改,客户希望它是 HTML5)。所以,我潜伏在它的工作原理上,发现它需要 Range 标头才能正常工作,我写了一个小解析器来继续它。基本上,一切都在标准中,我确实返回了正确的标题/正文/任何东西......这是我使用的标题列表
context.Response.StatusCode = 206;
if(begin == 0 && end == total)
context.Response.StatusCode = 200;
context.Response.ContentType = "video/mp4";
context.Response.AddHeader("Accept-Ranges", "bytes");
context.Response.AddHeader("Content-Range", String.Format("bytes {0}-{1}/{2}", begin, end, total));
context.Response.AddHeader("Content-Disposition", "inline;");
context.Response.AddHeader("Content-Transfer-Encoding", "binary");
正如我在 curl 中看到的那样,响应是正确的,应该发送字节,但问题是浏览器(出于某种原因)在发送带有“范围:字节 = 0-”的第一个请求之后(并收到大约 18683 个字节)开始发送带有“范围:字节:6865374-”的请求(数字是随机的,它在文件末尾附近)所以没有任何工作,因为从不要求接收文件的中间部分。服务器说“由于线程退出或应用程序请求,I/O 操作已中止”。我认为这是因为 borwser 关闭了与服务器的连接,但我不确定。最棒的是 IE(惊喜!)工作正常,除了它首先下载整个 mp4 文件然后才播放它。我已经不知道该怎么办了,有什么想法吗?