【问题标题】:Web Audio API Inconsistent Unable to decode audio data DOMExceptionWeb Audio API Inconsistent Unable to decode audio data DOMException
【发布时间】:2021-01-03 09:55:20
【问题描述】:

从昨天开始,我一直在查看所有出现此错误的 SO 帖子,虽然我尝试了一些建议的方法,但都没有解决问题。因为错误在不同类型的流之间不一致,所以很难找到根本原因。我希望我在这里分享我的问题,也许有人会看到一个模式或有一个解决方案。

  • 首先,本地托管的文件和网络托管的流在 HTML5 audio 标签内运行良好。看到我们可以假设路径是好的。
  • 其次,我还注意到下面的代码在我最喜欢的网络广播电台 WeFunkRadio 上按预期工作,但我不想在我开发一个完全不同的目的的应用程序时对它们进行 ping。
  • 在 Node.js 服务器的 /public 文件夹中托管的公共域 mp3 带有以下代码,但始终返回错误:DOMException: Unable to decode audio data

我已尝试将代码精简到使用来自WikiCommons hosted public domain file 的媒体复制问题所需的最低限度。我目前正在最新的 Chrome 85.0.4183.102 上进行开发。

StreamURL ='https://upload.wikimedia.org/wikipedia/commons/transcoded/9/90/JesusWalkedThatLonesomeValley.ogg/JesusWalkedThatLonesomeValley.ogg.mp3',

const options = {
    headers: new Headers({ 'content-type': 'audio/mp3' }),
    mode: 'no-cors',
    cache: 'default',
};

const getAudioData = () =>
    fetch(StreamURL.url, options)
        .then((response) => response.arrayBuffer())
        .then((arrayBuffer) => audioCtx.decodeAudioData(arrayBuffer))

async function createAudioStream() {
    try {
        let playback = audioCtx.createBufferSource();
        playback.buffer = await getAudioData();
        playback.connect(audioCtx.destination);
        playback.start(0);
    } catch (err) {
        console.error(err);
    }
}

audioContainer.addEventListener('click', createAudioStream);

可以在开发者控制台的网络选项卡中看到数据确实进入了浏览器,但是它仍然返回解码错误。现在的错误是阻止我使用 Web Audio API 对音频进行进一步处理。

【问题讨论】:

    标签: javascript node.js audio web-audio-api


    【解决方案1】:

    您的 sn-p 不完整。我不得不对其进行一些修改以使其运行。

    在致电 decodeAudioData 之前添加 console.log(arrayBuffer)。我得到一个空的arrayBuffer,所以decodeAudioData 自然无法解码。

    我不知道为什么arrayBuffer 是空的。

    【讨论】:

    • 正如雷蒙德所说,ArrayBuffer 是空的。尝试使用不带选项的 fetch:fetch(StreamURL.url)。将 content-type 设置为“audio/mp3”意味着您将发送一个 MP3 文件,而不是您希望服务器返回一个。
    • 如果 decodeAudioData 可以返回更多关于为什么解码失败的信息不是很好吗?诸如“缓冲区为空”、“不知道如何解码此类型”、“格式错误的文件”等信息。至少你会得到一个可能是错误的提示,而不仅仅是“失败”。
    • 好消息.. 仍在尝试追踪空缓冲区。
    猜你喜欢
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2011-12-13
    • 2015-08-07
    相关资源
    最近更新 更多