在我正在进行的项目中,我们有大约 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();
最佳答案
从您提供的代码段中确切知道您想要什么有点困难,但根据代码段,您也许可以使用 OfflineAudioContext
如果你知道你的音频文件有多长。离线上下文将返回 AudioBuffer
然后您可以使用它来获取 base64 编码的音频结果。
关于Javascript Web 音频 API - AudioContext 到 base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53270013/