我有一个循环Clip,我改变音量如下:
clip.stop();
clip.flush();
FloatControl fc = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
fc.setValue(new_volume);
clip.loop(javax.sound.midi.Sequencer.LOOP_CONTINUOUSLY);
问题:当剪辑重新启动时,它不会在结束时播放相同的帧;循环中有一个可听见的跳跃。
如果我没有刷新剪辑,这个问题就会消失,但是在缓冲数据耗尽之前音量不会改变,这更糟糕。
我尝试获取并重置帧位置,但这似乎没有改变任何东西。
有没有办法在停止播放的地方恢复播放? (不一定要精确......)有没有办法测量将要刷新的数据量并根据它设置帧?
答案 0 :(得分:2)
解决我自己的问题......呃。
用于循环音频的所以解决方案是:
loop.setFramePosition(old_pos % loop.getFrameLength());