我正在开发一个解密(使用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
答案 0 :(得分:2)
好问题!最简单的解决方案是将解码的内容存储在Blob
。
这将允许您设置src
属性。
var blob = new Blob(decodedData, {type: "correct-mimetype/here"});
var url = URL.createObjectURL(blob);
audio.src = url;