【发布时间】:2016-05-10 09:25:34
【问题描述】:
我有一个用于从 url 流式传输视频的 PHP 脚本,我想花时间控制流。
浏览器在每次跳转视频时使用一系列字节发出 HTTP 请求。
请求标头
Accept:*/ *
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Host:h.com
If-Range:Tue, 20 Oct 2015 23:38:00 GMT
Range:bytes=560855038-583155711
Referer:http://h.com/7743a76d2911cdd90354bc42be302c6946c6e5b4
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36
响应标头
Accept-Ranges:bytes
Cache-Control:private, max-age=14400
Connection:Keep-Alive
Content-Length:22300674
Content-Range:bytes 560855038-583155711/605162520
Content-Type:video/mp4
Date:Tue, 10 May 2016 11:23:34 GMT
Expires:Tue, 10 05 2016 15:23:34 GMT
Keep-Alive:timeout=5, max=98
Last-Modified:Tue, 20 Oct 2015 23:38:00 GMT
Server:Apache/2.4.7 (Ubuntu)
X-Powered-By:PHP/5.5.9-1ubuntu4.16
这段时间到字节转换的工作原理是什么?
在我的 PHP 服务器上,我尝试从字节请求中获取时间:
$time_second = $start_request_byte / $video_size_byte * $video_length_second;
但这不是解决方案,也不准确......有什么想法吗?
谢谢
【问题讨论】:
-
Content-Range是服务器发送的内容。浏览器发送Range。您是否正在构建必须响应浏览器范围请求的服务器?不是很清楚。 -
浏览器用什么来显示视频? HTML
<video>元素?你能显示一些代码吗? -
文件大小与视频长度无关。我可以制作一个 1 小时长的视频,文件大小为 5MB。还有一个只有 1 分钟但有 500MB 大的视频。
-
@VasiliyFaronov 是的,我的错,它是“范围”,而不是“内容范围”。它是一个简单的
video元素,用于显示视频。 -
@BrianNydegger 这不是一个有效的
Range标头。你能显示浏览器实际发送的内容吗?