5

我正在开发一个使用 Web Audio API 解密(使用 openpgp.js)和解码服务器端音频文件的小项目。解密的文件作为原始音频到达客户端。目前,我可以使用播放音频文件,source.start(0)但似乎没有一种简单的方法可以将音频转储到 GUI,从而允许用户执行诸如调整音量和搜索音频之类的操作。

我有一个AudioContext被解码和缓冲的对象createBufferSource

function playSound(decodedAudio) {
  var source = context.createBufferSource();
  source.buffer = decodedAudio;
  source.connect(context.destination);
  source.start(0);
}

因为接收到的是原始音频,所以我不能简单地使用audio.src = ...音频元素之类的东西。或者也许我忽略了一些明显的东西?
有没有办法让 Web Audio API 中的解码音频与目标<audio>元素很好地播放?

理想的流程看起来像...
1) 用户单击以播放音频剪辑
2) 音频在服务器端解密并作为原始音频发送到客户端
3) 音频被解码并可播放、可搜索。 ..ETC。

我喜欢考虑的可能解决方案
- 因为音频文件的范围可以从 1 分钟到 60 分钟不等,所以使用 FileSystem API 将音频写入文件,然后使用<audio>元素进行实际播放
- 编写我自己的暂停控制系统、擦洗和音量在 Web Audio API 之上

4

1 回答 1

2

好问题!最简单的解决方案是将解码的内容存储在Blob.

这将允许您设置src属性。

var blob = new Blob(decodedData, {type: "correct-mimetype/here"});
var url = URL.createObjectURL(blob);
audio.src = url;
于 2013-06-21T22:26:28.610 回答