javascript - 音频数组缓冲区到音频元素

标签 javascript html audio google-chrome-extension audio-player

我正在创建一个 chrome 应用程序,它可以解密从我的 PBX 服务器发送到我的 gmail 帐户的 mp3 并播放它们。我已经完成了除了 gmail 中的音频播放器之外的所有内容。我有两个选择:

  1. 使用 Web Audio API(我可以使用它,但不知道如何制作 功能齐全的搜索栏)。
  2. 从数组创建一个 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);
....

Source

关于javascript - 音频数组缓冲区到音频元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24372870/

相关文章:

javascript - 统一 JS 单选按钮不改变状态

javascript - 如何在 HTML JS 内容更新后加载新的缓存?

python-2.7 - Pydub 和 Aplay : suppress verbose output?

javascript - 从另一个域加载音频

javascript - 带有和参数范围长度属性

javascript - 如何在不刷新整个页面的情况下更新 HTML 文档中的 php 变量?

javascript - angular ui 可排序回调

javascript - 联系表单变量未从部分标记传递到 javascript

html - 旋转 block 元素

django - Flummoxed尝试在<audio>元素中播放mp3。控制台说 “Media resource XYZ could not be decoded”