问题背景:用AudioInputStream播放音频,想准确获取当前播放时间
我原来是通过帧长度进行获取,通过当前帧位置/帧长度*音频总时长,其实这样对一些音频的时间获取是不准确的
line.getLongFramePosition() / frameLength * 音频总时间
准确操作应当是使用DataSourceLine的getMicrosecondPosition
方法才能准确到时间,不过注意这个时间是微秒,要转化成秒
(float) line.getMicrosecondPosition() / 1000000