2010-09-24 17 views
7

Estoy tratando de crear una aplicación en la que tengo que transmitir los archivos multimedia (audio y video) al navegador. Estoy leyendo el archivo a través de php y envío los datos al navegador. Estoy usando el siguiente código.Cómo transmitir un archivo multimedia usando 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; 

Cada cosa está funcionando bien, excepto cuando intento enviar el video o audio, (me refiero a suponer reproducción actual ubicación es doce y cuarto y se van directamente a 1:25), paradas de medios de comunicación y cuando presione el botón de reproducción nuevamente, comienza desde el principio.

Creo que el problema es con el almacenamiento en búfer, pero no se puede resolver. ¿Estoy haciendo algo mal en el encabezado o se requiere algo más?

Gracias.

+0

Prefiero Flash-streaming;), menos filesize = carga más rápida. También es más fácil de integrar en un sitio web. – Jordy

+3

@Jordy AFAIK Flash no hace la transmisión del servidor. Todavía necesita una secuencia de comandos del lado del servidor para transmitir una flv, de lo contrario, tendría que esperar a que se cargue todo el archivo antes de poder verlo. –

+1

siguiente que puede avanzar rápidamente: __http: //codesamplez.com/programming/php-html5-video-streaming-tutorial__ – vuhung3990

Respuesta

5

Creo que debe implementar el encabezado del rango, para que el cliente pueda saltar a una posición específica en el archivo. Probablemente pueda averiguar qué va mal al sniffing the request que envía el jugador.

+0

¿Es la propiedad de los jugadores para enviar qué posición buscar, quiero decir, tengo que configurar el script en el jugador para especificar la posición de búsqueda y enviar luego al servidor. –

+0

el enlace está muerto ahora. –

+0

Pero el archivo funciona: https://web.archive.org/web/20111207023157/http://linuxonly.nl/docs/38/122_Introduction.html – hakre

1

me encontré con esto recientemente que puede ayudarle a:

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

En lugar de pasar todo el archivo a través de PHP (que se come la memoria), puede utilizar X-sendfile. Este es un módulo de Apache que le permite ejecutar un programa PHP, pero transfiere el control nuevamente al servidor web para manejar la descarga del archivo real una vez que su código haya hecho lo que necesita hacer (autenticación, etc.).

Significa que su código PHP no tiene que preocuparse por cómo se sirve el archivo; deje que el servidor web haga lo que está diseñado.

Espero que ayude.

Cuestiones relacionadas