【发布时间】:2014-10-11 19:20:53
【问题描述】:
对于之前在 SO 上被问过一万次的问题,我深表歉意。这种情况似乎与其他情况不同。简而言之,视频播放始终在 Firefox 和 Chrome 上有效,但在 Internet Explorer、所有版本、所有 Windows 版本中总是失败。
我有一个根据 Microsoft 的 HTML5 建议设置的网页。模态窗口提供视频:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
</head>
<body>
<div class="popupwindow">
<video controls autoplay preload="auto" style="width:100%">
<source src="streamvideo.rails?file=$fileName" type="video/mp4" />
</video>
</div>
</body>
</html>
streamvideo.rails 是 Castle Monorail C# 函数,它以 Stream 的形式获取云服务器中的视频文件,并将其作为范围请求流回。
首先,我确定这不是常见的问题:编解码器可能没问题,响应的 Content-Type 正确(视频/mp4),IE 甚至可以正确拾取视频,至少最初是这样。浏览器内的网络嗅探器显示它收到了一小段 MP4 文件,然后停止了。
我注意到一个奇怪的地方:IE 没有将视频请求构建为范围请求,而 Chrome/FF 是。 Chrome 的标题:
GET [my URL]?fileName=e65b0b0d-0911-4e3f-bc71-7b5d5a65db57.mp4 HTTP/1.1
Host: localhost
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36
Accept: */*
DNT: 1
Accept-Language: en-US,en;q=0.8
Range: bytes=0-6130
IE 的标题:
GET [same URL] HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept: */*
GetContentFeatures.DLNA.ORG: 1
Pragma: getIfoFileURI.dlna.org
Accept-Language: en-US
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
DNT: 1
Host: localhost
我推测如果我解决了这个差异,问题就会消失。那么:为什么 IE 决定不提出范围请求?我怎么能强迫它?如果您认为我在寻找虚假线索,我还能检查什么?
【问题讨论】:
-
您找到任何解决方案了吗?我遇到了同样的问题,我的文件在 Chrome 和 Firefox 中像魅力一样工作和流式传输,但 IE 有些如何在播放前下载整个文件。我不想对它们进行网络优化以供播放。我想要的是 IE 应该能够像其他浏览器一样进行范围请求并让它播放。
-
不幸的是,我认为我没有这样做。 “解决方案”是将项目交给其他人,后者迅速将所有视频上传到 Vimeo。
标签: html internet-explorer video http-headers