给定一个音频文件的路径(在SD卡上),如何最好地确定音频长度(以毫秒为单位)和文件格式(或互联网媒体类型)?
(对于音频持续时间,可以使用 MediaPlayer
的 getDuration
方法,但这似乎太慢/笨重。)
对于音频文件的长度:
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://dev59.com/iGoy5IYBdhLWcg3wZdCr#8591230
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))
);
只是试着给你一个答案,但你可以通过文件扩展名来确定媒体类型 - 我认为MediaFile也许可以帮到你。至于持续时间,我相信getDuration()方法实际上是一个本地调用,所以我不知道你是否能够更快地完成它。