我对 Java Sound(javax.sound 包)有一个不那么简单的问题。
我正在实现具有交叉淡入淡出和平滑音量和搜索控件的 MP3 播放器。
我正在以 4096 字节块的形式将声音读取为流,并以毫秒为单位手动计算位置。
当我想 seek() (从流变为红色的位置更改基本位置)时,我听到声波中有一个非常难看的“跳跃”。我尝试检查 JLayer 和其他 MP3 API,但它们根本没有 seek() 函数,或者它们也有这种“丑陋的声音跳跃”。
我的问题是:我怎样才能使从一个声波块到另一个声波块的跳跃更平滑?我尝试了插值,但“听不到跳跃”的合理时间是 300 毫秒,这对于 seek() 函数来说太长了。
你遇到过这个问题吗?
你知道解决办法吗?
为了确定,我将在此处粘贴代码示例。
public void seek( long pPosition )
{
sourceDataLine.flush();
seekIndex = ( sourceDataLine.getMicrosecondPosition() / 1000 ) - currentPositionInMilliseconds;
}
public long getPositionInMilliseconds()
{ return ( sourceDataLine.getMicrosecondPosition() / 1000 ) - seekIndex; }
由于 javax.sound 的 DataLine API,需要“以毫秒为单位的位置”
谢谢,郁闷...