【问题标题】:Cancel fade out of audio then fade in - Web Audio API取消音频淡出然后淡入 - Web Audio API
【发布时间】:2018-09-05 02:20:53
【问题描述】:

我想开始淡出,然后可以取消它并从当前音量水平淡入。

首先我尝试了这个:

gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5);
setTimeout(function(){
    gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
    gainNode.gain.exponentialRampToValueAtTime(1, audioCtx.currentTime + 5);
}, 3000);

(fiddle)

这在 Firefox 或 Chrome 中都不起作用。淡出开始,然后当超时功能触发时,增益值会跳回 1。

然后我发现这个在 Chrome 中可以工作:

gainNode.gain.exponentialRampToValueAtTime(0.001, audioCtx.currentTime + 5);
setTimeout(function(){
  const val = gainNode.gain.value;
  gainNode.gain.cancelScheduledValues(audioCtx.currentTime);
  gainNode.gain.setValueAtTime(val, audioCtx.currentTime);
  gainNode.gain.exponentialRampToValueAtTime(1, audioCtx.currentTime + 5);
}, 3000);

(fiddle)

...但不是在 Firefox 中,因为它返回增益的最后设置值而不是计算的值,即 1,因此它从 1 转换为 1,因此结果与我第一次尝试的结果相同.

所以这些给我留下了问题......

  • 我的上一个解决方案规范是兼容的还是只是一个 Chrome 错误?
  • 是否有针对该问题的跨浏览器(至少 Firefox + Chrome)解决方案?
  • 是否有针对规范兼容问题的跨浏览器解决方案?

【问题讨论】:

    标签: javascript html5-audio web-audio-api


    【解决方案1】:

    我想你想要“cancelAndHoldAtTime()”(https://webaudio.github.io/web-audio-api/#dom-audioparam-cancelandholdattime)。不幸的是,尚未在 Firefox 中实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      相关资源
      最近更新 更多