使用<audio>元素播放原始音频</audio>

时间:2013-06-21 22:22:18

标签: javascript html5-audio web-audio

我正在开发一个解密(使用openpgp.js)并使用Web Audio API解码服务器端音频文件的小项目。解密的文件作为原始音频到达客户端。目前我可以使用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)音频被解码并可播放,可搜索......等。

我喜欢的可能解决方案
- 因为音频文件的范围可以是1分钟到60分钟,所以使用FileSystem API将音频写入文件,然后使用<audio>元素进行实际播放 - 编写我自己的控制系统,用于在Web Audio API

之上暂停,清理和调整音量

1 个答案:

答案 0 :(得分:2)

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

这将允许您设置src属性。

var blob = new Blob(decodedData, {type: "correct-mimetype/here"});
var url = URL.createObjectURL(blob);
audio.src = url;