Javascript Web Audio API - AudioContext для base64 - PullRequest
0 голосов
/ 12 ноября 2018

В проекте, над которым я работаю, у нас есть около 30 звуковых дорожек, где мы применяем фильтры и воспроизводим аудио.Первоначально это было сделано на стороне сервера и возвращало строку base64 для каждой дорожки, которую я затем загрузил с помощью new Audio().

Это работало хорошо, если у вас была быстрая скорость интернета, но на медленных скоростях возвращение треков с сервера могло занять до часа, поэтому теперь мы применяем фильтры на стороне клиента.

Применение фильтров не проблема, но я стараюсь не переписывать весь мой алгоритм воспроизведения (это гораздо более сложный процесс, чем просто пауза, воспроизведение, остановка) и мне интересно, могу ли я кодировать AudioContext вBase64.

Я пытался создать новый Audio и передать AudioContext, создать новый Audio и передать AudioBuffer и что-то на основе в этом примере .Но ничего, если это работает, и я не могу найти никаких примеров того, что я пытаюсь сделать в Интернете.

Если бы кто-то мог взглянуть на мой код и помочь мне, я был бы очень признателен.Заранее спасибо!

    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 голосов
/ 14 ноября 2018

Сложно точно определить, что вы хотите от фрагмента, который вы даете, но на основе фрагмента вы можете использовать OfflineAudioContext, если знаете, какова длина ваших аудиофайлов.Автономный контекст вернет AudioBuffer, который вы затем сможете использовать для получения аудио результата в кодировке base64.

...