No sé por qué tantas personas dan el consejo equivocado, pero sí se puede hacer esto. El hecho de que se esté "reproduciendo" en el lado del cliente no significa que se guardará en el lado del cliente: tendría que usar un software que pueda grabar la transmisión mientras se está reproduciendo. Ya sea software de captura de pantalla o algo así.
De todos modos, para hacer esto, necesita utilizar .htaccess para redirigir las solicitudes de archivos a un archivo php que servirá dinámicamente la ubicación del archivo y ofuscará la URL.
Usted necesitará lo siguiente en su código html
<html>
<body>
<script type="text/javascript" src="flowplayer-3.2.12.min.js">
</script>
<script type="text/javascript">
// <![CDATA[
window.onload = function() {
$f("player", "flowplayer-3.2.16.swf", {
plugins: {
secure: {
url: "flowplayer.securestreaming-3.2.8.swf",
timestampUrl: "sectimestamp.php"
}
},
clip: {
baseUrl: "secure", // Im using a folder called "secure" you can call it whatever you want
url: "trailer.flv",
urlResolvers: "secure",
scaling: "fit",
onStart: function (clip) {
document.getElementById("info").innerHTML = clip.baseUrl + "/" + clip.url;
}
}
});
};
// ]]>
</script>
<div id="player"></div>
</body>
</html>
sectimestamp.php acaba de esta línea en él:
<?php
echo time();
?>
entonces tiene que escribir su archivo .htaccess de la siguiente manera y el lugar en su carpeta "segura" o en cualquier lugar donde se guarden los videos:
RewriteEngine on
RewriteRule ^(.*)/(.*)/(.*)$ video.php?h=$1&t=$2&v=$3
RewriteRule ^$ - [F]
RewriteRule ^[^/]+\.(flv|mp4)$ - [F]
siguiente paso es yo ur archivo video.php que está en el mismo directorio que el .htaccess (se puede poner en otro lugar simplemente ajustar la dirección URL en el .htaccess
<?php
$hash = $_GET['h'];
$streamname = $_GET['v'];
$timestamp = $_GET['t'];
$current = time();
$token = 'kljaslidilhal9023402'; // I recommend a dynamic token to be generated using something like mt_rand() function
$checkhash = md5($token . '/' . $streamname . $timestamp);
if (($current - $timestamp) <= 2 && ($checkhash == $hash)) {
$fsize = filesize($streamname);
header('Content-Disposition: attachment; filename="' . $streamname . '"');
if (strrchr($streamname, '.') == '.mp4') {
header('Content-Type: video/mp4');
} else {
header('Content-Type: video/x-flv');
}
header('Content-Length: ' . $fsize);
session_cache_limiter('nocache');
header('Expires: Thu, 19 Nov 1981 08:52:00 GMT');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Pragma: no-cache');
$file = fopen($streamname, 'rb');
print(fread($file, $fsize));
fclose($file);
exit;
} else {
header('Location: /secure');
}
?>
Esta es la parte donde el token de validación se compara con la secuencia de asegúrese de que no tenga más de 2 segundos de antigüedad; de lo contrario, deberá actualizar la página y solicitar un nuevo token.
Ahora, todo lo que esto hace es que si intenta acceder a url.com/secure/trailer.flv no podrá hacerlo gracias a .htaccess (los administradores de descargas tampoco funcionarán). Pero podrá transmitir esa ubicación gracias a la información de php en url.com/video.html y la fuente en el archivo FLV se verá como url.com/md5hashtimestamp/md5hashstreamname/md5hashtimestamp/trailer.flv. Por lo tanto, será muy difícil extraer el flujo del archivo flash directamente porque esa URL no sale; no puede visitar el sitio directamente en url.com/secure/trailer.flv gracias a .htaccess; y, finalmente, la única opción es la captura de pantalla/software que registra durante la transmisión.
Así que no es 100% seguro, pero sí hacer las cosas difíciles para el usuario final - y lo mejor de todo es gratis
porno? lo siento, tuve que preguntar :-) –
Si pueden transmitirlo a su computadora, entonces pueden guardar la secuencia, de una forma u otra. Entonces podrían distribuirse de todos modos como les gusta. DRM tiene una gran historia de fracasos. – Raoul
Lo que dijo el Sr. Duke, si se está reproduciendo en el lado del cliente, se puede guardar en el lado del cliente. No hay manera de evitarlo.Sin embargo, podrías asegurarlo para que solo los miembros tengan acceso a los videos en primer lugar, ¿esa es tu pregunta? O tal vez podrías escribir tu propio jugador que descifra el video en la memoria, por lo tanto, solo podría reproducirse en tu reproductor (a menos que alguien lo haya capturado, obviamente, o haya revertido la ingeniería de tu clave de cifrado). –