当前位置:首页 > 安卓源码 > 技术博客 >

解决通过MediaMetadataRetriever获取音频文件时长不准确的问题

时间:2017-04-25 08:41 来源:互联网 作者:源码搜藏 浏览: 收藏 挑错 推荐 打印

在Android中,获取音频文件的信息可以通过 MediaMetadataRetriever 这个类来获取,比如获取文件的时长,通过如下方法来获取: MediaMetadataRetriever mmr = new MediaMetadataRetriever(); try { mmr.setDataSource(file.getFile().getAbsolutePath()); Str

在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

技术博客阅读排行

最新文章