Actualmente estoy tratando de entregar video MP4 para usar en video HTML5 (usando video-js) a través de un script PHP para controlar el acceso al video. Después de algunas investigaciones pude hacer que esto funcionara, con la ayuda de stackoverflow article found here. Si navego hasta el script PHP, puedo ver el video como si lo estuviera viendo a través de su ruta absoluta (por ejemplo, localhost/myvideo.mp4 en lugar de localhost/myscript.php) en Firefox, Safari e IE. Mi problema es con Google Chrome, que simplemente muestra una pantalla apagada con un pequeño reproductor multimedia en el centro, y no hace nada.Entrega de video MP4 a través de PHP falla en Google Chrome
Intenté utilizar una reescritura rápida como localhost/avideo.mp4 que se dirige al script PHP, pero desafortunadamente esto no cambió nada.
Aquí está mi script:
if (is_file($uri)) {
header('Content-Type: video/mp4');
if (isset($_SERVER['HTTP_RANGE'])) {
$this->rangeDownload($uri);
exit;
} else {
header("Content-Length: ".filesize($uri));
$this->readfile_chunked($uri);
exit;
}
} else {
//error
}
El método rangeDownload se ha tomado directamente del apéndice A de this link como se sugiere en el artículo antes mencionado stackoverflow.
Se puede publicar toda la información de la cabecera va a enviar? – ethrbunny
Content-type, Accept-Ranges, Content-Range, Content-Length, HTTP/1.1 206 Partial Content. Estos encabezados se usan en el primer caso usando rangeDownload, que se usa para Chrome, aunque readfile_chunked usa menos encabezados (aún no funciona en Chrome). – AaronDS
El único otro que puedo sugerir es Content-Transfer-Encoding: binary. Soy capaz de transferir audio a través de PHP a todos los navegadores que usan este combo. – ethrbunny