我在 php 中实现了一个返回 mp3 数据的 HTTPS 端点。然后,在 javascript 中调用 ajax 后,我通过以下方式播放它:
let blob = new Blob([response.value], { type: 'audio/mp3' });
cleanup = () => {
// Not 100% sure this is needed:
audio.src = '';
// But this is:
URL.revokeObjectURL(url);
};
let url = URL.createObjectURL(blob)
let audio = new Audio();
audio.addEventListener('ended', cleanup);
audio.src = url;
audio.play();
这似乎有点工作,但我在 Fx 播放错误和一些 Chrome devtools 崩溃中遇到了一些浏览器问题。我认为这些问题可能是基于我对URL.createObject()
. 听起来将来这样做的方法将是设置audio.srcObject
,但它还没有在 Chrome 中准备好,至少对于Blob
s. MediaStream
s 受支持,但我找不到MediaStream
从请求的响应正文中创建 s 的方法。
所以,我的问题:有没有办法播放我的 mp3 使用audio.srcObject = someMediaStream
?还是我需要坚持URL.createObjectURL
直到audio.srcObject = new Blob()
被支持?这只会在 Chrome 中运行。