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

问题描述 投票:0回答:2

用户单击按钮会触发以下代码。它适用于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(),则不会引发错误。

谢谢

safari html5-audio
2个回答
2
投票

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

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

1
投票

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

{type: 'audio/wav'}
© www.soinside.com 2019 - 2024. All rights reserved.