我正在创建一个 chrome 应用程序,它可以解密从我的 PBX 服务器发送到我的 gmail 帐户的 mp3 并播放它们。我已经完成了除了 gmail 中的音频播放器之外的所有内容。我有两个选择:
- 使用 Web Audio API(我可以使用它,但不知道如何制作 功能齐全的搜索栏)。
- 从数组创建一个 createObjectURL 并传递给音频标签或 soundmanager2。
我想尽可能多地重用代码,但一直找不到带有搜索栏的预制 Web Audio API 播放器。因此,我尝试尝试选项 2,以下是我所做的一切
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
context.decodeAudioData(arr.buffer, function (soundBuffer) {
windowURL = window.URL || window.webkitURL;
var audio = document.createElement("audio");
audio.src = windowURL.createObjectURL([soundBuffer]);
var someDiv = document.getElementById("testDiv");
someDiv.appendChild(audio);
audio.onload = function (e) {
windowURL.revokeObjectURL(this.src);
}
}, function (err) {
console.log("couldnt decode buffer");
});
失败并显示“无法在‘URL’上执行‘createObjectURL’:找不到与提供的签名匹配的函数。”我应该如何正确编写此函数的代码以创建可由 chrome 的 mp3 播放器或 soundmanager2 使用的 url?
最佳答案
您需要先创建一个 Blob,并将其作为参数传递给 createObjectURL
....
const blob = new Blob([soundBuffer], { type: "audio/wav" });
audio.src = window.URL.createObjectURL(blob);
....
关于javascript - 音频数组缓冲区到音频元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372870/