用户单击按钮会触发以下代码。它适用于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();
以下代码适用于所有3个浏览器:
const audio = new Audio();
audio.src = 'test.mp3';
audio.load();
audio.play();
因此,问题在于Safari中的URL.createObjectURL(blob)。 audio.play()抛出的Safari console.log错误是:
未处理的Promise拒绝:NotSupportedError:不支持该操作。
如果注释掉audio.play(),则不会引发错误。
谢谢
对于mp3类型,你应该使用mime类型audio/mpeg
。
let audioBlob = new Blob([blob], { type: 'audio/mpeg' });
audio.src = URL.createObjectURL(audioBlob);
创建blob时,类型很重要。当我将类型设置为wav时,我的代码工作正常。
{type: 'audio/wav'}