在Android中,获取音频文件的信息可以通过 MediaMetadataRetriever 这个类来获取,比如获取文件的时长,通过如下方法来获取:
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
try {
mmr.setDataSource(file.getFile().getAbsolutePath());
String strDuration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long duration = Long.valueOf(strDuration);
}catch (Exception e){
}
但是,通过这种方法获取的duration可能不准确,对于VBR格式的mp3,duration可能远远比真实的长度小。对于这个问题,可以用比特率和文件大小来计算:
long fileSize = file.getFile().length();
long bitRate = Long.parseLong(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
long duration = (fileSize*8) /(bitRate);//单位,秒
通过这种方式得到的duration值是比较准确的
解决通过MediaMetadataRetriever获取音频文件时长不准确的问题
转载https://www.codesocang.com/appboke/36280.html
热门源码