Safari и iPhone Safari играют в режиме «прямой трансляции» с конечным размером файла (MySQL, PHP) - PullRequest
3 голосов
/ 13 июля 2010

Я прочитал следующий вопрос и ответил HTML5 Прямая трансляция Safari против

До сих пор неясно, как решить проблему в моей ситуации:

Аудиофайлы (mp3), с которыми я работаю, хранятся в mySQL и загружаются в браузер с помощью PHP-скрипта, который отправляет заголовки Content-length и Content-type перед данными.Это отлично работает в Firefox, Opera, Chrome, IE 6,7,8.

По какой-то причине Safari не может определить размер файла и настаивает на том, что данные представляют собой поток, как с аудио, так и с встраиваниемтеги ...

Предложение в предыдущем посте связано с плагином сервера, который, как я полагаю, будет связан с обслуживанием файла по пути файловой системы, а не из базы данных.Как я могу решить это с моими данными, обслуживаемыми из MySQL?

Спасибо,

M

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Хех. Это было проще, чем я думал.

Я только что добавил следующий заголовок в файл PHP, который передает аудио:

header('Content-Range: bytes 0-'.$audioLength.'/'.$audioLength);

где $ audioLength - длина файла в байтах - это значение извлекается из файла, сохраненного вместе с аудиоданными в базе данных mySQL. Очевидно, Safari не против того, чтобы ему говорили, что диапазон - это вся длина контента. Весёлые.

Так что, по крайней мере, в Safari ver 5.0 нет необходимости в более глубоком вовлечении в заголовки Range, чем это.

0 голосов
/ 13 июля 2010

См. этот ответ ;хотя это упоминает видео, это то же самое.По сути, вам нужно сообщить клиенту, насколько велик файл, когда вы отправляете ответ (что вы делаете);для поддержки поиска вы также должны отделить Range заголовки от клиента.Может быть, проблема в этом, но, вероятно, есть еще кое-что.

РЕДАКТИРОВАТЬ : Читая ответ, с которым вы связаны, вам определенно нужно проанализировать заголовки Range: а не только левую частьинтервал, как в ответе, с которым я связан.

...