我使用MediaMetadataRetriever从Android设备上的m4a文件中检索元数据。这是我执行的代码。
final MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(new File(root, audioFile).getAbsolutePath());
String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
String album = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
String artist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
mmr.release();
问题在于,当我为mp3文件调用此代码时,速度非常快。例如,在 900ms 时间内分析了25个 mp3文件。
但如果我将其称为单个 m4a-file ,则相同的代码需要执行 6秒 。这很慢。
另一个观察是,当我使用Android MediaPlayer时,任何mp3文件立即开始播放,而在启动m4a文件和第一个声音之间有相同的6秒延迟。
我尝试了不同的Android版本和不同的设备。存在同样的问题。
有没有办法摆脱这种延迟?
答案 0 :(得分:0)
您是否尝试过FFmpegMediaMetadataRetriever:
final FFmpegMediaMetadataRetriever mmr = new FFmpegMediaMetadataRetriever();
mmr.setDataSource(new File(root, audioFile).getAbsolutePath());
String title = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_TITLE);
String album = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ALBUM);
String artist = mmr.extractMetadata(FFmpegMediaMetadataRetriever.METADATA_KEY_ARTIST);
mmr.release();
答案 1 :(得分:0)
您是否尝试过MediaStore?
请使用MediaStore测试所关注的MP4文件的速度。可以找到一个示例over here