AngularJS потоковое аудио с PHP сервера

Из-за CORS и аутентификации на стороннем сервере я не могу загрузить аудиофайл напрямую из angularJS и должен делать это из бэкэнда PHP. Вот мой код PHP-сервера для обслуживания аудиофайла, загруженного со стороннего сервера:

header('Pragma: public');   // required
header('Content-Type: audio/mpeg');
header('Content-length: ' . filesize($file));
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: filename="' . basename($file));
header('X-Pad: avoid browser bug');
header('Cache-Control: no-cache');
$len = readfile($file);
exit();

Вот мой клиентский код angularJS:

var blob = new Blob([response], { type: 'audio/mpeg' });
var url = window.URL.createObjectURL(blob);
var audio = new Audio(url);
audio.play();

Однако это не удается с сообщением об исключении:

DOMException: Failed to load because no supported source was found.

Любой совет и понимание приветствуется.

0

Решение

Так как в любом случае вы просто создаете объект Audio с ответом, у вас нет причин делать то, что вы делаете.

Вместо загрузки всего ответа, создания из него BLOB-объекта и URL-адреса объекта, просто используйте URL-адрес, который вы запрашиваете в первую очередь. Вы не только получите хорошую эффективную обработку потоковых данных, но и сможете играть во время загрузки, а также вам не понадобится CORS … «непрозрачный» ответ — это хорошо.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector