【发布时间】:2018-11-12 20:59:03
【问题描述】:
在我正在进行的项目中,我们有大约 30 个音轨,我们在其中应用过滤器并播放音频。最初这是在服务器端完成的,并为每个轨道返回一个 base64 字符串,然后我用new Audio() 加载它。
如果您的互联网速度很快,这很有效,但在速度较慢的情况下,从服务器返回曲目可能需要一个小时,所以现在我们在客户端应用过滤器。
应用过滤器没有问题,但我试图不重写我的整个播放算法(它比暂停、播放、停止更复杂)并且想知道我是否可以将 AudioContext 编码为 Base64。
我尝试创建一个新的Audio 并传递AudioContext,创建一个新的Audio 并传递AudioBuffer 以及基于this example 的东西。但如果它有效,则没有,而且我在互联网上找不到任何我正在尝试做的事情的例子。
如果有人可以查看我的代码并帮助我,我将不胜感激。提前致谢!
var audioCtx = new AudioContext();
var source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();
request.open("GET", "/path/to/audio", true);
request.responseType = "arraybuffer";
request.onload = function () {
audioCtx.decodeAudioData(request.response, function (buffer) {
source.buffer = buffer;
// Apply filters to the audio
// Here I would like to convert the audio to Base64
callback(source);
}, function (error) {
console.error("decodeAudioData error", error);
});
};
request.send();
【问题讨论】:
标签: javascript audio base64 web-audio-api