Продолжительность аудио HTML5 для mp3 всегда бесконечна

Я играю с моим любимым проектом и, экспериментируя с «потоковым» mp3 с PHP, я всегда получаю длительность аудио, чтобы вернутьсяInfinity, Я пытался искать во многих местах, к сожалению, я не могу найти корневую проблему.

Обратите внимание, что мне пришлось отложить этот проект на некоторое время, и раньше все работало нормально. Когда я возобновил работу над проектом, я сделал некоторый рефакторинг пользовательского интерфейса и узнал об этой «ошибке». Может кто-нибудь заметить что-то не так с моим кодом?

Контекст: это в действии контроллера (ZF2), где$media этоPOPO модель.

$file = $basePath . $media->getFileName();
$fileSize = filesize($file);
$fileHandle = fopen($file, 'r');

$etag = md5(serialize(fstat($fileHandle)));
$cacheExpires = new \DateTime();

// TODO : implement ranges...
if ( isset($_SERVER['HTTP_RANGE']) ) {

    // find the requested range
    // this might be too simplistic, apparently the client can request
    // multiple ranges, which can become pretty complex, so ignore it for now
    preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches);

    $rangeFrom = intval($matches[1]);
    $rangeTo = intval($matches[2]);

    $statusCode = 206;
} else {
    $rangeFrom = 0;
    $rangeTo = $fileSize;
    $statusCode = 200;
}

fseek($fileHandle, $rangeFrom);

set_time_limit(0); // try to disable time limit

$response = new Stream();
$response->setStream($fileHandle);
$response->setStatusCode($statusCode);
$response->setStreamName(basename($file));

$headers = new Headers();
$headers->addHeaders(array(
    'Pragma' => 'public',
    'Expires' => $cacheExpires->format('Y/m/d H:i:s'),
    'Cache-Control' => 'no-cache',
    'Accept-Ranges' => 'bytes',
    'Content-Description' => 'File Transfer',
    'Content-Transfer-Encoding' => 'binary',
    'Content-Disposition' => 'attachment; filename="' . basename($file) .'"',
    'Content-Type' => 'audio/mpeg, audio/x-mpeg, audio/x-mpeg-3, audio/mpeg3',  // $media->getFileType(),
    'Content-Range' => "bytes {$rangeFrom}-{$rangeTo}/{$fileSize}",
    'Content-Length' => $fileSize,
    'Etag' => $etag,
    'X-Pad' => 'avoid browser bug',
));
$response->setHeaders($headers);
return $response;

Я пытался играть практически со всеми полями HEADER (даже удаляя диапазоны), но браузер всегда получаетisFinite(audio.duration) === false, Все остальное, кажется, работает, включая воспроизведение, безупречно.