2010-09-24 12 views
7

Sto provando a creare un'applicazione in cui devo eseguire lo streaming dei file multimediali (audio e video) nel browser. Sto leggendo il file tramite php e inviamo i dati al browser. Sto usando il seguente codice.Come eseguire lo streaming di un file multimediale utilizzando 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; 

Ogni cosa sta funzionando benissimo, tranne quando provo a trasmettere il video o audio, (intendo suppongo posizione di riproduzione corrente è 00:15 ed è direttamente andare a 1:25), fermate di mezzi e quando ho premi di nuovo il pulsante play, inizia dall'inizio.

Penso che il problema sia con il buffering, ma non riesco a capirlo. Sto facendo qualcosa di sbagliato nell'intestazione o qualcos'altro è richiesto.

Grazie.

+0

Preferisco lo streaming Flash;), meno file = caricamento più veloce .. Anche più facile da integrare in un sito web. – Jordy

+3

@Jordy AFAIK Flash non esegue lo streaming del server. È ancora necessario uno script lato server per lo streaming di un flv altrimenti bisognerà attendere l'intero caricamento del file prima di poterlo visualizzare. –

+1

folow che puoi avanzare velocemente: __http: //codesamplez.com/programming/php-html5-video-streaming-tutorial__ – vuhung3990

risposta

5

Penso che sia necessario implementare l'intestazione Range, in modo che il client possa saltare a una posizione specifica nel file. Probabilmente puoi scoprire cosa va storto dal sniffing the request che il giocatore invia.

+0

È la proprietà dei giocatori a cui inviare la posizione, cioè devo impostare il copione in il giocatore per specificare la posizione di ricerca e inviare quindi al server. –

+0

il link è morto ora. –

+0

Ma l'archivio funziona: https://web.archive.org/web/20111207023157/http://linuxonly.nl/docs/38/122_Introduction.html – hakre

1

mi sono imbattuto in questo di recente, che possono aiutare a:

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

Invece di passare l'intero file tramite PHP (che divora memoria), è possibile utilizzare x-sendfile. Questo è un modulo Apache che consente di eseguire un programma PHP, ma passare il controllo al server Web per gestire il download effettivo del file una volta che il codice ha eseguito ciò che deve fare (autenticazione, ecc.).

Significa che il codice PHP non deve preoccuparsi di come viene servito il file; lascia che il web server faccia ciò per cui è stato progettato.

Spero che questo aiuti.

Problemi correlati