Descargar archivos como archivos adjuntos tamaño incorrecto

Estoy tratando de forzar un enlace para descargar un archivo como un archivo adjunto. Esto es algo que he hecho antes, pero algo va mal y no estoy seguro de qué es. Los tipos de archivos que trato de enviar como archivos adjuntos son todos los archivos mp4. Esto es lo que estoy haciendo:

<?php
if(isset($_GET['file']))
{
    $file_path = dirname(__FILE__) . "/videos/$_GET[file]";
    if(file_exists($file_path))
    {

        $file_url = "/videos/$_GET[file]";
        header ("Content-type: video/mp4");
        header("Content-Transfer-Encoding: binary"); 
        header("Content-disposition: attachment; filename=\"".basename($_GET['file']) ."\""); 
        header("Content-Length: ".filesize($file_path));
        echo readfile($file_url);
    }
}
?>

Como puede ver, estoy comprobando si el archivo existe antes de servirlo. Lo que sucede es que obtengo el archivo, su tipo es correcto (MP4 Video) pero el archivo solo tiene un tamaño de alrededor de 100 btyes. Cuando estaba haciendo la depuración, lo probé para ver si el tamaño del archivo es correcto. He cambiado elreadfile() línea a:header("location:/videos/$_GET[file]");

Y me lleva al video. He hecho un poco de googlear y no he encontrado ninguna razón para este comportamiento. ¿Alguien ha visto este tipo de cosas antes? ¿Alguna idea de qué puede estar causando esto? Cualquier ayuda sería muy apreciada, muchas gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta