2013-08-05 7 views
2

Я использую soundmanager2, и у меня есть проблема с Safari.Ошибка Soundmanager2, Safari и PHP

Я успешно потоковый защищенные файлы (за пределами корневой директории) из PHP в Soundmanager2, используя что-то вроде этого:

//check if user is logged in and has rights on $file 
//if yes stream file 

     if (file_exists($file)) { 
      $filepath = $file; 
      $filesize = filesize($filepath); 

      header("Pragma: no-cache"); 
      header("Expires: 0"); 
      header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
      header('Content-Disposition: attachment;filename="'.$filename.'"'); 
      header("Content-Transfer-Encoding: binary"); 
      header('Content-Type: audio/mpeg'); 
      header('Content-Length: '.$filesize); 
      @readfile($filepath); 
      exit(0); 
     } 

Это прекрасно работает на Firefox и Chrome, mp3-файлы играют, но в Safari I получить:

soundmanager2.js:1190basicMP3Sound0: Using HTML5 
soundmanager2.js:1190basicMP3Sound0: play(): Attempting to load 
soundmanager2.js:1190basicMP3Sound0: load (/privateaccess/index/1415) 
soundmanager2.js:1190basicMP3Sound0: waiting 
soundmanager2.js:1190basicMP3Sound0: loadstart 
soundmanager2.js:1190basicMP3Sound0: loadedmetadata 
soundmanager2.js:1190basicMP3Sound0: HTML5 error, code 3 
soundmanager2.js:1188basicMP3Sound0: Failed to load/invalid sound? Zero-length duration reported. (/privateaccess/index/1415) 

я только получает эту ошибку, когда я поток файла с PHP, он работает с файлами, которые находятся в корневой директории (поставляется по апачу вместо PHP).

Если я попал прямо на сайт www.myurl.com/privateaccess/index/1415, файл загрузился, так что это действительно похоже на проблему между Safari, Soundmanager2 и потоковой передачей файлов PHP.

Кто-нибудь? идея исправить/обмануть это?

ответ

5

Вам необходимо поддерживать запросы диапазона байтов. See SoundManager2's Technical Notes on the subject.

Пример запроса:

GET some.ogg HTTP/1.1 
Range: bytes=5210604-5275910 

Ожидаемый ответ:

HTTP/1.1 206 Partial Content 
Accept-Ranges: bytes 
Content-length: 65307 
Content-Range: bytes 5210604-5275910/5275911 
Content-Type: audio/ogg 
+0

Спасибо за этот ответ. Не знаю, как я пропустил это на своем сайте, но, к счастью, вы добавили соответствующую ссылку здесь. – Zoidberg