Moh*_*d7G 5 audio mp3 android android-mediaplayer seektotime
我有一个mp3文件,我的应用程序必须寻找该mp3文件的某些选定时间,然后从那里开始播放.
我通过此方法将字符串时间转换为int值
private static int convert(String time) {
int quoteInd = time.indexOf(":");
int pointInd = time.indexOf(".");
int min = Integer.valueOf(time.substring(0, quoteInd));
int sec = Integer.valueOf(time.substring(++quoteInd, pointInd));
int mil = Integer.valueOf(time.substring(++pointInd, time.length()));
return (((min * 60) + sec) * 1000) + mil;
}
Run Code Online (Sandbox Code Playgroud)
注意:我的蜇声是这样的5:12.201,意味着5分12秒和201毫秒.
我从MP3 Audio Editor应用程序(它是用于Windows)中获取这些时间,并且我使用KMPlayer应用程序检查主题(它是用于Windows).这些时间对他们两个都是正确的.
但是在我的应用程序中,当我寻找MediaPlayer那个时间时,音频不会从我选择的位置开始. (时间是正确的,但声音是不同的.)
我以为MediaPlayer没有正确地寻求那个时间.所以我getCurrentPosition()在玩之前通过调用检查当前位置,但是返回值并且搜索值相同.
我对它没有任何想法.
编辑:
我的问题不是时间转换.
我正确地转换并寻求到那里,但它发挥了那个时代不期望的东西.
这意味着KMPlayer和Android的时机不同.
我的问题是Way?而如何能为解决呢?
你必须寻求使用seekTo方法。这期望以毫秒为时间偏移。您的偏移量是您想要玩的距离开始的距离,例如,距离开始 1 分钟可以是您的偏移量。
注意:我的琴弦是这样的 5:12.201 (分钟:秒:毫秒)
如果你想寻找这样的时间,5:12.201那么使用seekTo(312201);
解释:
1000毫秒为一秒,因此12000为 12 秒,60000为一分钟。
如果您想要5m:12s时间,请执行以下操作:
MyMins = 1000 * 60 * 5; //# 5 mins at 60 secs per minute
MySecs = 1000 * 12; //# 12 secs
MyMilliSecs = 201; //# 201 millisecs
SeekValue = (MyMins + MySecs + MyMilliSecs);
seekTo(SeekValue); //# seeks to 312201 millisecs (is == 5 min & 12 secs & 201 ms)
Run Code Online (Sandbox Code Playgroud)