确定音频文件的持续时间和格式

时间:2011-01-26 08:04:46

标签: android audio

给定音频文件的路径(在SD卡上),确定音频长度的最佳方法是什么(以毫秒为单位)和文件格式(或Internet媒体类型)?

(持续时间可以使用MediaPlayer的{​​{1}} - 方法,但这似乎太慢/笨拙。)

3 个答案:

答案 0 :(得分:12)

对于音频文件的长度:

File yourFile;
MediaPlayer mp = new MediaPlayer();
FileInputStream fs;
FileDescriptor fd;
fs = new FileInputStream(yourFile);
fd = fs.getFD();
mp.setDataSource(fd);
mp.prepare(); 
int length = mp.getDuration();
mp.release();

检查MimeType: https://stackoverflow.com/a/8591230/3937699

答案 1 :(得分:5)

我认为最简单的方法是:

MediaPlayer mp = MediaPlayer.create(this, Uri.parse(uriOfFile);
int duration = mp.getDuration();
mp.release();
/*convert millis to appropriate time*/
return String.format("%d min, %d sec", 
            TimeUnit.MILLISECONDS.toMinutes(duration),
            TimeUnit.MILLISECONDS.toSeconds(duration) - 
            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration))
        );

答案 2 :(得分:1)

只是为你找一个答案,但你可以通过文件扩展名确定媒体类型 - 我认为MediaFile 可以能够帮助你。至于持续时间,我相信getDuration()方法实际上是一个本机调用,所以我不知道你是否能够更快地完成它。