【问题标题】:How get URL.createObjectURL(blob) to work in Safari如何让 URL.createObjectURL(blob) 在 Safari 中工作
【发布时间】:2018-12-31 07:35:58
【问题描述】:

以下代码由用户单击按钮触发。它适用于 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 错误是:

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

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

谢谢

【问题讨论】:

    标签: safari html5-audio


    【解决方案1】:

    在创建 blob 时,类型很重要。当我将类型设置为 wav 时,我的代码有效。

    {type: 'audio/wav'}
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-18
        • 2019-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多