【发布时间】:2011-06-15 16:50:38
【问题描述】:
给定音频文件的路径(在 SD 卡上),确定音频长度(以毫秒为单位)和文件格式(或 Internet 媒体类型)的最佳方法是什么?
(在此期间可以使用MediaPlayer 的getDuration-方法,但这似乎太慢/太笨拙了。)
【问题讨论】:
给定音频文件的路径(在 SD 卡上),确定音频长度(以毫秒为单位)和文件格式(或 Internet 媒体类型)的最佳方法是什么?
(在此期间可以使用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://stackoverflow.com/a/8591230/3937699
【讨论】:
我认为最简单的方法是:
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() 方法实际上是一个原生调用,所以我不知道你是否能够更快地完成它。
【讨论】: