来自PHP服务器的AngularJS流音频

时间:2017-09-14 07:19:26

标签: php angularjs audio blob audio-streaming

由于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.

感谢任何建议和见解。

1 个答案:

答案 0 :(得分:1)

由于您只是创建了一个带有响应的音频对象,因此您没有理由不必做您正在做的事情。

不要下载整个响应,从中创建Blob以及对象网址,而只需使用您首先请求的网址。您不仅可以获得流媒体数据的高效处理,还可以在下载运行时播放,您不会需要CORS ...&# 34;不透明"反应很好。