在安卓中获取mp3持续时间

2022-09-03 03:37:35

如何在不创建MediaPlayer实例的情况下获得mp3曲目持续时间?我只需要在mp3文件列表中显示mp3歌曲长度,所以我认为我不应该为列表中的每个曲目创建MediaPlayer对象

另一个:

有时MediaPlayer会返回错误的歌曲持续时间(我认为是这样,因为这些文件的比特率是双倍的)。如何获得歌曲的正确持续时间?


答案 1
       // 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();

答案 2

您可以使用 MediaMetadataRetriever 来获取歌曲的持续时间。将METADATA_KEY_DURATIONextractMetadata() 函数结合使用。


推荐