2010-09-24 6 views
7

Ich versuche, eine Anwendung, in der ich die Mediendateien (Audio und Video) an den Browser zu streamen haben zu bauen. Ich lese die Datei über PHP und sende die Daten an den Browser. Ich verwende den folgenden Code.Wie streame ich eine Mediendatei mit PHP?

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header("Content-Type: {$file->getMimetype()}"); 
header("Content-Disposition: inline; filename=".$filename.";"); 
header("Content-Length: ".strlen($file_content)); 

echo $file_content; 

Alles funktioniert gut, außer wenn ich versuche, das Video oder Audio zu übermitteln (nehme ich an meinen aktuellen Wiedergabeposition 00.15 ist und es direkt zum 01.25), Medien stoppt und wenn i Drücken Sie die Play-Taste erneut, es beginnt von Anfang an.

denke ich, das Problem mit der Pufferung ist, aber kann es nicht herausgefunden. Mache ich etwas falsch im Header oder etwas anderes ist erforderlich.

Danke.

+0

Haben genannt Ich bevorzuge Flash-Streaming;), weniger Dateigröße = schnelleres Laden .. Auch einfacher in eine Website zu integrieren. – Jordy

+3

@Jordy AFAIK Flash tut nicht das Streaming des Servers. Sie benötigen immer noch ein serverseitiges Skript, um ein flv zu streamen. Andernfalls müssten Sie warten, bis die gesamte Datei geladen ist, bevor Sie sie anzeigen können. –

+1

Folow, dass Sie nach vorne kann fasten: __http: //codesamplez.com/programming/php-html5-video-streaming-tutorial__ – vuhung3990

Antwort

5

Ich glaube, Sie müssen den Range-Header implementieren, so dass der Kunde in eine bestimmte Position in der Datei überspringen. Sie können wahrscheinlich herausfinden, was bei sniffing the request der Spieler schief geht.

+0

es die Spieler Eigenschaft ist, die Position zu senden zu suchen, ich meine muss ich einstellen muss te Skript in der Spieler die Suchposition anzugeben und dann an den Server zu senden. –

+0

der Link ist jetzt tot. –

+0

Aber die Archivarbeiten: https://web.archive.org/web/20111207023157/http://linuxonly.nl/docs/38/122_Introduction.html – hakre

1

Ich kam vor kurzem in diese, die Ihnen helfen können:

http://www.jasny.net/articles/how-i-php-x-sendfile/

vielmehr die gesamte Datei durch PHP (die frisst Speicher) als geben, können Sie x-sendfile verwenden. Dies ist ein Apache-Modul, mit dem Sie ein PHP-Programm ausführen können, aber die Kontrolle zurück an den Webserver übergeben, um den eigentlichen Datei-Download zu verarbeiten, sobald Ihr Code getan hat, was er tun muss (Authentifizierung, usw.).

Es bedeutet, dass Ihr PHP-Code nicht darum kümmern muss, wie die Datei serviert wird; Lass den Webserver tun, wofür er entwickelt wurde.

Hoffe, dass hilft.