Java Android媒体播放器的准确性

Java Android媒体播放器的准确性,java,android,android-mediaplayer,Java,Android,Android Mediaplayer,我想制作一款卡拉OK应用程序,要做到这一点,我需要在特定时刻(毫秒计时)进行ui更改 根据设备的不同而不同 MediaPlayer.getCurrentPosition 给我毫秒,但没有精确性(它会一次跳200毫秒,另一次跳400毫秒,以此类推…) 伙计们,我怎样才能得到我想要的准确度?有没有我可以在java中使用的音频播放器或音频播放器 谢谢 理论精度取决于: 1) 您请求getCurrentPosition()的频率。在某些情况下,我使用100毫秒的间隔 2) 您使用哪种媒体格式 3)

我想制作一款卡拉OK应用程序,要做到这一点,我需要在特定时刻(毫秒计时)进行ui更改

根据设备的不同而不同

MediaPlayer.getCurrentPosition 
给我毫秒,但没有精确性(它会一次跳200毫秒,另一次跳400毫秒,以此类推…)

伙计们,我怎样才能得到我想要的准确度?有没有我可以在java中使用的音频播放器或音频播放器


谢谢

理论精度取决于:

1) 您请求
getCurrentPosition()
的频率。在某些情况下,我使用100毫秒的间隔

2) 您使用哪种媒体格式

3) 而最关键的则取决于实施。 与多媒体相关的硬件和软件部分因设备而异,取决于设备制造商、硬件芯片和操作系统版本

我建议你试着更频繁地查询当前职位。可能还有不同的媒体文件

可能的解决办法:


您可以使用媒体播放器的软件实现(例如:可以为Android编译)。消极的一面是CPU使用率、电池消耗和视频解码速度。如果没有硬件加速(仅由标准MediaPlayer API提供),某些设备无法处理(太低的fps)巨大的高质量视频

1)我每毫秒询问getCurrentPosition(使用计时器任务)2)mp3 3)我使用3种不同的设备,每个设备上的结果相同感谢您的解决方案,但我只使用音频播放器,您知道其他音频播放器吗(精度更高?)谢谢您的时间。FFMpeg也可用于音频播放。但它需要编译为本机库。这意味着什么?C++是用C/C++编写的。你也可以看看是否有必要使用mp3?对于PCM音频,您可以使用AudioTrack类。
MediaPlayer.getCurrentPosition