从assets文件夹中读取mp3元数据

时间:2015-01-25 09:44:39

标签: android mp3 metadata android-assets

我有一个应用程序,其中一些mp3文件存储在assets文件夹的子文件夹中。 我以这种方式获得文件列表

context.getAssets().list("audio");

结果显示在listview中。 通过这样做,我看到的是一个mp3文件名列表。现在我不想要显示文件名,但需要关联每个文件的元数据。

3 个答案:

答案 0 :(得分:3)

将文件复制到磁盘是不必要的。 MediaMetadataRetrieverFFmpegMediaMetadataRetriever都提供setDataSource method,它将FileDescriptor作为参数:

FFmpegMediaMetadataRetriever metaRetriver = new FFmpegMediaMetadataRetriever();\
// or MediaMetadataRetriever metaRetriver = new MediaMetadataRetriever();

String path = "audio";

String [] files  = context.getAssets().list(path);

for (int i = 0; i < files.length; i++) {
    String file = path + "/" + files[i];

    AssetFileDescriptor afd = context.getAssets().openFd(file);

    metaRetriver.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());

    String album = metaRetriver.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM);
    String artist = metaRetriver.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST);
    String gener = metaRetriver.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_GENRE);

    afd.close();
}

metaRetriver.release();

答案 1 :(得分:0)

你走了。 首先获取文件路径,如下所示

How to pass a file path which is in assets folder to File(String path)?

然后获取音频元数据,如下所示

How to extract metadata from mp3?

答案 2 :(得分:0)

按元数据表示名称,标题,时间等数据,如果您需要,则需要使用 MediaMetadataRetriever 类来执行此操作。

MediaMetadataRetriever metaRetriver = new MediaMetadataRetriever();
metaRetriver.setDataSource("path of song");
String album = metaRetriver.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);

String artist = metaRetriver
    .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
String gener=metaRetriver
                .extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE);

同样,您也可以提取其他数据。
希望它会对你有所帮助。