获取音频文件Android的持续时间

时间:2014-01-19 15:29:07

标签: android audio media duration

我有一个包含多个音频文件的ListView。对于每一个,我必须得到持续时间,以便在列表中显示它。

这是我尝试过的:

MediaPlayer getDuration() - > 13件物品大约需要1秒

MediaStoreCursor - > 13项需要大约2秒

这对于显示ListView.

来说太过分了

所以我想到了这个:

在录制音频文件时创建包含文件名和持续时间的数据库

- >这会导致数据不一致,因为文件可能已被删除

有没有其他方法可以实现这一目标?

提前致谢

3 个答案:

答案 0 :(得分:1)

MediaMetaDataRetriever是我用来收集音频或视频文件的元数据(包括视频预览帧)的方法,请查看https://developer.android.com/reference/android/media/MediaMetadataRetriever以查看可以从媒体文件中检索的元数据类型。 您应该可以使用

  

extractMetaData(MediaMetadataRetriever.METADATA_KEY_DURATION)

获取音频/视频文件的持续时间。

答案 1 :(得分:0)

MediaMetadataRetriever可用于获取与媒体文件相关的元数据

MediaMetadataRetriever mediaMetadataRetriever= new MediaMetadataRetriever();
 mediaMetadataRetriever.setDataSource(filePath);

String duration = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));

extractMetadata(int)方法可以在Android API级别10以上使用。

持续时间以毫秒为单位。

答案 2 :(得分:0)

我遇到了同样的问题(在2020年),我的音频文件数量约为4000-5000个文件(每个5-10分钟)。因此,就我而言,这花费了太长时间。因此,我创建了一个SQLite数据库,经过过滤,文件耗时数毫秒。这里多线程无济于事,因为它是磁盘任务,而不是计算任务。我按照@ N-JOY的指示进行了操作,但是花了很长时间(几分钟)。尽管如此,我还是想使其更快。

我的解决方案- 录制音频文件后,在AudioFile名称中添加长度,然后从其名称中提取文件的长度是一项非常容易的任务。这样,我的回收站视图就更快了。希望对别人有帮助。

但是如果您已经创建了很多文件,那么数据库是最佳选择。