Google chrome 网络音频剪辑:如何让Firefox表现得像Chrome?

Google chrome 网络音频剪辑:如何让Firefox表现得像Chrome?,google-chrome,firefox,html5-audio,web-audio-api,Google Chrome,Firefox,Html5 Audio,Web Audio Api,在中执行的代码段: 录制时使用: Chrome74剪辑,Firefox66没有 我可以让Firefox也剪辑信号吗?(这正是我所期望的)如果要确保输出被剪裁,至少可以通过三种方式执行: 使用WaveShaperNode为您执行剪裁。(到处都有) 使用ScriptProcessorNode(已弃用)进行剪裁 使用AudioWorkletNode进行剪辑。(尚未在所有地方提供。) 示例:(由OP添加,请仔细检查) 那到底是怎么回事?firefox做了什么来阻止剪辑,为什么(对我来说毫无意义)向

在中执行的代码段:

录制时使用:

Chrome74剪辑,Firefox66没有


我可以让Firefox也剪辑信号吗?(这正是我所期望的)

如果要确保输出被剪裁,至少可以通过三种方式执行:

  • 使用
    WaveShaperNode
    为您执行剪裁。(到处都有)
  • 使用
    ScriptProcessorNode
    (已弃用)进行剪裁
  • 使用
    AudioWorkletNode
    进行剪辑。(尚未在所有地方提供。)
示例:(由OP添加,请仔细检查)


那到底是怎么回事?firefox做了什么来阻止剪辑,为什么(对我来说毫无意义)向firefox提交一个bug?我问了一个FirefoxWebAudio的家伙,他说他不记得FireFox做过任何压缩,他希望FireFox的行为会像Chrome一样。
// @channels 1
// @duration 0.25
// @sampleRate 44100

var osc = new OscillatorNode(context);
var gain = context.createGain();
gain.gain.setValueAtTime(2, 0.25/2);
osc.connect(gain);
gain.connect(context.destination);
osc.start();
// @channels 1
// @duration 0.25
// @sampleRate 44100

var osc = new OscillatorNode(context);
var gain = context.createGain();
gain.gain.setValueAtTime(2, 0.25/2);
osc.connect(gain);

var waveShaper = new WaveShaperNode(context, {
    curve: new Float32Array([-1, 1])
});
gain.connect(waveShaper);
waveShaper.connect(context.destination);

osc.start();