我正在开发一个使用 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) 音频解码后可播放、可搜索等。
我喜欢思考的可能解决方案
- 因为音频文件的范围可以从 1 分钟到 60 分钟不等,所以使用文件系统 API 将音频写入文件,然后使用 <audio>
实际播放的元素
- 在 Web Audio API 之上编写我自己的暂停、擦洗和音量控制系统
最佳答案
好问题!最简单的解决方案是将解码后的内容存储在 Blob
中。 .
这将允许您设置 src
属性。
var blob = new Blob(decodedData, {type: "correct-mimetype/here"});
var url = URL.createObjectURL(blob);
audio.src = url;
关于javascript - 使用 <audio> 元素播放原始音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245178/