プログラム (再生/停止、進行状況の表示) で jLayer の簡単な使用法を実装しましたが、正常に動作します。
ただし、getPosition() には問題があり、Windows XP マシンでは値を ms 単位で返しますが (文書化されています)、Ubuntu マシンでは SECONDS 単位で返します。
なぜそのような違いがあるのか 誰にも分かりますか?
ソースコードを見てください!あなたはPlayerクラスに隣接して話していると思います。
そのgetPosition()はAudioDevice.getPosition()を直接呼び出し、JavaAudioDevice実装はSourceDataLine.getMicroSecondPostion()/ 1000を返します。後者のクラスはJREの一部であるため、特定のJREバージョンにバグがあるか、OSがより高い解像度を提供しません。これを引き起こすハードウェアプラットフォームの特定のオーディオドライバーでもある可能性があります。
JREとOSを更新する以外にできることはあまりありません。それでも問題が解決しない場合は、バグレポートを提出することしかできません。
編集:バグレポートでは、VMのベンダーを意味します。これは、JLayerの担当者がJREが偽の値を返すことについて何もできないためです。