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



我有一个带有几个音频文件的listView。对于每个人,我都必须获得持续时间才能将其显示在列表中。

这是我尝试的:

MediaPlayer getDuration()->大约需要1秒钟的13个项目

MediaStoreCursor->大约需要2秒钟的13个项目

这对显示ListView.

来说太多了

所以我想到了:

在录制音频文件时,创建带有文件名和持续时间的数据库

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

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

预先感谢

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

MediaMetadataRetriever mediaMetadataRetriever= new MediaMetadataRetriever();
 mediaMetadataRetriever.setDataSource(filePath);
String duration = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));

提取物(int)方法可以在Android API级别上方使用。

持续时间将以毫秒为单位。

MediaMetaDataRetriever是我用来收集音频或视频文件的元数据的,包括视频预览帧,请访问https://developer.android.com/reference.com/reference/android/android/media/mediametadataretrieverever要查看可以从媒体文件中检索哪种类型的元数据。您应该能够使用

deftractmetadata(MediaMetadatareTriever.metadata_key_duration)

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

我遇到了相同的问题(在2020年),在我的情况下,音频文件的数量约为4000-5000个文件(每个5-10分钟)。因此,就我而言,这花费了太长时间。因此,我创建了一个SQLITE数据库,然后过滤后,文件是毫秒的工作。在这里,多线程无济于事,因为它是磁盘任务,而不是计算。我做的和 @n-Joy告诉的一样,但是花了很长时间(几分钟之内)。不过,我想让它快。

我的解决方案 - 录制音频文件后,将音频名称的长度添加并提取文件的长度是从其名称来看的一项非常简单的任务。这样,我的回收器视图速度更快。希望它能帮助某人。

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

最新更新