网络 - 视频:字节范围到时间

时间:2016-05-10 09:25:35

标签: php http video range byte

我有一个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;

但它不是解决方案,它不是确切的......任何想法?

由于

1 个答案:

答案 0 :(得分:2)

好的,我找到了使用ffprobe的解决方案!

<强>命令

$ ffprobe -i 430079256.mp4 -show_frames \
-show_entries frame=pkt_pos \
-read_intervals 01:23%+#1 \
-of default=noprint_wrappers=1:nokey=1 \
-hide_banner -loglevel panic

<强>输出

偏移字节=&gt;视频的1:23

209782270

<强>解释

  • -i 430079256.mp4视频输入
  • -show_frames显示有关每个框架的信息
  • -show_entries frame=pkt_pos仅显示有关字节位置的信息
  • -read_intervals 01:23%+#1在寻找位置01:23
  • 后只读1个数据包
  • -of default=noprint_wrappers=1:nokey=1不想打印密钥 和节头和页脚
  • -hide_banner -loglevel panic不要打印ffprob的横幅,并用“恐慌”&#34;隐藏元数据。谁只显示致命错误