【发布时间】: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