Живое Аудио Браузера Удаляет Задержку Буферизации

#javascript #audio #browser #html5-audio #web-audio-api

Вопрос:

Я пытаюсь реализовать функцию, в которой один клиент может записывать аудио (MediaRecorder) и отправлять его на сервер. Затем сервер создает ссылку, по которой другой клиент может загрузить прямую трансляцию.

И все это работает нормально, за исключением одной детали: поток задерживается примерно на 4 секунды. Я думаю, что это связано с буферизацией аудиоНода.

Вот что, я думаю, происходит: аудиорежим ждет, пока не будет доступно 4 секунды звука. Поскольку звук создается в реальном времени, он должен подождать 4 секунды, пока данные будут доступны.

Итак, мой вопрос: как я могу отключить или уменьшить размер буфера аудиоНода?

Я использую electron в качестве своего «браузера» или как он там называется.

HTTP-запрос (поток загрузки) выглядит следующим образом:

введите описание изображения здесь

В коде javascript я просто прикрепляю ссылку на свой исходный код:

     audioNode = document.getElementById("callAudio")
    audioNode.volume = 1.0
    const audioSourceNode = document.getElementById("callAudioSource")
    const audioContext = new window.AudioContext()
    const audioTrack = audioContext.createMediaElementSource(audioNode)
    const audioGain = audioContext.createGain()
    const audioDestination = audioContext.createMediaStreamDestination();
    const audioTrack.connect(audioGain).connect(audioDestination)

    audioSourceNode.setAttribute("src", "http://localhost:12347")
    audioNode.load()
    audioNode.play().then(() => {
        console.debug("started playing after:", currentTime)
        playing = true
    })
 

Сам аудионод выглядит следующим образом:

 <audio controls id="callAudio" class="audioControls" crossorigin="anonymous" preload="none">
        <source src="" id="callAudioSource"></src>
</audio>
 

Отладка говорит мне, что для начала воспроизведения потребовалось примерно 4,2 секунды.

Когда я смотрю на этот поток с точки зрения моего сервера, я вижу, что у меня задержка менее 10 мс. Таким образом, это не может быть связано с тем, что сервер создает задержку.