0

プログラム (再生/停止、進行状況の表示) で jLayer の簡単な使用法を実装しましたが、正常に動作します。

ただし、getPosition() には問題があり、Windows XP マシンでは値を ms 単位で返しますが (文書化されています)、Ubuntu マシンでは SECONDS 単位で返します。

なぜそのような違いがあるのか​​ 誰にも分かりますか?

4

1 に答える 1

0

ソースコードを見てください!あなたはPlayerクラスに隣接して話していると思います。

そのgetPosition()はAudioDevice.getPosition()を直接呼び出し、JavaAudioDevice実装はSourceDataLine.getMicroSecondPostion()/ 1000を返します。後者のクラスはJREの一部であるため、特定のJREバージョンにバグがあるか、OSがより高い解像度を提供しません。これを引き起こすハードウェアプラットフォームの特定のオーディオドライバーでもある可能性があります。

JREとOSを更新する以外にできることはあまりありません。それでも問題が解決しない場合は、バグレポートを提出することしかできません。

編集:バグレポートでは、VMのベンダーを意味します。これは、JLayerの担当者がJREが偽の値を返すことについて何もできないためです。

于 2012-06-11T16:42:07.390 に答える