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

如何让URL.createObjectURL(blob)在Safari中工作,safari,html5-audio,Safari,Html5 Audio,以下代码由用户单击按钮触发。它在Chrome和Firefox中工作。它在Safari(11.1)中不起作用 以下代码适用于所有3种浏览器: const audio = new Audio(); audio.src = 'test.mp3'; audio.load(); audio.play(); 因此,问题在于Safari中的URL.createObjectURL(blob)。audio.play()引发的Safari console.log错误为: 未处理的承诺拒绝:不支持错误:不支持该操

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

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

const audio = new Audio();
audio.src = 'test.mp3'; 
audio.load();
audio.play();
因此,问题在于Safari中的URL.createObjectURL(blob)。audio.play()引发的Safari console.log错误为:

未处理的承诺拒绝:不支持错误:不支持该操作

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


感谢您在创建blob时注意类型。当我将类型设置为wav时,我的代码工作正常

{type: 'audio/wav'}

创建blob时,类型很重要。当我将类型设置为wav时,我的代码工作正常

{type: 'audio/wav'}

对于mp3类型,您应该使用mime类型
音频/mpeg

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

对于mp3类型,您应该使用mime类型
音频/mpeg

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