Javascript Web音频API-AudioContext到base64

时间:2018-11-12 20:59:03

标签: javascript audio base64 web-audio web-audio-api

在我正在研究的项目中,我们有大约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();

1 个答案:

答案 0 :(得分:0)

从给出的代码片段中确切地知道您想要什么有点困难,但是根据代码片段,如果您知道音频文件有多长时间,则可以使用OfflineAudioContext。脱机上下文将返回一个AudioBuffer,您可以将其用于获取base64编码的音频结果。