给定音频文件的路径(在SD卡上),确定音频长度的最佳方法是什么(以毫秒为单位)和文件格式(或Internet媒体类型)?
(持续时间可以使用MediaPlayer
的{{1}} - 方法,但这似乎太慢/笨拙。)
答案 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()方法实际上是一个本机调用,所以我不知道你是否能够更快地完成它。