如何在不创建 MediaPlayer 实例的情况下获取 mp3 轨道持续时间?我只需要在 mp3 文件列表中显示 mp3 歌曲长度,所以我认为我不应该为列表中的每个轨道创建 MediaPlayer 对象
还有一个:
有时 MediaPlayer 会返回错误的歌曲持续时间(我认为这是因为这些文件的比特率是动态的)。如何获得歌曲的正确时长?
最佳答案
// load data file
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(filePath);
String out = "";
// get mp3 info
// convert duration to minute:seconds
String duration =
metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
Log.v("time", duration);
long dur = Long.parseLong(duration);
String seconds = String.valueOf((dur % 60000) / 1000);
Log.v("seconds", seconds);
String minutes = String.valueOf(dur / 60000);
out = minutes + ":" + seconds;
if (seconds.length() == 1) {
txtTime.setText("0" + minutes + ":0" + seconds);
}else {
txtTime.setText("0" + minutes + ":" + seconds);
}
Log.v("minutes", minutes);
// close object
metaRetriever.release();
关于android - 在android中获取mp3持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042259/