Estoy usando el siguiente código php para mostrar un video en un reproductor html (biblioteca video.js).
if ($fp = fopen($path, "rb")) { $size = filesize($path); $length = $size; $start = 0; $end = $size - 1; header('Content-type: video/mp4'); header("Accept-Ranges: bytes"); if (isset($_SERVER['HTTP_RANGE'])) { $c_start = $start; $c_end = $end; list(, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2); if (strpos($range, ',') !== false) { header('HTTP/1.1 416 Requested Range Not Satisfiable'); header("Content-Range: bytes $start-$end/$size"); exit; } if ($range == '-') { $c_start = $size - substr($range, 1); } else { $range = explode('-', $range); $c_start = $range[0]; $c_end = (isset($range[1]) && is_numeric($range[1])) ? $range[1] : $size; } $c_end = ($c_end > $end) ? $end : $c_end; if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size) { header('HTTP/1.1 416 Requested Range Not Satisfiable'); header("Content-Range: bytes $start-$end/$size"); exit; } $start = $c_start; $end = $c_end; $length = $end - $start + 1; fseek($fp, $start); header('HTTP/1.1 206 Partial Content'); } header("Content-Range: bytes $start-$end/$size"); header("Content-Length: ".$length); $buffer = 1024 * 8; while(!feof($fp) && ($p = ftell($fp)) <= $end) { if ($p + $buffer > $end) { $buffer = $end - $p + 1; } set_time_limit(0); echo fread($fp, $buffer); flush(); } fclose($fp); exit(); } else { die('file not found'); }problema, cuando abro el enlace a ese archivo, puedo acceder fácilmente al video. Lo que estoy preguntando es, ¿puedo cifrarlo de alguna manera para que solo el jugador pueda mostrarlo de una manera en la que aún pueda abrirlo localmente desde fuera del sitio en el que está guardado, pero no directamente desde la URL, sino en un lugar específico? ¿jugador?
Como se menciona en los comentarios, el enfoque típico a utilizar sería DRM. Esto está diseñado para restringir el acceso a un usuario o dispositivo en particular en lugar de un tipo de reproductor HTML5, pero sospecho que funcionará para usted de todos modos.
Si desea un enfoque liviano, menos costoso pero también menos seguro, puede usar un enfoque de "clave clara" junto con los protocolos de transmisión HLS o DASH.
Son similares a las principales soluciones DRM, encriptando el contenido en el lado del servidor y descifrando en el lado del cliente, pero la clave de descifrado del contenido en sí no está encriptada y se pasa de manera abierta entre el servidor y el cliente.
Dado que parece que solo está tratando de dificultar las cosas para el copiador casual de su video, esto puede ser suficiente para usted.
Más detalles de los enfoques HLS y DASH aquí: https://stackoverflow.com/a/45103073/334402