2017-02-10 77 views
1

我有一首歌曲,我正在玩Web音频,我安排两个playbackRate变化,然后再播放歌曲。第一个playbackRate更改生效,但第二个不会触发。这是预期的行为?我错过了什么来完成这项工作?网络音频:音频2顺序playbackRate值只适用于第一个值

基本逻辑是:

sourceNode = _mySoureNodeGetterFn('blah.mp3'); 
sourceNode.start(0); 
sourceNode.playbackRate.setValueAtTime(.8, 5); 
sourceNode.playbackRate.setValueAtTime(1.2, 10); 
audioContext.resume(); 

第二playbackRate值,setValueAtTime(1.2, 10),定于10S到歌曲不会触发。第一个playbackRate触发很好。

我在Macbook上使用Chrome 56.0.2924.87。

+1

这已经被报告https://bugs.chromium.org/p/chromium/issues/detail?id=645776(莫名其妙),并在58金丝雀固定。另请注意,时间参数是相对于audioContext的时钟。如果这个值已经过去了,似乎还有一个新的提议使它与currentTime相关,但目前似乎没有人实现它,并且应该调用'setValueAtTime(val,audioCtx.currentTime + offset)'。 – Kaiido

+0

谢谢@Kaiido。看起来这个问题是在v58金丝雀里修复的。虽然铬错误似乎有点不同于我所看到的,它随机/不确定地发生,因为我的错误打破了每一个怪异的时间。解决方案是等待v58然后... – JohnW

+0

是的,我认为核心问题是一样的,而bug报告并不完全是同一个问题。但它确实在58年工作。 – Kaiido

回答

1

关闭循环 - 这是一个铬v55的错误。在v58中修复(dunno如果在两者之间的任何版本中修复)。