2016-05-10 3 views
1

Ich habe ein PHP-Skript zum Streamen eines Videos von einer URL, und ich möchte die Zeit, um den Fluss zu steuern.Web - Video: Bytes Bereich zu Zeit

Browser macht HTTP-Anfragen mit einer Reihe von Bytes beim Springen zu einem Zeitpunkt des Videos.

Anfrageheaders

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 

Antwortheader

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 

Wie die Zeit zu Bytes Konvertierung funktioniert?

Auf meinem PHP-Server Ich versuche, die Zeit von der Byte-Anfrage zu erhalten:

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

Aber es ist nicht die Lösung, ist es nicht genau ... Irgendwelche Ideen?

Danke

+0

'Content-Range' ist was der Server sendet. Der Browser sendet 'Range'. Erstellen Sie den Server, der auf die Bereichsanforderungen des Browsers reagieren muss? Es ist nicht sehr klar. –

+0

Was wird im Browser verwendet, um das Video anzuzeigen? Ein HTML '

+0

Die Dateigröße hat keine Beziehung zur Videolänge. Ich kann ein 1 Stunde langes Video mit einer Dateigröße von 5MB erstellen. Aber auch ein Video, das nur 1 Minute dauert, aber 500MB groß ist. –

Antwort

1

Ok, ich fand eine Lösung mit ffprobe!

Befehl

$ 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 

Ausgabe

Offset-Byte => 1.23 des Video

209782270 

Erklären

  • -i 430079256.mp4 Videoeingang
  • -show_frames Anzeigen von Informationen zu jedem Rahmen
  • -show_entries frame=pkt_pos Anzeige nur Informationen über Byteposition
  • -read_intervals 01:23%+#1 nur 1 Paket Lesen Sie nach der Suche nach 01:23
  • -of default=noprint_wrappers=1:nokey=1 positionieren Ich will nicht Drucken Sie die Taste und die Abschnitt Kopf- und Fußzeile
  • -hide_banner -loglevel panic Will nicht Banner von ffprob drucken, und ausblenden Meta mit "Panik" wer nur show fatal errors