10/04/2010, 15:13
|
| | Fecha de Ingreso: febrero-2006
Mensajes: 20
Antigüedad: 18 años, 9 meses Puntos: 0 | |
Streaming real con AVI (XVID) y php Hola!
Tengo una web con vídeos, los cuales están fuera del directorio visible por el usuario. De esta manera, no hay forma que se los descarguen de forma directa.
El caso es que estoy intentando que se vean mediante streaming pero no lo consigo. Los vídeos se pueden ver tanto con el reproductor web (el plugin de microsoft), como por el vlc, y cualquier reproductor preparado para ello.
Os pego el código del plugin de microsoft, aunque no creo que importe mucho...
<object id="Player" name="Player" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" standby="Cargando en memoria -> Espere por favor ## Loading please wait a moment" type="application/x-oleobject" height="352" width="288">
<param name="URL" value="reproductirvideo.php" ref>
<param name="AutoStart" value="0">
<param name="rate" value="1">
<param name="balance" value="0">
<param name="currentPosition" value="0">
<param name="defaultFrame" value>
<param name="playCount" value="1">
<param name="currentMarker" value="0">
<param name="invokeURLs" value="-1">
<param name="baseURL" value>
<param name="volume" value="50">
<param name="mute" value="0">
<param name="uiMode" value="full">
<param name="stretchToFit" value="0">
<param name="windowlessVideo" value="0">
<param name="enabled" value="-1">
<param name="enableContextMenu" value="-1">
<param name="fullScreen" value="0">
<param name="SAMIStyle" value>
<param name="SAMILang" value>
<param name="SAMIFilename" value>
<param name="captioningID" value>
<param name="enableErrorDialogs" value="0">
<param name="_cx" value="12700">
<param name="_cy" value="11536">
<embed name="Player" src="reproductirvideo.php" type="application/x-mplayer2" showc="" showstatusbar="1" autosize="true" loop="true" enablec="" 0="" displaysize="0" pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" height="436" width="480"></object>
</div>
El problema viene dado por que los vídeos son bastante grandes (hasta 300MB), y no se visualizan, hasta que no terminan de descargarse totalmente. Es decir, se ve la pantallita del web player en negro, y comienza a poner 1%, 2%, etc... Hasta que se carga del todo, y comienza a verse el vídeo. Pero claro, ya os podéis imaginar el tiempo que tarda en bajarse un vídeo de estos xD
Os pego el código con el que muestro los vídeos:
header ( 'Content-Type: video/x-msvideo' );
header ( 'Content-Disposition: inline; filename=' . $arch.$extension );
header("Content-length: " . filesize($ruta));
readfile($ruta_total);
También lo he intentado añadiendo las cabeceras:
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
O cambiando el readfile por:
$fp=fopen($ruta, "r");
fpassthru($fp);
En todos los casos se produce el mismo efecto, el reproductor espera a que termine de cargarse el video (totalmente), y entonces comienza a reproducirlo.
No tengo acceso directo al apache del servidor, por lo tanto quedan descartadas opciones como ffmpeg, para convertirlo a flv por ejemplo...
¿Alguien sabe si esto tiene solución o es imposible realizarlo?
Con los wmv normalmente si que se pueden visualizar por streaming, pero tengo muchísimos vídeos, y no es plan de pasarlos todos a wmv. (Además que no me gusta dicho formato)
Tal vez con divx.. se pueda, porque cuando existía stage6, son su web player si que permitía esto, pero claro, también tendría que hacer una conversión.... Así que en último caso, ¿alguien conoce algún software que sea capaz de coger todos los vídeos de un directorio (con subdirectorios), y pasarlos exactamente con la misma calidad y la misma resolución que utiliza para cada vídeo?
(Aunque tal vez esta pregunta vaya en otro sitio :P )
Muchas gracias a todos! |