音频阵列缓冲区到音频元素

问题描述 投票:5回答:1

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

  1. 使用Web Audio API(我得到了它的工作,但无法弄清楚如何制作一个功能齐全的搜索栏)。
  2. 从数组创建一个createObjectURL并传递给audio tag或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?

javascript html5 audio google-chrome-extension audio-player
1个回答
0
投票

是的,你可以做到

  1. 获取arraybuffer并解码音频
  2. 使用侦听器'sourceopen'创建MediaSource
  3. 使用appendBuffer方法将解码后的音频添加到MediaSource

https://developer.mozilla.org/en-US/docs/Web/API/MediaSource

© www.soinside.com 2019 - 2024. All rights reserved.