在我正在研究的项目中,我们有大约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();
答案 0 :(得分:0)
从给出的代码片段中确切地知道您想要什么有点困难,但是根据代码片段,如果您知道音频文件有多长时间,则可以使用OfflineAudioContext
。脱机上下文将返回一个AudioBuffer
,您可以将其用于获取base64编码的音频结果。