gpt4 book ai didi

android - MediaPlayer.getDuration() 返回错误的持续时间

转载 作者:太空狗 更新时间:2023-10-29 13:35:23 54 4
gpt4 key购买 nike

MediaPlayer 的 getDuration() 方法为我提供了一些音频文件的错误值。我认为所有这些文件的共同特征是它们是使用 Audacity 或其他一些音频编辑工具进行处理的。尝试将 MediaPlayer 进度绑定(bind)到进度条时会出现问题。

我继续记录它:

while(mPlayer.isPlaying())
Log.i("progress/total",
mPlayer.getCurrentPosition() +
"/" + mPlayer.getDuration());

并发现了这个:

I/progress/total(643): 14615/14620
I/progress/total(643): 14647/14620

这只是几千行日志中的两行,但重点是在进度超过 getDuration() 认为是歌曲的总持续时间之后,它会继续前进。因为 MediaPlayer 实际上可以给出正确的总持续时间,有没有办法使用它来为我的 ProgressBar 获得适当的最大值?

最佳答案

当 MediaPlayer.getDuration() 为 mp3 文件(HTC Desire C with ICS 4.0.3)返回 542434 毫秒时,我遇到了类似的问题。文件本身大约是 89 秒,差别太大了。我检查了 mp3 文件的内容,看到了一些奇怪的 xml,例如:

<?xpacket begin="п»ї" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.351735, 2008/07/22-18:04:26 ">

将此文件另存为新文件后,xml 被删除并且 getDuration() 返回了正确的值。我知道它不会帮助那些需要播放您无法修改的文件的人,但对于那些可以的人 - 它应该有所帮助。

关于android - MediaPlayer.getDuration() 返回错误的持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145652/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com