РЕДАКТИРОВАТЬ # 2
Хорошо, проблема отличается от того, что я первоначально думал, поэтому я помещаю это «редактировать» вверх.Я также обновил заголовок вопроса (старый был «Потоковая передача звука wav из BLOB-объекта mysql»).
Теперь проблема, похоже, связана с сеансами CodeIgniter.Вышеприведенный скрипт будет запускаться только в том случае, если пользователь вошел в систему. По какой-то причине, когда я вручную устанавливаю заголовки ответа (либо с помощью php header (), либо с выходным классом codeigniters), я вижу из своих журналов, что все загружается и переинициализируетсяи что данные сеанса потеряны, так что пользователь больше не вошел в систему, поэтому скрипт фактически выдает ошибку.
Как только я удалил любое требование или ссылку на данные сеанса, звук воспроизводится нормально ... ноэто не вариант, если я не смогу аутентифицировать пользователя другим способом.Очень расстраивает.
.
.
.
** Исходный текст **
У меня есть BLOB-объект mysql, который содержит аудиоданные в формате wav.Я пытаюсь вывести его в браузер для потоковой передачи через любой плагин аудиоплеера, который браузер хочет использовать.
Аудиоплеер работает нормально, если я указываю на физический файл .wav, так что это некажется, проблема.Однако, если я укажу его на свой PHP-скрипт, я получу всплывающее окно ' Поиск подходящего плагина? ' в Firefox (который ничего не может найти) и просто пустой неактивный проигрыватель в Chrome.
Вот PHP, объект $ aud содержит информацию, полученную из базы данных:
header("Content-length: $aud->size");
header("Content-type: audio/x-wav");
echo $aud->recording;
exit();
Если я добавлю заголовок ("Content-Disposition: attachment; filename = $name "); к вышесказанному я могу загрузить файл, который затем хорошо воспроизводится во внешнем аудиоплеере, но это не то, что мне нужно.
Этот фрагмент кода является частью приложения CodeIgniter, еслиэто будет иметь значение.Я настроил маршрутизацию таким образом, чтобы /audio/$id.wav захватывал соответствующие данные и выводил их с кодом выше.
Может кто-нибудь увидеть или подумать о любой причине, по которой может быть вышене работает?
РЕДАКТИРОВАТЬ
Это заголовки, возвращаемые скриптом php:
Date: Tue, 22 Mar 2011 22:12:06 GMT
Server: Apache/2.2.16 (Ubuntu)
X-Powered-By: PHP/5.3.3-1ubuntu9.3
Set-Cookie: ci_session=<long encrypted session string>; expires=Wed, 23-Mar-2011 00:12:06 GMT; path=/
Content-Length: 12345
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Content-Type: audio/x-wav
200 OK
И для сравнения, эти заголовки возвращаются, когда я принудительноЗагрузите вышеуказанное аудио и откройте этот файл WAV прямо в браузере:
Date: Tue, 22 Mar 2011 22:10:53 GMT
Server: Apache/2.2.16 (Ubuntu)
Last-Modified: Tue, 22 Mar 2011 22:08:30 GMT
Etag: "200a83-3039-49f197bfcb380"
Accept-Ranges: bytes
Content-Length: 12345
Content-Type: audio/x-wav
200 OK
Сохранение и последующее открытие файла напрямую работает .Выход PHP-скрипта в браузер отсутствует.