iOS5 Mobile Safari, обслуживающий mp3 с помощью php - PullRequest
2 голосов
/ 27 октября 2011

У меня есть сайт для оркестра, на который я работаю. У меня есть полнофункциональный раздел с логином. У меня есть папка .htaccess, которая защищает мои mp3 от горячей / прямой ссылки. Я могу получить файлы для воспроизведения в Safari, Chrome и Firefox, но не на своем iPhone!

Я передаю содержимое с помощью заголовков в php-файле, которые, в свою очередь, создают звуковой тег html5 для обслуживания содержимого. Я пробовал readfile () в php безуспешно.

php файл ниже: (минус проверка безопасности)

$_GET['f'] = "privatefolder/" . $_GET['f'];
$filename = $_GET['f'];
$filesize = @filesize($filename);

$len = strlen( $filename );
$shortlen = $length - 1;
header( 'Content-Range: bytes 0-'.$shortlen.'/'.$len);

header("Last-Modified: ".filemtime($filename));
header("Content-Transfer-Encoding: binary"); 
header("Content-Type: audio/mpeg");//mpeg
header("Etag: W5M0MpCehiHzreSzNTczkc9d");
header("Content-Description: {$filename}");
header("Content-length: {$filesize}");
header("Content-Disposition: filename=button.mp3");
header("X-Pad: avoid browser bug");
header("Cache-Control: no-cache");
header("Connection: close");

echo "<audio controls='controls'><source src='".file_get_contents($_GET['f'])."' type='audio/mp3' /></audio>";
exit;

Этот код хорошо работает во всех основных браузерах, но на моем iPhone Mobile Safari блокируется и вылетает при попытке открыть страницу!

Чего мне не хватает? Я предполагаю, что это проблема заголовка и способ быстрой загрузки / потоковой передачи. Я боролся с этим в течение 2 недель, пробовал каждое решение, которое смог найти! Помогите пожалуйста !!!

* только примечание: я открыл страницу в браузере Opera Mini, и она отправляет ссылку на safari и быстро воспроизводит ее без проблем?!?!? так что я знаю, что это возможно!

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Работает на iOS4, не работает на iOS5.Я думаю, что расширение должно быть "mp3", чтобы работать как mp3 ...

0 голосов
/ 28 октября 2011

Вы не можете отправлять заголовки, так как он выглядит как файл mp3 и одновременно включает HTML.Я в шоке, он работает в любых браузерах вообще.

Ваш HTML должен выглядеть примерно так: <audio><source src="/path/to/mp3.php"></audio>, где mp3.php имеет заголовки и выводит содержимое файла mp3.

...