Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Web - Video : bytes range to time

I have a PHP script for stream a video from an url, and I want to get the time to control the flow.

Browsers makes HTTP requests with a range of bytes when jumping at a time of the video.

Request Headers

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

Response Headers

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

How works that time to bytes conversion ?

On my PHP server I try to get the time from the byte request :

$time_second = $start_request_byte / $video_size_byte * $video_length_second;

But it's not the solution, it isn't exact... Any ideas ?

Thanks

like image 985
Brian Nydegger Avatar asked Aug 02 '26 22:08

Brian Nydegger


1 Answers

Ok, I found a solution using ffprobe !

Command

$ 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

Output

Offset byte => 1:23 of the video

209782270

Explain

  • -i 430079256.mp4 Video input
  • -show_frames Display information about each frame
  • -show_entries frame=pkt_pos Display only information about byte position
  • -read_intervals 01:23%+#1 Read only 1 packet after seeking to position 01:23
  • -of default=noprint_wrappers=1:nokey=1 Don't want to print the key and the section header and footer
  • -hide_banner -loglevel panic Don't want to print banner of ffprob, and hide meta on with "panic" who only show fatal errors
like image 104
Brian Nydegger Avatar answered Aug 04 '26 13:08

Brian Nydegger



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!