google-chrome - Chrome 不会提出额外的视频文件请求

标签 google-chrome html5-video mp4

我尝试实现伪流,我有像这样的html:

<video src="GetVideo.ashx?id=mp4" controls></video>

加载页面后 Chrome 28.0.1500.72 m 发送请求(甚至在点击播放之前):

GET /GetVideo.ashx?id=mp4 HTTP/1.1
Host: localhost
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36
Accept: */*
Referer: http://localhost/JWPlayerTestMp4Proper.aspx
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: jwplayer.volume=12
Range: bytes=0-

服务器响应

HTTP/1.1 206 Partial Content
Cache-Control: private
Content-Length: 5186931
Content-Type: video/mp4
Content-Range: bytes 0-5186930/5186931
Accept-Ranges: bytes
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 22 Jul 2013 08:13:28 GMT

点击播放后文件开始播放,但问题是如果我尝试寻找尚未下载的部分,它不会发送对该部分的额外请求,它只是等待文件在指定位置下载。

当我在 Firefox 22.0 中执行相同操作时: 第一个请求(页面加载后):

GET http://localhost/GetVideo.ashx?id=mp4 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Range: bytes=0-
Referer: http://localhost/JWPlayerTestMp4Proper.aspx
Connection: keep-alive

第一个响应(与 Chrome 相同):

HTTP/1.1 206 Partial Content
Cache-Control: private
Content-Length: 5186931
Content-Type: video/mp4
Content-Range: bytes 0-5186930/5186931
Accept-Ranges: bytes
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 22 Jul 2013 08:28:19 GMT

第二个请求(在寻找尚未下载的部分之后):

GET http://localhost/GetVideo.ashx?id=mp4 HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Range: bytes=2490368-
Referer: http://localhost/JWPlayerTestMp4Proper.aspx
Connection: keep-alive

第二个响应:

HTTP/1.1 206 Partial Content
Cache-Control: private
Content-Length: 2696563
Content-Type: video/mp4
Content-Range: bytes 2490368-5186930/5186931
Accept-Ranges: bytes
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 22 Jul 2013 08:35:34 GMT

IE 10 的工作方式与 Firefox 相同。

Chrome 期望什么样的响应 header 能够以相同的方式运行 - 在寻找未下载的部分后发出额外的请求?

最佳答案

事实证明响应 header 是正确的。 问题是我使用的视频文件长度较小,而 chrome 似乎有某种优化,如果时间差异太小(不到 30 秒左右),则不会发送额外的请求。

关于google-chrome - Chrome 不会提出额外的视频文件请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783120/

相关文章:

jquery - Internet Explorer 不显示 Flowplayer-视频

css - 如何在 chrome 中配置工作区?

google-chrome - 如何在Web组件测试器中选择浏览器版本?

javascript - Chrome : JQuery animate; only appears to work when selected in developer tools

javascript - VideoJS HTML5 Video JS 如何将音量提高到最大值以上?

Chrome 中的 HTML5 视频标签 - 为什么从我的网络服务器下载视频时忽略 currentTime?

ñÑ 字符的 Javascript 验证适用于 Chrome,但不适用于 Firefox

javascript - 比较媒体源扩展 (MSE) 与 WebRTC

C# - TagLib 获取 ISO block 偏移值

ffmpeg - "ffprobe -v trace demo.mp4"输出的含义