从资产文件夹中读取 mp3 元数据
Read mp3 metadata from assets folder
我有一个应用程序,其中一些 mp3 文件存储在资产文件夹的子文件夹中。
我通过这种方式获取文件列表
context.getAssets().list("audio");
结果显示在列表视图中。
通过这样做,我看到的是一个 mp3 文件名列表。现在我不想显示文件名,而是每个文件的关联元数据。
给你。
首先获取文件路径如图
How to pass a file path which is in assets folder to File(String path)?
然后获取音频的元数据,如此处所示
How to extract metadata from mp3?
元数据意味着名称、标题、时间等数据,如果您需要,则需要使用 MediaMetadataRetriever class 来这样做..
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);
同样你也可以提取其他数据..
希望它能帮助你。
不需要将文件复制到磁盘。 MediaMetadataRetriever and FFmpegMediaMetadataRetriever both offer a 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();
我有一个应用程序,其中一些 mp3 文件存储在资产文件夹的子文件夹中。 我通过这种方式获取文件列表
context.getAssets().list("audio");
结果显示在列表视图中。 通过这样做,我看到的是一个 mp3 文件名列表。现在我不想显示文件名,而是每个文件的关联元数据。
给你。 首先获取文件路径如图
How to pass a file path which is in assets folder to File(String path)?
然后获取音频的元数据,如此处所示
How to extract metadata from mp3?
元数据意味着名称、标题、时间等数据,如果您需要,则需要使用 MediaMetadataRetriever class 来这样做..
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);
同样你也可以提取其他数据..
希望它能帮助你。
不需要将文件复制到磁盘。 MediaMetadataRetriever and FFmpegMediaMetadataRetriever both offer a 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();