【问题标题】:Web Audio API Firefox setValueCurveAtTime()网络音频 API Firefox setValueCurveAtTime()
【发布时间】:2014-09-17 20:06:14
【问题描述】:

我正在交叉淡化一些音频,并且我在表格中存储了一个相等的功率曲线。我正在调用这个函数来开始淡出。 fade 参数是使用 createGain() 制作的 GainNode

fade.gain.setValueCurveAtTime(epCurveOut, context.currentTime, fadeTime);

在 Chrome 和 Safari 中一切正常,但 Firefox (v30) 抱怨: SyntaxError: An invalid or illegal string was specified

我尝试了 0 和 0.01 而不是 context.currentTime。这个方法可能没有实现吗?如果是这样,我将如何安排随时间变化的余弦等功率斜坡?

【问题讨论】:

    标签: firefox web-audio-api


    【解决方案1】:

    这似乎确实是我们这边的一个错误,我提交了https://bugzilla.mozilla.org/show_bug.cgi?id=1069825 来跟踪它。

    【讨论】:

    • 啊哈,感谢您解决这个问题!很高兴 try/catch 现在是一个有效的解决方法。
    【解决方案2】:

    只要不喜欢 setValueCurveAtTime 的参数,Firefox 似乎就会给出该错误。例如,如果 epCurveOut 是一个空的 Float32Array,或者如果同时安排了一个参数更改。我怀疑是后者,因为 Chrome 在相同情况下不会抛出错误。例如:

    curve = new Float32Array([0.5, 0.5]);
    node.gain.setValueCurveAtTime(curve, 5, 1);
    node.gain.setValueCurveAtTime(curve, 5, 1);
    

    Firefox 第二次抛出错误。 Chrome 不会抛出错误。如果您在调用 setValueCurveAtTime 之间调用 node.gain.cancelScheduledValues(5),Firefox 允许这样做。

    编辑:哦,嗯,Chrome 也不会抱怨空的 Float32Array。好吧,无论如何,Firefox 的宽容度似乎要低得多,并且当参数的类型正确但值不允许时会给出错误。

    【讨论】:

    • 该数组绝对不是空的,因为我可以听到它在其他浏览器中工作。此外,我认为这不是双重调度,因为我只是在它完成褪色后手动重新触发该功能。现在我只是简单地尝试/捕捉它,它似乎工作!我确实注意到,如果我在它仍在褪色时触发该功能,则它是无操作的。但是语法错误每次都会发生,我还不知道是什么原因造成的......我正在同时重复使用同一个数组进行多层淡入淡出,但如果 FF 不允许这样做就没有多大意义。
    猜你喜欢
    • 2016-08-29
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多