php apache .htaccess streaming flowplayer

php - Flowplayer Secure Streaming con Apache



.htaccess (2)

Ok, lo resolví! En esta línea:

$streamname = "http://www.mydomain.com/videos/".$streamname; (Ya no está ahí)

Lo tenía todo mal. Todo lo que tuve que hacer fue eliminar esta línea y funcionó. Comenzará con su baseUrl. Por lo tanto, ya estaba en la carpeta "videos", por lo que $ streamname debería ser igual a la ubicación del archivo después de la baseUrl.

En una nota lateral, esto me tomó alrededor de una semana para resolver que estaba buscando en todas partes en internet para juntar las piezas. Creé esto en un tutorial para que otros no tengan tanto dolor de cabeza (¡con suerte!)

Actualización: ahora es un tutorial sobre cómo brindar cierto nivel de seguridad a los videos de transmisión si:
1) estás usando Flowplayer con Apache
2) no desea que los usuarios puedan descargar el video (solo transmisión)
3) no desea que los usuarios puedan poner la URL del video en el navegador (videos de acceso limitado)
4) solo quieres que los usuarios puedan transmitir el video si tienen las credenciales adecuadas

Debe tener conocimiento previo de los archivos PHP y .htaccess .

Publicación original:
Mi cliente quiere que sus videos estén ocultos para que no puedan transmitirse hasta que se compren en su dominio (tampoco quiere que los usuarios puedan descargar el video). Estoy intentando hacer esto con Flow Stream seguro de Flowplayer y creo que ya casi estoy allí. ¡Estoy allí ahora!). Después de buscar en todas partes encontré esta publicación .

He restringido el enlace directo de otros sitios a través de .htaccess. Ahora intento restringir el acceso de alguien que solo copie el URL y lo pegue en la barra de direcciones (es decir, http://www.mydomain.com/videos/testVideo. mov )

He usado PHP / AJAX para generar este HTML (la mayoría de los ejemplos usan el plugin JS Flowplayer, estoy usando la etiqueta <object> para incrustar el reproductor, sin JS involucrado. Si usa el plugin JS, utilícelo en su lugar de la versión incrustada, el archivo .htaccess y el archivo video.php serán los mismos).

$videofilename = ''testVideo.mov''; $hash = md5(''1234''); $timestamp = time(); $videoPath = $hash.''/''.$timestamp.''/''.$videofilename; echo '' <object width="667" height="375" type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.8.swf"> <param name="wmode" value="transparent"/> <param name="movie" value="../swf/flowplayer.securestreaming-3.2.8.swf" /> <param name="allowfullscreen" value="true" /> <param name="timestamp" value="''.$timestamp.''" /> <param name="token" value="''.$hash.''" /> <param name="streamName" value="''.$videofilename.''" /> <param name="flashvars" value=/'config={ "playlist":[ {"url": "''.$videoPath.''", "baseUrl": "http://www.mydomain.com/videos", "autoPlay":false,"autoBuffering":true,"bufferLength":5} ] }/' /> </object>'';

Ahora en los videos del directorio coloco este archivo .htaccess:

RewriteEngine on RewriteRule ^(.*)/(.*)/(.*)$ http://www.mydomain.com/vidoeos/video.php?h=$1&t=$2&v=$3 RewriteRule ^$ - [F] RewriteRule ^[^/]+/.(mov|mp4)$ - [F]

Actualización: El propósito del archivo php es 1) obtener hash de datos, marca de tiempo y nombre de archivo de video (test.mov o lo que sea) 2) Asegúrate de que todo se compruebe (deliberadamente omite las comprobaciones de seguridad en este ejemplo) 3) Dale a Flowplayer la transmisión de tu video. Asegúrese de que $originaltimestamp y $hash sean buenos antes de dar acceso. También puede verificar las credenciales de la sesión, obtener la ubicación del archivo ''real'' desde una base de datos o realizar cualquier clase de verificación de seguridad php que desee antes de permitir el acceso del usuario.

Recuerde también cambiar el campo Content-type: para que se correlacione con la extensión de archivo correcta (es decir, video/mp4 si el video es * .mp4)

Y videos/video.php ve así:

<?php session_start(); $hash = $_GET[''h'']; $streamname = $_GET[''v'']; $originaltimestamp = $_GET[''t'']; header(''Content-Description: File Transfer''); header(''Content-type: video/quicktime''); header("Content-length: " . filesize($streamname)); header("Expires: 0"); header("Content-Transfer-Encoding: binary"); $file = fopen($streamname, ''r''); echo stream_get_contents($file); fclose($file); ?>

Tres archivos en total, el HTML con el reproductor, el archivo .htaccess y, por último, el archivo video.php . Mi problema original era que $streamname era incorrecto. Recuerde que $streamname debe ser la ubicación del archivo después de (o debajo de) BaseUrl. Espero que esto ayude a alguien como yo!

¿Alguien ve problemas de seguridad al hacerlo de esta manera?


Me llevó 2 días descubrir esto ...

Si el directorio donde están almacenados tus videos es CHMOD a 777, entonces se detendrá la transmisión ...

Recorrí las casas tratando de descubrir por qué diablos esto no transmitía mi video ...

Tenía un directorio ya establecido para archivos de video como lo usaba otro script popular de php de imágenes que había establecido ese directorio para CHMOD 777 durante su tiempo ... simplemente al configurarlo en CHMOD 755 permití que flv o mp4 transmitieran a mi reproductor integrado en mi php page ... ¡qué alivio!

Así que gracias por el alivio del dolor de cabeza ... esto ayudó mucho, ¡salud!