如何让 URL.createObjectURL(blob) 在 Safari 中工作

Ric*_*rdZ 2 safari html5-audio

以下代码由用户单击按钮触发。它适用于 Chrome 和 Firefox。它在 Safari (11.1) 中不起作用。

const blob = new Blob([binary], {type: 'audio/ogg'});
const audio = new Audio();
audio.src = URL.createObjectURL(blob); 
audio.load();
audio.play();
Run Code Online (Sandbox Code Playgroud)

以下代码适用于所有 3 个浏览器:

const audio = new Audio();
audio.src = 'test.mp3'; 
audio.load();
audio.play();
Run Code Online (Sandbox Code Playgroud)

因此,问题出在 Safari 中的 URL.createObjectURL(blob) 上。audio.play() 抛出的 Safari console.log 错误是:

未处理的承诺拒绝:NotSupportedError:不支持该操作。

如果audio.play()被注释掉,则不会抛出错误。

谢谢

Jun*_*711 5

对于 mp3 类型,您应该使用 mime type audio/mpeg

let audioBlob = new Blob([blob], { type: 'audio/mpeg' });
audio.src = URL.createObjectURL(audioBlob); 
Run Code Online (Sandbox Code Playgroud)