audio.duration возвращает Infinity в Safari, когда mp3 подается из PHP

Итак, у меня есть php-скрипт, который отправляет мой mp3-файл в аудио-тег html5. Проблема в том, что в Safari тег audio.duration не работает и возвращает бесконечность. Если я устанавливаю src аудио непосредственно в файл, все работает нормально. Но я не хочу, чтобы мои пользователи видели путь к файлу.

В любом случае, именно так я отправляю свои заголовки из PHP.

Я уже пробовал использовать диапазоны контента. Это не помогло.

if (file_exists($filename)) {
  $fp = fopen($filename, 'r');
  $etag = md5(serialize(fstat($fp)));
  fclose($fp);
  header("Content-Transfer-Encoding: binary"); 
  header("Content-Type: audio/mpeg");
  header('Content-Length: ' . (string)(filesize($filename)));
  header('Content-Disposition: inline; filename="' . $filename . '"');
  header('X-Pad: avoid browser bug');
  header('Cache-Control: no-cache');
  header('Etag: ' . $etag);

  //GetContentRange($filelength);

  readfile($filename);
  exit;
}
else {
  header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
  echo "no file";
}
5
задан Roozbeh15 9 March 2012 в 05:11
поделиться