2

我正在尝试将滤镜效果添加到我在我的网站上播放的音频流中。我能够将 Tone.js 库连接到音频流,但我没有听到网站上播放的音频流有任何变化。我在控制台中没有看到任何错误,我尝试将过滤器从 50 调整到 5000,但似乎对音频没有任何影响。我是否需要设置new Tone.Player()才能真正听到音频?如果是这样,如果现有音频元素没有 src,您将如何设置播放器。

    $('#testBtn').click(async function () {
        const audioElement = document.getElementById('theAudioStream');
        const mediaElementSource = Tone.context.createMediaElementSource(audioElement);
        const filter = new Tone.Filter(50, 'lowpass').toDestination();
        Tone.connect(mediaElementSource, filter);
        await Tone.start();
        console.log("Started?");
    });

我尝试修改的音频流是通过 JsSip 调用设置的。启动流的代码如下:


    var audioStream = document.getElementById('theAudioStream')

    //further down in code    

    currentSession.answer(options);
    if (currentSession.connection) {
        currentSession.connection.ontrack = function (e) {
          audioStream.srcObject = e.streams[0];
          audioStream.play();
        }
    }

我在通话开始后单击测试按钮,以便在初始化 Tone.js 过滤器之前知道音频流存在

4

1 回答 1

3

工作解决方案:
删除应答JsSIPaudioStream.play()呼叫的位置可以解决问题。 我不知道这解决问题的确切原因(它甚至可能是一种解决方法),但经过多次试验和错误,这种方式允许音频可供ToneJS使用。

欢迎任何其他解决方案。

于 2022-02-23T14:01:30.920 回答