Ich benutze ein PHP-Skript, um Videoanfragen zu validieren, bevor sie geliefert werden. Dieses Skript funktioniert wie erwartet auf dem Desktop mit Safari und Chrome. Aber auf iOS bekomme ich einen kaputten Spielknopf.MP4 wird abgespielt, wenn direkt zugegriffen wird, aber nicht, wenn PHP gelesen wird, auf iOS
Ich bin mir sicher, dass das Video richtig für iPhone/iPad kodiert ist, denn wenn ich direkt darauf zugreife, funktioniert es wie erwartet.
Der entsprechende PHP-Code:
$file_name = 'test-video.mp4';
$file_size = (string)(filesize($file_name));
header('Content-Type: video/mp4');
header('Content-Length: '.$file_size);
readfile_chunked($file_name);
exit;
(readfile_chunked()
ähnlich ist readfile()
aber für sehr große Dateien, in den Kommentaren auf der PHP-Handbuch Seite gefunden. http://php.net/manual/en/function.readfile.php In jedem Fall test-video.mp4
sind nur ~ 5 MB ., die kleiner ist als die Speichergrenze - und in diesem Fall kann ich eigentlich in der normalen readfile()
und erzeugen genau das gleiche Verhalten ersetzen)
die Header ich bekomme, wenn ich test-video.mp4
direkt zugreifen, sind:
Accept-Ranges:bytes
Connection:Keep-Alive
Content-Length:5558749
Content-Type:video/mp4
Date:Sun, 27 Jun 2010 21:02:09 GMT
Etag:"1c04757-54d1dd-489944c5a6400"
Keep-Alive:timeout=10, max=30
Last-Modified:Tue, 22 Jun 2010 01:25:36 GMT
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
Die Header aus dem PHP-Skript sind:
Connection:Keep-Alive
Content-Disposition:inline; filename="test-video.mp4"
Content-Length:5558749
Content-Type:video/mp4
Date:Sun, 27 Jun 2010 21:03:32 GMT
Keep-Alive:timeout=10, max=15
Server:Apache/2.2.15 (CentOS) mod_ssl/2.2.15 0.9.8l DAV/2 mod_auth_passthrough/2.1 FrontPage/5.0.2.2635
X-Powered-By:PHP/5.2.13
ich viele verschiedene Permutationen von Headern versucht habe, auch sie genau die von einer direkten Anfrage, ohne Erfolg übereinstimmen.
Hat jemand Erfolg gehabt, HTML5-Video durch PHP auf iOS zu bedienen?
[Anmerkung:. Ich würde versuchen, X-Sendfile verwenden, aber die Website ist auf einem gemeinsamen Host mit sehr begrenztem Zugang]
EDIT: Ich lese, dass iOS über Dateierweiterungen empfindlich sein kann, so Ich habe versucht, eine RewriteRule einzurichten, die MP4-Anfragen zurück zu meinem ursprünglichen PHP-Skript schreibt, aber das half auch nicht.
Genau richtig - landete ich nur das Kopieren der 'rangeDownload()' Funktion von Anhang A des folgenden Beitrages: http://mobiforge.com/developing/story/content-delivery-mobile-devices (Was ist cool Über diese Funktion ist es auch möglich, dass der Benutzer die Wiedergabe von jedem Punkt des Videos startet, indem er einfach auf die Timeline klickt.) Ich glaube, ich war besonders verwirrt wegen des Problems, weil es perfekt auf dem Desktop funktionierte, während iOS dieses Byte hat Bereich Anforderung. – JKS